Your SlideShare is downloading. ×
0
It's an OpenSocial Generation A year’s worth of growth, tips, and tricks Raymond Chan - November 19, 2008
What is RockYou? <ul><li>Mission – “To engage the world through social applications” </li></ul><ul><li>Leading developer  ...
Overview <ul><li>OpenSocial turns one </li></ul><ul><ul><li>Reviewing a year of enormous growth </li></ul></ul><ul><li>Wha...
What’s so interesting about OpenSocial?
What’s so interesting about OpenSocial? Later that year…
Taken from OpenSocial “State of the Union” presentation
Taken from OpenSocial “State of the Union” presentation
A Year of Enormous Growth <ul><li>A resounding success across the OpenSocial ecosystem </li></ul><ul><ul><li>315m+ app ins...
What is OpenSocial? <ul><li>It’s a specification </li></ul><ul><ul><li>Set of standards for sharing social data and buildi...
Exercising the Open Source Model <ul><li>“ The OpenSocial Specification is constantly evolving.  The basic idea behind our...
<ul><li>So what can we build with OpenSocial? </li></ul>
Application Spotlight – Super Pets! <ul><li>Highly-engaging virtual pets – users adopt and customize pets, then accessoriz...
Application Spotlight – Super Pets!  <ul><li>Pet customizations / accessories </li></ul><ul><li>Virtual Currency / Digital...
Application Spotlight – Emote <ul><li>RockYou’s most widely-distributed self expression application </li></ul>
Writing a social “Hello World” app <ul><li>Easy to get started </li></ul><ul><ul><li>Basic apps composed of HTML + javascr...
Example Gadget XML <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?> </li></ul><ul><li><Module> </li></u...
ModulePrefs  <ul><li><ModulePrefs  </li></ul><ul><li>title =&quot; Hello World! &quot;  </li></ul><ul><li>author_email =&q...
Content element per view <ul><li><Content  type =&quot; html &quot;  view =&quot; profile &quot;> </li></ul><ul><li><![CDA...
Making “Hello World!” a bit more social <ul><li><script type=&quot;text/javascript&quot;> </li></ul><ul><li>function reque...
Developer Tips and Lessons Learned <ul><li>OpenSocial == Cross-container development </li></ul><ul><li>Importance of messa...
Cross-Container Development Tips <ul><li>Design flexible layouts to accommodate different view sizes </li></ul><ul><li>Gra...
Cross-Container Development Tips <ul><li>OpenSocial applications have proven to be portable, even to Facebook </li></ul><u...
Scaling social apps <ul><li>Good problem to have, bad problem to deal with… </li></ul>Facebook platform launch
Scaling social apps If you have lots of money, build everything yourself… Otherwise…
Gratuitous screenshot of app stats
Randomized trials for testing application features  Running two profile designs simultaneously; users grouped by their net...
Diagnosing / monitoring complex systems <ul><li>App activity measure </li></ul>
Diagnosing / monitoring complex systems <ul><li>Overlay deployments </li></ul>
When good sites go bad <ul><li>Important to understand your app’s dependencies (yellow line is API call failures) </li></ul>
When good sites go bad <ul><li>Effect on application functionality </li></ul>
fin <ul><li>Questions / comments? </li></ul><ul><li>Contact: Raymond Chan ( [email_address] ) </li></ul>
Upcoming SlideShare
Loading in...5
×

RockYou at Girls in Tech Developer Forum

1,365

Published on

RockYou's Raymond Chan gave an informative presentation about OpenSocial at the Girls in Tech Developer Summit November 19, 2008 in San Francisco. Raymond gave a short history of OpenSocial and a lot of detailed information on coding for OpenSocial.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,365
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "RockYou at Girls in Tech Developer Forum"

  1. 1. It's an OpenSocial Generation A year’s worth of growth, tips, and tricks Raymond Chan - November 19, 2008
  2. 2. What is RockYou? <ul><li>Mission – “To engage the world through social applications” </li></ul><ul><li>Leading developer across all major social networks and platforms </li></ul><ul><ul><li>MySpace, Facebook, hi5, orkut, Friendster, Bebo, Xiaonei… </li></ul></ul><ul><li>Large Social Application Reach (excluding profile widgets) </li></ul><ul><ul><li>Over 90+ million uniques (monthly) </li></ul></ul><ul><li>RockYou! Team </li></ul><ul><ul><li>~80 employees across engineering, product, business development and sales </li></ul></ul>
  3. 3. Overview <ul><li>OpenSocial turns one </li></ul><ul><ul><li>Reviewing a year of enormous growth </li></ul></ul><ul><li>What is OpenSocial? </li></ul><ul><ul><li>Overview of the community process </li></ul></ul><ul><ul><li>Example applications </li></ul></ul><ul><ul><li>Coding a simple “Hello World” app </li></ul></ul><ul><li>Developer tips and lessons learned </li></ul><ul><ul><li>OpenSocial cross-container tips </li></ul></ul><ul><ul><li>Using analytics to scale – a brief overview of RYStatz </li></ul></ul>
  4. 4. What’s so interesting about OpenSocial?
  5. 5. What’s so interesting about OpenSocial? Later that year…
  6. 6. Taken from OpenSocial “State of the Union” presentation
  7. 7. Taken from OpenSocial “State of the Union” presentation
  8. 8. A Year of Enormous Growth <ul><li>A resounding success across the OpenSocial ecosystem </li></ul><ul><ul><li>315m+ app installs </li></ul></ul><ul><ul><li>85m+ daily canvas views </li></ul></ul><ul><li>RockYou’s Success </li></ul><ul><ul><li>Launched a portfolio of applications: self expression, communication / messaging, dating, virtual pets </li></ul></ul><ul><ul><li>Installed over 55m times </li></ul></ul><ul><ul><li>Material to driving RockYou’s global reach of over 90m monthly users </li></ul></ul>
  9. 9. What is OpenSocial? <ul><li>It’s a specification </li></ul><ul><ul><li>Set of standards for sharing social data and building social applications on the web </li></ul></ul><ul><ul><li>Defines a set of social APIs and standards </li></ul></ul><ul><ul><li>Built upon open standards, and utilizes open-source philosophies </li></ul></ul><ul><li>It’s a community </li></ul><ul><ul><li>Containers (social sites), application developers, anybody who is interested </li></ul></ul><ul><ul><li>Open-source implementations (Apache Shindig) </li></ul></ul><ul><ul><li>The OpenSocial Foundation </li></ul></ul>
  10. 10. Exercising the Open Source Model <ul><li>“ The OpenSocial Specification is constantly evolving.  The basic idea behind our process is to treat the spec like an open source software project, following some basic tenets from the Apache Software Foundation: </li></ul><ul><ul><li>Participation is open to anyone </li></ul></ul><ul><ul><li>Decisions are made on the spec list (not behind closed doors) </li></ul></ul><ul><ul><li>All proceedings are captured in a public archive </li></ul></ul><ul><ul><li>Individuals represent themselves, not companies ” </li></ul></ul>From www.opensocial.org
  11. 11. <ul><li>So what can we build with OpenSocial? </li></ul>
  12. 12. Application Spotlight – Super Pets! <ul><li>Highly-engaging virtual pets – users adopt and customize pets, then accessorize them and participate in casual and competitive gaming </li></ul>
  13. 13. Application Spotlight – Super Pets! <ul><li>Pet customizations / accessories </li></ul><ul><li>Virtual Currency / Digital Economy </li></ul><ul><li>Battling / Casual Gaming </li></ul>
  14. 14. Application Spotlight – Emote <ul><li>RockYou’s most widely-distributed self expression application </li></ul>
  15. 15. Writing a social “Hello World” app <ul><li>Easy to get started </li></ul><ul><ul><li>Basic apps composed of HTML + javascript </li></ul></ul><ul><ul><li>Some containers do not even require hosting (just paste in the code) </li></ul></ul><ul><li>Basic concepts </li></ul><ul><ul><li>Application gadget XML </li></ul></ul><ul><ul><li>Views – profile, canvas </li></ul></ul>
  16. 16. Example Gadget XML <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?> </li></ul><ul><li><Module> </li></ul><ul><li><ModulePrefs </li></ul><ul><li>title=&quot;Hello World!&quot; </li></ul><ul><li>author_email=&quot;raymond@rockyou.com&quot;> </li></ul><ul><li><Require feature=&quot;opensocial-0.8&quot; /> </li></ul><ul><li></ModulePrefs> </li></ul><ul><li><Content type=&quot;html&quot; view=&quot;profile&quot;> </li></ul><ul><li><![CDATA[ </li></ul><ul><li>Hello, Profile! </li></ul><ul><li>]]> </li></ul><ul><li></Content> </li></ul><ul><li><Content type=&quot;html&quot; view=&quot;canvas&quot;> </li></ul><ul><li><![CDATA[ </li></ul><ul><li>Hello, Canvas! </li></ul><ul><li>]]> </li></ul><ul><li></Content> </li></ul><ul><li></Module> </li></ul>
  17. 17. ModulePrefs <ul><li><ModulePrefs </li></ul><ul><li>title =&quot; Hello World! &quot; </li></ul><ul><li>author_email =&quot; [email_address] &quot;> </li></ul><ul><li><Require feature =&quot; opensocial-0.8 &quot; /> </li></ul><ul><li></ModulePrefs> </li></ul>
  18. 18. Content element per view <ul><li><Content type =&quot; html &quot; view =&quot; profile &quot;> </li></ul><ul><li><![CDATA[ </li></ul><ul><li><!–- add html and javascript here, as if this were a body section of a web page --> </li></ul><ul><li>]]> </li></ul><ul><li></Content> </li></ul>
  19. 19. Making “Hello World!” a bit more social <ul><li><script type=&quot;text/javascript&quot;> </li></ul><ul><li>function request() { </li></ul><ul><li>var idspec = opensocial.newIdSpec({ &quot;userId&quot; : &quot;OWNER&quot;, &quot;groupId&quot; : &quot;FRIENDS&quot; }); </li></ul><ul><li>var req = opensocial.newDataRequest(); </li></ul><ul><li>req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.OWNER), &quot;get_owner&quot;); </li></ul><ul><li>req.add(req.newFetchPeopleRequest(idspec), &quot;get_friends&quot;); </li></ul><ul><li>req.send(response); </li></ul><ul><li>}; </li></ul><ul><li>function response(dataResponse) { </li></ul><ul><li>var owner = dataResponse.get('get_owner').getData(); </li></ul><ul><li>var friends = dataResponse.get('get_friends').getData(); </li></ul><ul><li>var html = 'Friends of ' + owner.getDisplayName(); </li></ul><ul><li>html += ':<br><ul>'; </li></ul><ul><li>friends.each(function(person) { </li></ul><ul><li> html += '<li>' + person.getDisplayName() + '</li>'; </li></ul><ul><li>}); </li></ul><ul><li>html += '</ul>'; </li></ul><ul><li>document.getElementById('message').innerHTML = html; </li></ul><ul><li>}; </li></ul><ul><li>// Execute the request function when the application is finished loading. </li></ul><ul><li>gadgets.util.registerOnLoadHandler(request); </li></ul><ul><li></script> </li></ul><ul><li><div id=&quot;message&quot;> </div> </li></ul>From OpenSocial Developer’s Guide
  20. 20. Developer Tips and Lessons Learned <ul><li>OpenSocial == Cross-container development </li></ul><ul><li>Importance of messaging in social apps </li></ul><ul><li>Dealing with scale </li></ul><ul><li>Importance of effective analytics for success </li></ul>
  21. 21. Cross-Container Development Tips <ul><li>Design flexible layouts to accommodate different view sizes </li></ul><ul><li>Gracefully handle differences in how containers handle user information </li></ul><ul><ul><li>Default fields, querying by user ids (0.7), page sizes / ordering </li></ul></ul><ul><li>Take time to understand how messaging channels are implemented on different containers </li></ul><ul><ul><li>User experience varies greatly site to site </li></ul></ul><ul><ul><li>Wide range of user preferences across social networks </li></ul></ul>
  22. 22. Cross-Container Development Tips <ul><li>OpenSocial applications have proven to be portable, even to Facebook </li></ul><ul><li>Canvas pages shared between OpenSocial and Facebook </li></ul><ul><ul><li>Use common-sense encapsulation and abstraction </li></ul></ul><ul><li>Facebook iframe application using XFBML/FBJS </li></ul>
  23. 23. Scaling social apps <ul><li>Good problem to have, bad problem to deal with… </li></ul>Facebook platform launch
  24. 24. Scaling social apps If you have lots of money, build everything yourself… Otherwise…
  25. 25. Gratuitous screenshot of app stats
  26. 26. Randomized trials for testing application features Running two profile designs simultaneously; users grouped by their network ids
  27. 27. Diagnosing / monitoring complex systems <ul><li>App activity measure </li></ul>
  28. 28. Diagnosing / monitoring complex systems <ul><li>Overlay deployments </li></ul>
  29. 29. When good sites go bad <ul><li>Important to understand your app’s dependencies (yellow line is API call failures) </li></ul>
  30. 30. When good sites go bad <ul><li>Effect on application functionality </li></ul>
  31. 31. fin <ul><li>Questions / comments? </li></ul><ul><li>Contact: Raymond Chan ( [email_address] ) </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×