OpenSocial: A Standard for the Social Web

Patrick Chanezon
Kevin Marks
Christian Schalk


May 28, 2008
Agenda

  OpenSocial Introduction

  How to build OpenSocial Applications

  OpenSocial Containers

  Becoming an OpenSoci...
OpenSocial Introduction - Patrick
Chanezon
Making the web better
 by making it social

What does social mean?
What does Social mean?




      Eliette what do you do with your friends?
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
Raoul: a social object for Charlotte (3 year old)
Jaiku’s Jyri Engeström's 5 rules for social
 networks: social objects
1. What is your object?
2. What are your verbs?
3. H...
How do we socialize objects
           online
without having to create yet
  another social network?
Standards create markets: Hal Varian




 OpenSocial is a straightforward application of chapters 8 and 9 of his
 1998 boo...
OpenSocial

A common API for social applications
     across multiple web sites
OpenSocial Foundation

                  OpenSocial Foundation
                  http://opensocial.org/
                  ...
OpenSocial Containers




             friendster ®
Standards-based

html+javascript+REST+oauth
Why should you care about OpenSocial?

  Developers: Distribution >275 Million users

  Containers: Features

  Users: Mor...
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
A standard for everyone




   This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike ...
How To Build OpenSocial Applications -
Chris Schalk
OpenSocial Client API

 JavaScript - version 0.7 production
    Standard Web development technologies
       HTML + Javasc...
OpenSocial JavaScript API
 The core OpenSocial Services include

 People & Friends
   Access friends information programma...
People & Friends Example
 Requesting friend Info
