SlideShare a Scribd company logo
1 of 75
Download to read offline
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 OpenSocial container

  Summary
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. 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
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 book quot;Information Rulesquot;
 “Standards change competition for a market to competition within a
 market”
     Network Effects
     Lock-In and Switching Costs
     Standards
OpenSocial

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

                  OpenSocial Foundation
                  http://opensocial.org/
                  Keep the specification open




Specifications discussed in public forum
Spec evolves using an open source community process
OpenSocial Containers




             friendster ®
Standards-based

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

  Developers: Distribution >275 Million users

  Containers: Features

  Users: More applications
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 3.0 License
How To Build OpenSocial Applications -
Chris Schalk
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
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
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);
}
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;
}
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())
}
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);
}
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);
}
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;
}
Demonstration - Building OpenSocial
Applications using the JavaScript API
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
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}
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
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
Demonstration - Using the OpenSocial
REST Services
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
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
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
OpenSocial Containers - Kevin Marks
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
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
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
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
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 known, may be owner or other
       member
   Home pages
       Owner is Viewer (must be logged in to see)
Examples
   MySpace
   Hi5
   Orkut
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
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
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
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
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)
Netlog demo
Becoming an Open Social Container -
Chris Schalk
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!
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;
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 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
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

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
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
Q&A

More Related Content

More from Patrick Chanezon

KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...Patrick Chanezon
 
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Dockercon 2019 Developing Apps with Containers, Functions and Cloud ServicesDockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Dockercon 2019 Developing Apps with Containers, Functions and Cloud ServicesPatrick Chanezon
 
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesGIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesPatrick Chanezon
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroPatrick Chanezon
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalPatrick Chanezon
 
The Tao of Docker - ITES 2018
The Tao of Docker - ITES 2018The Tao of Docker - ITES 2018
The Tao of Docker - ITES 2018Patrick Chanezon
 
Microsoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and MicrosoftMicrosoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and MicrosoftPatrick Chanezon
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018Patrick Chanezon
 
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with DockerDocker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with DockerPatrick Chanezon
 
The Tao of Docker - Devfest Nantes 2017
The Tao of Docker - Devfest Nantes 2017The Tao of Docker - Devfest Nantes 2017
The Tao of Docker - Devfest Nantes 2017Patrick Chanezon
 
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...Patrick Chanezon
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Patrick Chanezon
 
Moby Introduction - June 2017
Moby Introduction - June 2017Moby Introduction - June 2017
Moby Introduction - June 2017Patrick Chanezon
 
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logicielsDocker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logicielsPatrick Chanezon
 
Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapPatrick Chanezon
 
Oscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectOscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectPatrick Chanezon
 
Containerd Donation to CNCF Cloud Native Conference Berlin 2017
Containerd Donation to CNCF Cloud Native Conference Berlin 2017Containerd Donation to CNCF Cloud Native Conference Berlin 2017
Containerd Donation to CNCF Cloud Native Conference Berlin 2017Patrick Chanezon
 

More from Patrick Chanezon (20)

KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
 
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Dockercon 2019 Developing Apps with Containers, Functions and Cloud ServicesDockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
 
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesGIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - Intro
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
 
The Tao of Docker - ITES 2018
The Tao of Docker - ITES 2018The Tao of Docker - ITES 2018
The Tao of Docker - ITES 2018
 
Moby KubeCon 2017
Moby KubeCon 2017Moby KubeCon 2017
Moby KubeCon 2017
 
Microsoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and MicrosoftMicrosoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and Microsoft
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
 
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with DockerDocker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
 
DockerCon EU 2017 Recap
DockerCon EU 2017 RecapDockerCon EU 2017 Recap
DockerCon EU 2017 Recap
 
Docker Innovation Culture
Docker Innovation CultureDocker Innovation Culture
Docker Innovation Culture
 
The Tao of Docker - Devfest Nantes 2017
The Tao of Docker - Devfest Nantes 2017The Tao of Docker - Devfest Nantes 2017
The Tao of Docker - Devfest Nantes 2017
 
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017
 
Moby Introduction - June 2017
Moby Introduction - June 2017Moby Introduction - June 2017
Moby Introduction - June 2017
 
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logicielsDocker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
 
Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 Recap
 
Oscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectOscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby project
 
Containerd Donation to CNCF Cloud Native Conference Berlin 2017
Containerd Donation to CNCF Cloud Native Conference Berlin 2017Containerd Donation to CNCF Cloud Native Conference Berlin 2017
Containerd Donation to CNCF Cloud Native Conference Berlin 2017
 

Recently uploaded

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

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

  • 1.
  • 2. OpenSocial: A Standard for the Social Web Patrick Chanezon Kevin Marks Christian Schalk May 28, 2008
  • 3. Agenda OpenSocial Introduction How to build OpenSocial Applications OpenSocial Containers Becoming an OpenSocial container Summary
  • 4. OpenSocial Introduction - Patrick Chanezon
  • 5. Making the web better by making it social What does social mean?
  • 6. What does Social mean? Eliette what do you do with your friends?
  • 7. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 8. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 9. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 10. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 11. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 12. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 13. Raoul: a social object for Charlotte (3 year old)
  • 14.
  • 15. 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
  • 16. How do we socialize objects online without having to create yet another social network?
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. 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
  • 22. OpenSocial A common API for social applications across multiple web sites
  • 23. OpenSocial Foundation OpenSocial Foundation http://opensocial.org/ Keep the specification open Specifications discussed in public forum Spec evolves using an open source community process
  • 24.
  • 25. OpenSocial Containers friendster ®
  • 27. Why should you care about OpenSocial? Developers: Distribution >275 Million users Containers: Features Users: More applications
  • 28. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 29. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 30. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 31. A standard for everyone This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 32. How To Build OpenSocial Applications - Chris Schalk
  • 33. 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
  • 34. 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
  • 35. 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); }
  • 36. 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; }
  • 37. 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()) }
  • 38. 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); }
  • 39. 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); }
  • 40. 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; }
  • 41. Demonstration - Building OpenSocial Applications using the JavaScript API
  • 42. 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
  • 43. 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}
  • 44. 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
  • 45. 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
  • 46. Demonstration - Using the OpenSocial REST Services
  • 47. 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
  • 48. 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
  • 49. 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
  • 51. 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
  • 52. 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
  • 53. 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
  • 54. 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
  • 55. The Viewer and Viewer friends
  • 56. Owner and Owner friends
  • 57. Owner and Viewer are defined by Container The Application gets IDs and connections to other IDs
  • 58. the Owner need not be a Person It could be an organisation or a social object
  • 59. 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
  • 60. 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
  • 61. 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
  • 62. 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
  • 63. 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
  • 64. 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)
  • 66. Becoming an Open Social Container - Chris Schalk
  • 67. 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!
  • 68. 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;
  • 69. Apache Shindig Info... Apache Shindig Website http://incubator.apache.org/shindig
  • 70. Demonstration - Implementing your own container using Shindig
  • 71. 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
  • 72. SocialSite Architecture Details at https://socialsite.dev.java.net/
  • 73. 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
  • 74. 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
  • 75. Q&A