function getFriendData() {
  var req = opensocial.newDataRequest();
  req...
People & Friends Example
 Callback function for returned friend data

function onLoadFriends(resp) {
 var viewer = resp.ge...
Activities Example
Posting an activity

function postActivity(text) {
   var params = {};
   params[opensocial.Activity.Fi...
Persistence Example
Persisting data

function populateMyAppData() {
  var req = opensocial.newDataRequest();
  var data1 =...
Persistence Example
Fetching persisted data

function requestMyData() {
  var req = opensocial.newDataRequest();
  var fie...
Persistence Example
Displaying fetched (persisted) data

function handleReturnedData(data) {
   var mydata = data.get(quot...
Demonstration - Building OpenSocial
Applications using the JavaScript API
Server-side REST Services
Accessing People information

/people/{guid}/@all
  -- Collection of all people connected to use...
Server-side REST Services
 Accessing Activities information
/activities/{guid}/@self
  -- Collection of activities generat...
Server-side REST Services
Accessing Persistent data
/appdata/{guid}/@self/{appid}
  -- All data for user {guid}, app {appi...
Server-side REST Services
Additional query parameters
format={format}
  -- Format desired; one of (atom, json); default is...
Demonstration - Using the OpenSocial
REST Services
OpenSocial ServerSide Integration Options
 In addition to using the provided persistence API...

  Establish a quot;homequ...
Google AppEngine and OpenSocial
 Create an App Engine app as your backend!
    Use makeRequest() to call back to your AppE...
Resources For Application Developers
Specification
http://opensocial.org/
http://groups.google.com/group/opensocial-and-ga...
OpenSocial Containers - Kevin Marks
Containers provide a social context

  OpenSocial separates application logic from social context
  an app sees user ids -...
Containers don’t choose users

  Containers set up the social model, users choose to join
  they grow through homophily an...
OpenSocial gets you to all their users

  You don't have to pick a site to specialise for
  You get to spread through mult...
Not just Social Network Sites

   Social network sites - Profiles and home pages
   Personal dashboards
   Sites based aro...
The Viewer and Viewer friends
Owner and Owner friends
Owner and Viewer
        are defined by Container
The Application gets IDs and connections to other IDs
the Owner need not be a Person
       It could be an organisation
             or a social object
Kinds of container - Social network
sites
   Profile pages
       Owner is profile page owner
       Viewer may not be kno...
Kinds of container - Personal
dashboard
   like Home pages
       Owner is Viewer (must be logged in to see)
   Friends ma...
Kinds of container - Social Object site

   Pages reflect the object - movie, picture, product
       Owner is the object
...
Kinds of container - CRM systems

   Pages reflect the customer
      Owner is the customer
      Owner friends are people...
Kinds of container - Any web site

   Owner is the site

      Owner friends are site users
   Viewer is you,
      Viewer...
Container Sites control policy

  Check the Environment
  Getting information
     Viewer information may not be available...
Netlog demo
Becoming an Open Social Container -
Chris Schalk
Becoming an OpenSocial Container


 Question:
   How do you become an OpenSocial container?

 Answer:
    Utilize existing...
Apache Shindig

   What is Shindig?
       Open source software that allows you to host
       OpenSocial applications
   ...
Apache Shindig Info...
Apache Shindig Website

            http://incubator.apache.org/shindig
Demonstration - Implementing your own
container using Shindig
SocialSite
  SocialSite is an Open Source project that allows you to turn
  your web application in an OpenSocial containe...
SocialSite Architecture




      Details at https://socialsite.dev.java.net/
Summary
OpenSocial is making the web more social
The current version 0.7 is in production

REST API and 0.8 coming soon

D...
OpenSocial Sessions at Google I/O
12 sessions
   Building an OpenSocial Application, Focus on Client Side APIs
   Apache S...
Q&A
Google IO 2008 - Opensocial, a Standard for the Social Web
Google IO 2008 - Opensocial, a Standard for the Social Web
Google IO 2008 - Opensocial, a Standard for the Social Web
Google IO 2008 - Opensocial, a Standard for the Social Web
Google IO 2008 - Opensocial, a Standard for the Social Web
Google IO 2008 - Opensocial, a Standard for the Social Web
Google IO 2008 - Opensocial, a Standard for the Social Web
Upcoming SlideShare
Loading in...5
×

Google IO 2008 - Opensocial, a Standard for the Social Web

26,844

Published on

OpenSocial is an open specification defining a common API that works on many different social websites, including MySpace, Plaxo, Hi5, Ning, orkut, Salesforce.com and LinkedIn, among others. This allows developers to learn one API, then write a social application for any of those sites: Learn once, write anywhere.
In addition, in order to make it easier for developers of social sites to implement the API and make their site an OpenSocial container, the Apache project Shindig provides reference implementations for OpenSocial containers in two languages (Java, PHP). Shindig will define a language specific Service Provider Interface (SPI) that a social site can implement to connect Shindig to People, Persistence and Activities backend services for the social site. Shindig will then expose these services as OpenSocial JavaScript and REST APIs.
In this session we will explain what OpenSocial is, show examples of OpenSocial containers and applications, demonstrate how to create an OpenSocial application, and explain how to leverage Apache Shindig in order to implement an OpenSocial container.

Published in: Technology
3 Comments
56 Likes
Statistics
Notes
  • = ENTREPRENEURS WANTED =

    We Are an International Community of Entrepreneurs Looking for New Leaders to Increase the Synergy of our Qualified Team. Come Join Us, Let’s Do this Together!!

    Overview: http://bit.ly/b1Eehh
    Testimonials: http://bit.ly/l3WEXJ
    Website: www.MyEntrepreneurCommunity.com
    <br /><object type="application/x-shockwave-flash" data="http://www.youtube.com/v/zabgFl4ta5Y?fs=1&amp;hl=en_US&amp;rel=0" width="350" height="288"><param name="movie" value="http://www.youtube.com/v/zabgFl4ta5Y?fs=1&amp;hl=en_US&amp;rel=0"></param><embed src="http://www.youtube.com/v/zabgFl4ta5Y?fs=1&amp;hl=en_US&amp;rel=0" width="350" height="288" type="application/x-shockwave-flash"></embed></object>
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • nice
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Any chance this could be converted into a slidecast by adding audio and synching it... that would add the context as well
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
26,844
On Slideshare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
1,055
Comments
3
Likes
56
Embeds 0
No embeds

No notes for slide

Google IO 2008 - Opensocial, a Standard for the Social Web

  1. 1. OpenSocial: A Standard for the Social Web Patrick Chanezon Kevin Marks Christian Schalk May 28, 2008
  2. 2. Agenda OpenSocial Introduction How to build OpenSocial Applications OpenSocial Containers Becoming an OpenSocial container Summary
  3. 3. OpenSocial Introduction - Patrick Chanezon
  4. 4. Making the web better by making it social What does social mean?
  5. 5. What does Social mean? Eliette what do you do with your friends?
  6. 6. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  7. 7. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  8. 8. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  9. 9. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  10. 10. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  11. 11. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  12. 12. Raoul: a social object for Charlotte (3 year old)
  13. 13. Jaiku’s Jyri Engeström's 5 rules for social networks: social objects 1. What is your object? 2. What are your verbs? 3. How can people share the objects? 4. What is the gift in the invitation? 5. Are you charging the publishers or the spectators? http://tinyurl.com/yus8gw
  14. 14. How do we socialize objects online without having to create yet another social network?
  15. 15. Standards create markets: Hal Varian OpenSocial is a straightforward application of chapters 8 and 9 of his 1998 book quot;Information Rulesquot; “Standards change competition for a market to competition within a market” Network Effects Lock-In and Switching Costs Standards
  16. 16. OpenSocial A common API for social applications across multiple web sites
  17. 17. OpenSocial Foundation OpenSocial Foundation http://opensocial.org/ Keep the specification open Specifications discussed in public forum Spec evolves using an open source community process
  18. 18. OpenSocial Containers friendster ®
  19. 19. Standards-based html+javascript+REST+oauth
  20. 20. Why should you care about OpenSocial? Developers: Distribution >275 Million users Containers: Features Users: More applications
  21. 21. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  22. 22. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  23. 23. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  24. 24. A standard for everyone This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  25. 25. How To Build OpenSocial Applications - Chris Schalk
  26. 26. OpenSocial Client API JavaScript - version 0.7 production Standard Web development technologies HTML + Javascript Can integrate with 3rd party server REST Services Based on Atom publishing protocol AtomPub and JSON
  27. 27. OpenSocial JavaScript API The core OpenSocial Services include People & Friends Access friends information programmatically Activities See what you’re friends are up to Share what you are doing Persistence Provide state without a server Share data with your friends
  28. 28. People & Friends Example Requesting friend Info function getFriendData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest(VIEWER), 'viewer'); req.add(req.newFetchPeopleRequest(VIEWER_FRIENDS), 'viewerFriends'); req.send(onLoadFriends); }
  29. 29. People & Friends Example Callback function for returned friend data function onLoadFriends(resp) { var viewer = resp.get('viewer').getData(); var viewerFriends = resp.get('viewerFriends').getData(); var html = 'Friends of ' + viewer.getDisplayName() + ‘:<br><ul>’; viewerFriends.each(function(person) { html += '<li>' + person.getDisplayName()+'</li>';}); html += '</ul>'; document.getElementById('friends').innerHTML = html; }
  30. 30. Activities Example Posting an activity function postActivity(text) { var params = {}; params[opensocial.Activity.Field.TITLE] = text; var activity = opensocial.newActivity(params); opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, callback); } postActivity(quot;This is a sample activity, created at quot; + new Date().toString()) }
  31. 31. Persistence Example Persisting data function populateMyAppData() { var req = opensocial.newDataRequest(); var data1 = Math.random() * 5; var data2 = Math.random() * 100; req.add(req.newUpdatePersonAppDataRequest(quot;VIEWERquot;, quot;AppField1quot;, data1)); req.add(req.newUpdatePersonAppDataRequest(quot;VIEWERquot;, quot;AppField2quot;, data2)); req.send(requestMyData); }
  32. 32. Persistence Example Fetching persisted data function requestMyData() { var req = opensocial.newDataRequest(); var fields = [quot;AppField1quot;, quot;AppField2quot;]; req.add(req.newFetchPersonRequest( opensocial.DataRequest.PersonId.VIEWER), quot;viewerquot;); req.add(req.newFetchPersonAppDataRequest(quot;VIEWERquot;, fields), quot;viewer_dataquot;); req.send(handleReturnedData); }
  33. 33. Persistence Example Displaying fetched (persisted) data function handleReturnedData(data) { var mydata = data.get(quot;viewer_dataquot;); var viewer = data.get(quot;viewerquot;); me = viewer.getData(); // me is global var var data = mydata[me.getId()]; htmlout += quot;AppField1: quot; + data[quot;AppField1quot;] + quot;<br/>quot;; htmlout += quot;AppField2: quot; + data[quot;AppField2quot;] + quot;<br/>quot;; var div = document.getElementById('content_div'); div.innerHTML = htmlout; }
  34. 34. Demonstration - Building OpenSocial Applications using the JavaScript API
  35. 35. Server-side REST Services Accessing People information /people/{guid}/@all -- Collection of all people connected to user {guid} /people/{guid}/@friends -- Collection of all friends of user {guid} -- subset of @all /people/{guid}/@self -- Profile record for user {guid} /people/@me/@self -- Profile record for requestor
  36. 36. Server-side REST Services Accessing Activities information /activities/{guid}/@self -- Collection of activities generated by given user /activities/{guid}/@friends -- Collection of activities for friends of the given user {guid}
  37. 37. Server-side REST Services Accessing Persistent data /appdata/{guid}/@self/{appid} -- All data for user {guid}, app {appid} /appdata/{guid}/@friends/{appid} -- All data for friends of user {guid} and app {appid}; read-only
  38. 38. Server-side REST Services Additional query parameters format={format} -- Format desired; one of (atom, json); default is json fields={field+} -- List of fields to include in request startPage={startPage} -- Index into a paged collection count={count} -- Set page size for paged collection
  39. 39. Demonstration - Using the OpenSocial REST Services
  40. 40. OpenSocial ServerSide Integration Options In addition to using the provided persistence API... Establish a quot;homequot; site where gadget can phone home to retrieve, post data Can host home site on your own, or use services: Amazon EC2 Joyent Google AppEngine
  41. 41. Google AppEngine and OpenSocial Create an App Engine app as your backend! Use makeRequest() to call back to your AppEngine server Utilize AppEngine's datastore New OpenSocial Apps are coming online BuddyPoke... Checkout Lane Liabraaten’s OpenSocial-AppEngine integration article http://code.google.com/apis/opensocial/articles/appengine.html Google IO Code Lab about OpenSocial Apps in the Cloud
  42. 42. Resources For Application Developers Specification http://opensocial.org/ http://groups.google.com/group/opensocial-and-gadgets-spec Code Samples and Tools http://code.google.com/opensocial http://code.google.com/p/opensocial-resources/ Sandboxes http://developer.myspace.com/ http://www.hi5networks.com/developer/ http://opensocial.ning.com/ http://code.google.com/apis/orkut/ http://code.google.com/apis/igoogle/ http://en.netlog.com/go/developer/opensocial
  43. 43. OpenSocial Containers - Kevin Marks
  44. 44. Containers provide a social context OpenSocial separates application logic from social context an app sees user ids - the container makes them people Users understand the social contract of the containers Save apps and users from re-registration hell
  45. 45. Containers don’t choose users Containers set up the social model, users choose to join they grow through homophily and affinity Network effect can bring unexpected userbases
  46. 46. OpenSocial gets you to all their users You don't have to pick a site to specialise for You get to spread through multiple friend groups You'll be surprised by where your users are so make sure you plan to localize
  47. 47. Not just Social Network Sites Social network sites - Profiles and home pages Personal dashboards Sites based around a Social Object Corporate CRM systems Any web site How do we abstract these out? Viewer + friends Owner + friends
  48. 48. The Viewer and Viewer friends
  49. 49. Owner and Owner friends
  50. 50. Owner and Viewer are defined by Container The Application gets IDs and connections to other IDs
  51. 51. the Owner need not be a Person It could be an organisation or a social object
  52. 52. Kinds of container - Social network sites Profile pages Owner is profile page owner Viewer may not be known, may be owner or other member Home pages Owner is Viewer (must be logged in to see) Examples MySpace Hi5 Orkut
  53. 53. Kinds of container - Personal dashboard like Home pages Owner is Viewer (must be logged in to see) Friends may not be defined Example: iGoogle, My Yahoo
  54. 54. Kinds of container - Social Object site Pages reflect the object - movie, picture, product Owner is the object Owner friends are people connected to the object may be authors or fans Viewer is looking at it, Viewer friends are people you may want to share with Example: Imeem is a bit like this - opportunity for sites like Flickr, YouTube
  55. 55. Kinds of container - CRM systems Pages reflect the customer Owner is the customer Owner friends are people connected to the customer may be your colleagues, or other customers Viewer is you, Viewer friends are your colleagues or customers Example: Oracle CRM, Salesforce
  56. 56. Kinds of container - Any web site Owner is the site Owner friends are site users Viewer is you, Viewer friends are your friends who have visited this site Example: Google Friend Connect will enable this for any site
  57. 57. Container Sites control policy Check the Environment Getting information Viewer information may not be available or it may be hidden from you Call requestPermission API that can prompt the users Spreading your application Activities display under container control RequestSendMessage RequestShareApp Monetization and Installation Meet the Containers (next session) Best Practices for Spreading your App (tomorrow)
  58. 58. Netlog demo
  59. 59. Becoming an Open Social Container - Chris Schalk
  60. 60. Becoming an OpenSocial Container Question: How do you become an OpenSocial container? Answer: Utilize existing Open Source container code. The Apache incubator project “Shindig” serves this purpose!
  61. 61. Apache Shindig What is Shindig? Open source software that allows you to host OpenSocial applications Is currently an Apache Software Incubator project Heavy partner involvement (Ning, hi5 …) Serves as open source reference implementation of OpenSocial & gadgets technologies It’s Goal: “Shindig's goal is to allow new sites to start hosting social apps in well under an hour's worth of workquot;
  62. 62. Apache Shindig Info... Apache Shindig Website http://incubator.apache.org/shindig
  63. 63. Demonstration - Implementing your own container using Shindig
  64. 64. SocialSite SocialSite is an Open Source project that allows you to turn your web application in an OpenSocial container Leverages Apache Shindig Built by Sun (Dave quot;Rollerquot; Johnson), announced at JavaOne this month Adds a database and widgets to manage your social network
  65. 65. SocialSite Architecture Details at https://socialsite.dev.java.net/
  66. 66. Summary OpenSocial is making the web more social The current version 0.7 is in production REST API and 0.8 coming soon Developers can start creating social applications today Orkut, Myspace, hi5, Netlog open to 200 M users now iGoogle, IDTail, Hyves, Imeem sandboxes Social sites: implement OpenSocial get Shindig and start planning SocialSite Friend Connect Advertisers: create brand advertising Apps now
  67. 67. OpenSocial Sessions at Google I/O 12 sessions Building an OpenSocial Application, Focus on Client Side APIs Apache Shindig: Make Your Social Site an OpenSocial Container OpenSocial - Scaling and Analytics, Nuts & Bolts URLs Are People Too - Using the Social Graph API to Build a Social Web Fireside Chat: OpenSocial OpenSocial at MySpace: Creating popular apps on MySpace OpenSocial across Containers OpenSocial Specification: What's Next for OpenSocial Monetizing Application Traffic On Social Network OpenSocial, OpenID, and OAuth: Oh, My! Best Practices for Spreading Your App without Ruining the User Experience Building on the Promise of OpenSocial 2 code labs Make Your Social Site an OpenSocial Container Using Shindig Building an OpenSocial Application in the Cloud
  68. 68. Q&A
  1. A particular slide catching your eye?

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

×