SlideShare a Scribd company logo
1 of 106
Download to read offline
OpenSocial
       a standard for the social web




Patrick Chanezon             9 september 2008
chanezon@google.com
Agenda

  OpenSocial introduction
  How to build OpenSocial applications
  Hosting social applications
  Social applications monetization
  OpenSocial containers
  Becoming an OpenSocial container
  Google Friend Connect
  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?
OpenSocial

A common API for social applications
     across multiple web sites
The Trouble with Developing Social Apps




                                 Which site do I build my app for?
Let’s work on that…




                      Using OpenSocial, I can build apps for
                      all of these sites!
What’s offered by OpenSocial?


  Activities
     What are people up to on the web


  People/Profile Info
     Who do I know, etc.


  Persistent datastore
     Handles key/value pairs
Today: 375 Million User Reach
Where is OpenSocial live today?


Live to Users:              Live Developer Sandboxes:
    MySpace                     iGoogle
    orkut                       imeem
    Hi5                         CityIN
    Freebar                     Tianya
    Friendster                  Ning
    Webon from Lycos            Plaxo Pulse
    IDtail                      Mail.ru
    YiQi
    Netlog - New!
    Hyves - New!

Individual Developer Links:
http://code.google.com/apis/opensocial/gettingstared.html
OpenSocial “Containers”
What’s in OpenSocial?


  JavaScript API - Now

  REST Protocol - New

  Templates - Prototype in Shindig
OpenSocial’s JavaScript API


  OpenSocial JS API
  Gadget JS API
  Gadget XML schema

  OpenSocial v0.7 is live
  OpenSocial v0.8 is being deployed now

  Specs and release notes: http://opensocial.org
OpenSocial’s REST Protocol


  Access social data without JavaScript
  Works on 3rd party websites / phones / etc
  Uses OAuth to allow secure access
  Open source client libraries in development
     Java, PHP, Python, <your fav language here>


  Being deployed with OpenSocial v0.8

  Spec’s available at http://opensocial.org
OpenSocial Templates


  Writing JavaScript is hard
  Writing templates is easy
  Templates also give
     Consistent UI across containers
     Easy way to localize
     More interesting content options when inlining
     into container (activities, profile views)
     Ability to serve millions of dynamic pages per
     day without a server
Design principles

Create a template language that is:

   Simple
      Easy markup for creating UI and binding data

   Fast
      Supports server-side optimizations

   Extensible
      Standard reusable controls (buttons, lists, links, etc.)

   Everywhere
      Only need to include a single JavaScript file
Concepts:

 Markup
   A set of standard tags and behaviors that provide
   developers with a simple, declarative language for
   assembling apps.

 Templating
   A set of standard elements implemented by containers.
   A method for taking structured data and rendering UI
   elements in an arbitrary markup.

 Data Pipelining
    A method for grabbing OpenSocial and third-party data
    declaratively (or in script) and joining it to templates.
Example: os:Image

<os:Image key=quot;http://...quot;/>
Example: osTabs, os:ShowPerson

<os:Tabs name=quot;tabGroupquot;>
 <tab>
   <title>Tab 1</title>
   <body>This is the first tab.</body>
 </tab>
 ...

 <tab>
  <title>Tab 3</title>
  <body>
    <os:ShowPerson person=quot;${Viewer}quot;/>
    <div repeat=quot;ViewerFriendsquot;>
     <os:ShowPerson person=quot;${$this}quot;/>
    </div>
  </body>
 </tab>
</os:Tabs>
Example: Friends list (no templates)
Example: Friends list (with templates)
Template Status

 High-level specification complete:
    http://wiki.opensocial-templates.org

 Prototype implementation available:
    http://ostemplates-demo.appspot.com

 GET INVOLVED! Tag feedback/suggestions appreciated:
   http://tech.groups.yahoo.com/group/os-templates/

 Code for templates is in Shindig: patches welcome:-)
OpenSocial is what you make it.


  OpenSocial is an open source project.
  The spec is controlled by the community.
  Anyone can contribute and have a voice.
  http://groups.google.com/group/opensocial/
     “OpenSocial and Gadgets spec” subgroup


  OpenSocial Foundation
     Get involved to nominate and elect board reps
     http://www.opensocial.org/opensocial-
     foundation/
A note on compliance


  OpenSocial is designed for many sites

  Building an app:
     Technology
     Policy


  OpenSocial Compliance Tests
     http://code.google.com/p/opensocial-
     resources/wiki/ComplianceTests
OpenSocial Compliance test in orkut
OpenSocial Compliance Matrix
     http://opensocial-compliance.appspot.com
Other comments


  Portable Contacts Alignment

  Caja for JavaScript security
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
Owner and Viewer Relationship

                    Applications
              has                  views


    Owner                                  Viewer

    has                                       has

    Friends                                Friends
Understanding the Gadget XML
                                                                       ModulePrefs define
                <?xml version=quot;1.0quot; encoding=quot;UTF-8quot; ?> characteristics of the
                                                                gadget, such as title,
                <Module>                                             author, etc.
                     <ModulePrefs title=quot;Hello World!quot;>
  Module node
defines the gadget.    <Require feature=quot;opensocial-0.7quot; />
                     </ModulePrefs>                  Require nodes should
                                                       be added for all
                     <Content type=quot;htmlquot;>             desired features
                       <![CDATA[
                             <script>
                           function init(){
                              alert(quot;hello worldquot;);
 Define your gadget
 html within Content     }
         node            gadgets.util.registerOnLoadHandler(init);
                </script>
                       ]]>
                     </Content>
                </Module>
Retrieve Friend Information
function getFriendData() {
  var req = opensocial.newDataRequest();
  req.add(req.newFetchPersonRequest(VIEWER), 'viewer');
  req.add(req.newFetchPeopleRequest(VIEWER_FRIENDS),
'viewerFriends');               Place an         Create a new data
  req.send(onLoadFriends); asynchronous call to  request object and
                              the container.    add the desired sub-
}                                                     requests.

function onLoadFriends(response) {
  var viewer = response.get('viewer').getData();
 var viewerFriends = response.get('viewerFriends').getData();
 ///More code
}                                       Handle the returned
                                             data in callback
Persisting Data
function populateMyAppData() {
                                                     Use a
var req = opensocial.newDataRequest();       newUpdatePersonAppDa
var data1 = Math.random() * 5;                taRequest() to update
                                                     data.
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);
}
Fetching persisted data
function requestMyData() {                                   Use a
var req = opensocial.newDataRequest();                newFetchPersonAppD
var fields = [quot;AppField1quot;, quot;AppField2quot;];               ataRequest() to fetch
                                                              data.

req.add(req.newFetchPersonRequest(
opensocial.DataRequest.PersonId.VIEWER),quot;viewerquot;);
req.add(req.newFetchPersonAppDataRequest(quot;VIEWERquot;,
fields), quot;viewer_dataquot;);
req.send(handleReturnedData);
                                              AppData is returned as a
}                                             2-level Map, with person
                                                       id as the first key and
                                                       propertyname as the
function handleReturnedData(data) {                            next key
var mydata = data.get(quot;viewer_dataquot;);
var viewer = data.get(quot;viewerquot;);
me = viewer.getData();
var appField1 = mydata[me.getId()][quot;AppField1quot;];
  ///More code
}
Posting an Activity
function postActivity(text) {
                                           requestCreateActivity is
var params = {};                              a request, a specific
params[opensocial.Activity.Field.TITLE] = text; may choose to
                                            container
var activity = opensocial.newActivity(params); ignore it.
opensocial.requestCreateActivity(activity,
opensocial.CreateActivityPriority.HIGH,
callback);
}
postActivity(quot;This is a sample activity,
created at quot; + new Date().toString())
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
Hosting social apps
Patrick Chanezon
Hosting OpenSocial apps
 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

 Zembly: is the world's first cloud-based
 development environment for social apps. Full
 OpenSocial support
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
Social Apps monetization
Patrick Chanezon
OpenSocial Monetization
  Ads from Ad Networks
     AdSense, RightMedia
     BuddyPoke, Rate My Friend
  Brand/Private Label App
     Sony Ericsson MTV Roadies app on orkut
  Sell virtual or real goods
  Free -> Freemium
  Referrals
  Virtual currency
Success Story: Buddy Poke




   #1 OpenSocial app on orkut
   8M installs for orkut, hi5, MySpace
   $1-2 CPM
   #1 App for App Engine w/ millions daily PV
Success Story: PhotoBuzz




 6M+ installs on hi5 and orkut
 CPM $1-3, especially good on orkut
 4M buzzes per day
 Small team of 4 people, profitable
Container specifics
Container Specific Extensions
MySpace
  photo albums
  videos

hi5
      status
      presence
      photo albums

Netlog
   credits api extension
   translation tool for free

Imeem
   music metadata api
Your Profile
Seemless translation
Localisation is important!

   Translations are automatically injected


   Translation tool for Netlog translators
Monetization
What’s in it for you?



   Branding, co-branding, sponsorships


   100% revenue from vertical rectangle or
   skyscraper on your application page


   Credit economy with Netlog OpenSocial
   extension
Credit Economy

Virtual Currency
Use Cases
  charge credits for app installation
  charge credits for certain features
  charge credits for buying items
  charge credits for...
Questions?

  Developer pages:
     http://es.netlog.com/go/developer/
  OpenSocial sandbox:
     http://es.netlog.com/go/developer/opensocial/sandbox=1
Viadeo
Ariel Messias
Social Network
Business Tool
Career Management




                    © viadeo – septembre 2008
Benefits Viadeo can offer to developers



  8 languages (European + China)

  Professional oriented

  Distribution of Members among all the Industries

  Mainly “A Level” profiles

  Members with High Revenues => Strong capabilities of
  monetization
Vertical Apps ?

                  Members split by industry
“A Level” priority targets ?


            High qualification of Viadeo’s members
Apps for Professional Social Network…


Helping to :

   Find Customers / Partners / Suppliers

   Organize Meetings/Events

   Share information and expertise

But also ...

   Get headhunted…

   …and recruit

   Etc…
Sandbox Presentation – Create a Dev. Account
Becoming an OpenSocial Container
Becoming an OpenSocial Container


 Question:
   How do you become an OpenSocial container?

 Answer:
    The Apache incubator project “Shindig” serves this
    purpose!
What is Shindig ?

   Open source reference implementation of OpenSocial &
   Gadgets specification
   An Apache Software Incubator project
   Available in Java & PHP
   http://incubator.apache.org/shindig


 It’s Goal:
 “Shindig's goal is to allow new sites to start hosting social apps
in under an hour's worth of workquot;
Introduction to Shindig Architecture
  Gadget Server
  Social Data Server
  Gadget Container JavaScript
Gadget Server
Social Server
Social Server - RESTful API
 Preview available on
     iGoogle
     Orkut
     Hi5
 New development models
     Server to server & Mobile!
 Try it out:
 curl http://localhost:8080/social/rest/people/john.doe/@all
Shindig Server Side (Java) Architecture
Shindig Client Side Libraries
Opensocial – JS Library
Implementing Shindig - Data sources
   Integrate with your own data sources
       People Service
       Activities Service
       App Data Service

class MyPeopleService implements PeopleService {
...
}

class MyAppDataService implements AppDataService {
...
}

class MyActivitiesService implements ActivitiesService {
...
}
Implementing Shindig - PHP
   Implement functions

function getActivities($ids)
{
  $activities = array();
  $res = mysqli_query($this->db, ”SELECT…quot;);
  while ($row = @mysqli_fetch_array($res, MYSQLI_ASSOC)) {
     $activity = new Activity($row['activityId'],
              $row['personId']);
     $activity->setStreamTitle($row['activityStream']);
     $activity->setTitle($row['activityTitle']);
     $activity->setBody($row['activityBody']);
     $activity->setPostedTime($row['created']);
     $activities[] = $activity;
     }
  return $activities;
}
Implementing Shindig - Java
Code at http://chrisschalk.com/shindig_docs/io/shindig-io.html
import org.apache.shindig.social.opensocial.ActivitiesService;

public class SQLActivitiesService implements ActivitiesService {

  private SQLDataLayer sqlLayer;

  @Inject
  public SQLActivitiesService(SQLDataLayer sqlLayer) {
    this.sqlLayer = sqlLayer;
  }
Implementing Shindig - Java
public ResponseItem<List<Activity>> getActivities(List<String> ids,
  SecurityToken token) {

    Map<String, List<Activity>> allActivities = sqlLayer.getActivities();

    List<Activity> activities = new ArrayList<Activity>();

    for (String id : ids) {
      List<Activity> personActivities = allActivities.get(id);
      if (personActivities != null) {
        activities.addAll(personActivities);
      }
    }
    return new ResponseItem<List<Activity>>(activities);
}
Implementing - Make it a platform
 Add UI Elements
    App Gallery
    App Canvas
    App Invites
    Notification Browser
 Developer Resources
    Developer Console
    Application Gallery
 Scale it Out!
Implementing - Scale it Out!
 Prevent Concurrency issues
 Reduce Latency
 Add Caching
 Add more caching!
Usage Example: Sample Container
 Static html sample container
 No effort to get up and running
 No database or features
Usage Example: Partuza
 Partuza is a Example social network site, written in PHP
 Allows for local gadget development & testing too
 Use as inspiration (or copy) for creating your own social site
 http://code.google.com/p/partuza
OpenSocial for intranet, portals
Sun Microsystems
   Socialsite: Shindig + gadget based UI written in Java
   Open Source https://socialsite.dev.java.net/




Upcoming from Impetus
  Zest: Shindig + Drupal (PHP)
  Zeal: Shindig + Liferay (Java)
Summary
 Become an OpenSocial Container
    Get Shindig (PHP or Java)
    Look at examples & documentation
    Implement Services
    Add UI
    Scale it out

 Resources & Links:
   http://www.chabotc.com/gdd/
What is Friend Connect?
Allows any site to become an OpenSocial container by simply
        copying a few snippets of code into your site




      http://www.google.com/friendconnect/
Friend Connect gives ...

  Users
    ... more ways to do more things with my friends

  Site owners
     ... more (and more engaged) traffic for my site

  App developers
    ... more reach for my apps

              and ... make it easy
Learn more
code.google.com
Q&A
Jaoo - Open Social A Standard For The Social Web

More Related Content

What's hot

 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 +  = ❤️ (Firebase for Apple Developers) at Swift LeedsPeter Friese
 
U.S. News | National News
U.S. News | National NewsU.S. News | National News
U.S. News | National Newsalertchair8725
 
SVIMCS(Sonarpur)-JEE-Gr21
SVIMCS(Sonarpur)-JEE-Gr21SVIMCS(Sonarpur)-JEE-Gr21
SVIMCS(Sonarpur)-JEE-Gr21atanuanwesha
 
Short Intro to Android Fragments
Short Intro to Android FragmentsShort Intro to Android Fragments
Short Intro to Android FragmentsJussi Pohjolainen
 
GraphQL & Relay - 串起前後端世界的橋樑
GraphQL & Relay - 串起前後端世界的橋樑GraphQL & Relay - 串起前後端世界的橋樑
GraphQL & Relay - 串起前後端世界的橋樑Pokai Chang
 

What's hot (8)

 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
 
Javascript projects Course
Javascript projects CourseJavascript projects Course
Javascript projects Course
 
Tutorial basicapp
Tutorial basicappTutorial basicapp
Tutorial basicapp
 
Jsp1
Jsp1Jsp1
Jsp1
 
U.S. News | National News
U.S. News | National NewsU.S. News | National News
U.S. News | National News
 
SVIMCS(Sonarpur)-JEE-Gr21
SVIMCS(Sonarpur)-JEE-Gr21SVIMCS(Sonarpur)-JEE-Gr21
SVIMCS(Sonarpur)-JEE-Gr21
 
Short Intro to Android Fragments
Short Intro to Android FragmentsShort Intro to Android Fragments
Short Intro to Android Fragments
 
GraphQL & Relay - 串起前後端世界的橋樑
GraphQL & Relay - 串起前後端世界的橋樑GraphQL & Relay - 串起前後端世界的橋樑
GraphQL & Relay - 串起前後端世界的橋樑
 

Similar to Jaoo - Open Social A Standard For The Social Web

OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial IntroPamela Fox
 
Goodle Developer Days Munich 2008 - Open Social Update
Goodle Developer Days Munich 2008 - Open Social UpdateGoodle Developer Days Munich 2008 - Open Social Update
Goodle Developer Days Munich 2008 - Open Social UpdatePatrick Chanezon
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformTaylor Singletary
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationChris Schalk
 
BarCamp KL H20 Open Social Hackathon
BarCamp KL H20 Open Social HackathonBarCamp KL H20 Open Social Hackathon
BarCamp KL H20 Open Social Hackathonmarvin337
 
Goodle Developer Days Madrid 2008 - Open Social Update
Goodle Developer Days Madrid 2008 - Open Social UpdateGoodle Developer Days Madrid 2008 - Open Social Update
Goodle Developer Days Madrid 2008 - Open Social UpdatePatrick Chanezon
 
Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08Ari Leichtberg
 
Open Social Presentation - GSP West 2008
Open Social Presentation - GSP West 2008Open Social Presentation - GSP West 2008
Open Social Presentation - GSP West 2008Patrick Chanezon
 
The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009Chris Chabot
 
Open Social Introduction - JUG SummerCamp 2010
Open Social Introduction - JUG SummerCamp 2010Open Social Introduction - JUG SummerCamp 2010
Open Social Introduction - JUG SummerCamp 2010Tugdual Grall
 
Foundations of a Social Application Platform
Foundations of a Social Application PlatformFoundations of a Social Application Platform
Foundations of a Social Application PlatformJonathan LeBlanc
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
 
Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102remko caprio
 
Hi5 Opensocial Code Lab Presentation
Hi5 Opensocial Code Lab PresentationHi5 Opensocial Code Lab Presentation
Hi5 Opensocial Code Lab Presentationplindner
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...goodfriday
 

Similar to Jaoo - Open Social A Standard For The Social Web (20)

OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial Intro
 
Goodle Developer Days Munich 2008 - Open Social Update
Goodle Developer Days Munich 2008 - Open Social UpdateGoodle Developer Days Munich 2008 - Open Social Update
Goodle Developer Days Munich 2008 - Open Social Update
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application Platform
 
Opensocial
OpensocialOpensocial
Opensocial
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial Presentation
 
BarCamp KL H20 Open Social Hackathon
BarCamp KL H20 Open Social HackathonBarCamp KL H20 Open Social Hackathon
BarCamp KL H20 Open Social Hackathon
 
Goodle Developer Days Madrid 2008 - Open Social Update
Goodle Developer Days Madrid 2008 - Open Social UpdateGoodle Developer Days Madrid 2008 - Open Social Update
Goodle Developer Days Madrid 2008 - Open Social Update
 
Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08
 
Open Social Presentation - GSP West 2008
Open Social Presentation - GSP West 2008Open Social Presentation - GSP West 2008
Open Social Presentation - GSP West 2008
 
Hi5 Open Social
Hi5   Open SocialHi5   Open Social
Hi5 Open Social
 
SEA Open Hack - YAP
SEA Open Hack - YAPSEA Open Hack - YAP
SEA Open Hack - YAP
 
The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009
 
Open Social Introduction - JUG SummerCamp 2010
Open Social Introduction - JUG SummerCamp 2010Open Social Introduction - JUG SummerCamp 2010
Open Social Introduction - JUG SummerCamp 2010
 
Open Social
Open SocialOpen Social
Open Social
 
Foundations of a Social Application Platform
Foundations of a Social Application PlatformFoundations of a Social Application Platform
Foundations of a Social Application Platform
 
OpenSocial
OpenSocialOpenSocial
OpenSocial
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102
 
Hi5 Opensocial Code Lab Presentation
Hi5 Opensocial Code Lab PresentationHi5 Opensocial Code Lab Presentation
Hi5 Opensocial Code Lab Presentation
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
 

More from Patrick Chanezon

KubeCon 2019 - Scaling your cluster (both ways)
KubeCon 2019 - Scaling your cluster (both ways)KubeCon 2019 - Scaling your cluster (both ways)
KubeCon 2019 - Scaling your cluster (both ways)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
 

More from Patrick Chanezon (20)

KubeCon 2019 - Scaling your cluster (both ways)
KubeCon 2019 - Scaling your cluster (both ways)KubeCon 2019 - Scaling your cluster (both ways)
KubeCon 2019 - Scaling your cluster (both ways)
 
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
 

Recently uploaded

Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableSeo
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsP&CO
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityEric T. Tung
 
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...daisycvs
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperityhemanthkumar470700
 
Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Serviceritikaroy0888
 
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...allensay1
 
Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1kcpayne
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLSeo
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Centuryrwgiffor
 
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort ServiceEluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort ServiceDamini Dixit
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...amitlee9823
 
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...lizamodels9
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...amitlee9823
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesDipal Arora
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayNZSG
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with CultureSeta Wicaksana
 

Recently uploaded (20)

Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and pains
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
 
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperity
 
Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Service
 
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
 
Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1
 
Falcon Invoice Discounting platform in india
Falcon Invoice Discounting platform in indiaFalcon Invoice Discounting platform in india
Falcon Invoice Discounting platform in india
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Century
 
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort ServiceEluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
 
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 May
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 

Jaoo - Open Social A Standard For The Social Web

  • 1. OpenSocial a standard for the social web Patrick Chanezon 9 september 2008 chanezon@google.com
  • 2. Agenda OpenSocial introduction How to build OpenSocial applications Hosting social applications Social applications monetization OpenSocial containers Becoming an OpenSocial container Google Friend Connect Summary
  • 4. Making the web better by making it social What does social mean?
  • 5. What does Social mean? Eliette what do you do with your friends?
  • 6. This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 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. Raoul: a social object for Charlotte (3 year old)
  • 13.
  • 14. 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
  • 15. How do we socialize objects online without having to create yet another social network?
  • 16. OpenSocial A common API for social applications across multiple web sites
  • 17. The Trouble with Developing Social Apps Which site do I build my app for?
  • 18. Let’s work on that… Using OpenSocial, I can build apps for all of these sites!
  • 19. What’s offered by OpenSocial? Activities What are people up to on the web People/Profile Info Who do I know, etc. Persistent datastore Handles key/value pairs
  • 20. Today: 375 Million User Reach
  • 21. Where is OpenSocial live today? Live to Users: Live Developer Sandboxes: MySpace iGoogle orkut imeem Hi5 CityIN Freebar Tianya Friendster Ning Webon from Lycos Plaxo Pulse IDtail Mail.ru YiQi Netlog - New! Hyves - New! Individual Developer Links: http://code.google.com/apis/opensocial/gettingstared.html
  • 23. What’s in OpenSocial? JavaScript API - Now REST Protocol - New Templates - Prototype in Shindig
  • 24. OpenSocial’s JavaScript API OpenSocial JS API Gadget JS API Gadget XML schema OpenSocial v0.7 is live OpenSocial v0.8 is being deployed now Specs and release notes: http://opensocial.org
  • 25. OpenSocial’s REST Protocol Access social data without JavaScript Works on 3rd party websites / phones / etc Uses OAuth to allow secure access Open source client libraries in development Java, PHP, Python, <your fav language here> Being deployed with OpenSocial v0.8 Spec’s available at http://opensocial.org
  • 26. OpenSocial Templates Writing JavaScript is hard Writing templates is easy Templates also give Consistent UI across containers Easy way to localize More interesting content options when inlining into container (activities, profile views) Ability to serve millions of dynamic pages per day without a server
  • 27. Design principles Create a template language that is: Simple Easy markup for creating UI and binding data Fast Supports server-side optimizations Extensible Standard reusable controls (buttons, lists, links, etc.) Everywhere Only need to include a single JavaScript file
  • 28. Concepts: Markup A set of standard tags and behaviors that provide developers with a simple, declarative language for assembling apps. Templating A set of standard elements implemented by containers. A method for taking structured data and rendering UI elements in an arbitrary markup. Data Pipelining A method for grabbing OpenSocial and third-party data declaratively (or in script) and joining it to templates.
  • 30. Example: osTabs, os:ShowPerson <os:Tabs name=quot;tabGroupquot;> <tab> <title>Tab 1</title> <body>This is the first tab.</body> </tab> ... <tab> <title>Tab 3</title> <body> <os:ShowPerson person=quot;${Viewer}quot;/> <div repeat=quot;ViewerFriendsquot;> <os:ShowPerson person=quot;${$this}quot;/> </div> </body> </tab> </os:Tabs>
  • 31. Example: Friends list (no templates)
  • 32. Example: Friends list (with templates)
  • 33. Template Status High-level specification complete: http://wiki.opensocial-templates.org Prototype implementation available: http://ostemplates-demo.appspot.com GET INVOLVED! Tag feedback/suggestions appreciated: http://tech.groups.yahoo.com/group/os-templates/ Code for templates is in Shindig: patches welcome:-)
  • 34. OpenSocial is what you make it. OpenSocial is an open source project. The spec is controlled by the community. Anyone can contribute and have a voice. http://groups.google.com/group/opensocial/ “OpenSocial and Gadgets spec” subgroup OpenSocial Foundation Get involved to nominate and elect board reps http://www.opensocial.org/opensocial- foundation/
  • 35. A note on compliance OpenSocial is designed for many sites Building an app: Technology Policy OpenSocial Compliance Tests http://code.google.com/p/opensocial- resources/wiki/ComplianceTests
  • 37. OpenSocial Compliance Matrix http://opensocial-compliance.appspot.com
  • 38. Other comments Portable Contacts Alignment Caja for JavaScript security
  • 39. A standard for everyone This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
  • 40. How To Build OpenSocial Applications
  • 41. Owner and Viewer Relationship Applications has views Owner Viewer has has Friends Friends
  • 42. Understanding the Gadget XML ModulePrefs define <?xml version=quot;1.0quot; encoding=quot;UTF-8quot; ?> characteristics of the gadget, such as title, <Module> author, etc. <ModulePrefs title=quot;Hello World!quot;> Module node defines the gadget. <Require feature=quot;opensocial-0.7quot; /> </ModulePrefs> Require nodes should be added for all <Content type=quot;htmlquot;> desired features <![CDATA[ <script> function init(){ alert(quot;hello worldquot;); Define your gadget html within Content } node gadgets.util.registerOnLoadHandler(init); </script> ]]> </Content> </Module>
  • 43. Retrieve Friend Information function getFriendData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest(VIEWER), 'viewer'); req.add(req.newFetchPeopleRequest(VIEWER_FRIENDS), 'viewerFriends'); Place an Create a new data req.send(onLoadFriends); asynchronous call to request object and the container. add the desired sub- } requests. function onLoadFriends(response) { var viewer = response.get('viewer').getData(); var viewerFriends = response.get('viewerFriends').getData(); ///More code } Handle the returned data in callback
  • 44. Persisting Data function populateMyAppData() { Use a var req = opensocial.newDataRequest(); newUpdatePersonAppDa var data1 = Math.random() * 5; taRequest() to update data. 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); }
  • 45. Fetching persisted data function requestMyData() { Use a var req = opensocial.newDataRequest(); newFetchPersonAppD var fields = [quot;AppField1quot;, quot;AppField2quot;]; ataRequest() to fetch data. req.add(req.newFetchPersonRequest( opensocial.DataRequest.PersonId.VIEWER),quot;viewerquot;); req.add(req.newFetchPersonAppDataRequest(quot;VIEWERquot;, fields), quot;viewer_dataquot;); req.send(handleReturnedData); AppData is returned as a } 2-level Map, with person id as the first key and propertyname as the function handleReturnedData(data) { next key var mydata = data.get(quot;viewer_dataquot;); var viewer = data.get(quot;viewerquot;); me = viewer.getData(); var appField1 = mydata[me.getId()][quot;AppField1quot;]; ///More code }
  • 46. Posting an Activity function postActivity(text) { requestCreateActivity is var params = {}; a request, a specific params[opensocial.Activity.Field.TITLE] = text; may choose to container var activity = opensocial.newActivity(params); ignore it. opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, callback); } postActivity(quot;This is a sample activity, created at quot; + new Date().toString())
  • 47. 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
  • 49. Hosting OpenSocial apps 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 Zembly: is the world's first cloud-based development environment for social apps. Full OpenSocial support
  • 50. 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
  • 52. OpenSocial Monetization Ads from Ad Networks AdSense, RightMedia BuddyPoke, Rate My Friend Brand/Private Label App Sony Ericsson MTV Roadies app on orkut Sell virtual or real goods Free -> Freemium Referrals Virtual currency
  • 53. Success Story: Buddy Poke #1 OpenSocial app on orkut 8M installs for orkut, hi5, MySpace $1-2 CPM #1 App for App Engine w/ millions daily PV
  • 54. Success Story: PhotoBuzz 6M+ installs on hi5 and orkut CPM $1-3, especially good on orkut 4M buzzes per day Small team of 4 people, profitable
  • 56. Container Specific Extensions MySpace photo albums videos hi5 status presence photo albums Netlog credits api extension translation tool for free Imeem music metadata api
  • 59. Localisation is important! Translations are automatically injected Translation tool for Netlog translators
  • 61. What’s in it for you? Branding, co-branding, sponsorships 100% revenue from vertical rectangle or skyscraper on your application page Credit economy with Netlog OpenSocial extension
  • 62. Credit Economy Virtual Currency Use Cases charge credits for app installation charge credits for certain features charge credits for buying items charge credits for...
  • 63. Questions? Developer pages: http://es.netlog.com/go/developer/ OpenSocial sandbox: http://es.netlog.com/go/developer/opensocial/sandbox=1
  • 65. Social Network Business Tool Career Management © viadeo – septembre 2008
  • 66. Benefits Viadeo can offer to developers 8 languages (European + China) Professional oriented Distribution of Members among all the Industries Mainly “A Level” profiles Members with High Revenues => Strong capabilities of monetization
  • 67. Vertical Apps ? Members split by industry
  • 68. “A Level” priority targets ? High qualification of Viadeo’s members
  • 69. Apps for Professional Social Network… Helping to : Find Customers / Partners / Suppliers Organize Meetings/Events Share information and expertise But also ... Get headhunted… …and recruit Etc…
  • 70. Sandbox Presentation – Create a Dev. Account
  • 72. Becoming an OpenSocial Container Question: How do you become an OpenSocial container? Answer: The Apache incubator project “Shindig” serves this purpose!
  • 73. What is Shindig ? Open source reference implementation of OpenSocial & Gadgets specification An Apache Software Incubator project Available in Java & PHP http://incubator.apache.org/shindig It’s Goal: “Shindig's goal is to allow new sites to start hosting social apps in under an hour's worth of workquot;
  • 74. Introduction to Shindig Architecture Gadget Server Social Data Server Gadget Container JavaScript
  • 77. Social Server - RESTful API Preview available on iGoogle Orkut Hi5 New development models Server to server & Mobile! Try it out: curl http://localhost:8080/social/rest/people/john.doe/@all
  • 78. Shindig Server Side (Java) Architecture
  • 79. Shindig Client Side Libraries
  • 80. Opensocial – JS Library
  • 81. Implementing Shindig - Data sources Integrate with your own data sources People Service Activities Service App Data Service class MyPeopleService implements PeopleService { ... } class MyAppDataService implements AppDataService { ... } class MyActivitiesService implements ActivitiesService { ... }
  • 82. Implementing Shindig - PHP Implement functions function getActivities($ids) { $activities = array(); $res = mysqli_query($this->db, ”SELECT…quot;); while ($row = @mysqli_fetch_array($res, MYSQLI_ASSOC)) { $activity = new Activity($row['activityId'], $row['personId']); $activity->setStreamTitle($row['activityStream']); $activity->setTitle($row['activityTitle']); $activity->setBody($row['activityBody']); $activity->setPostedTime($row['created']); $activities[] = $activity; } return $activities; }
  • 83. Implementing Shindig - Java Code at http://chrisschalk.com/shindig_docs/io/shindig-io.html import org.apache.shindig.social.opensocial.ActivitiesService; public class SQLActivitiesService implements ActivitiesService { private SQLDataLayer sqlLayer; @Inject public SQLActivitiesService(SQLDataLayer sqlLayer) { this.sqlLayer = sqlLayer; }
  • 84. Implementing Shindig - Java public ResponseItem<List<Activity>> getActivities(List<String> ids, SecurityToken token) { Map<String, List<Activity>> allActivities = sqlLayer.getActivities(); List<Activity> activities = new ArrayList<Activity>(); for (String id : ids) { List<Activity> personActivities = allActivities.get(id); if (personActivities != null) { activities.addAll(personActivities); } } return new ResponseItem<List<Activity>>(activities); }
  • 85. Implementing - Make it a platform Add UI Elements App Gallery App Canvas App Invites Notification Browser Developer Resources Developer Console Application Gallery Scale it Out!
  • 86. Implementing - Scale it Out! Prevent Concurrency issues Reduce Latency Add Caching Add more caching!
  • 87. Usage Example: Sample Container Static html sample container No effort to get up and running No database or features
  • 88. Usage Example: Partuza Partuza is a Example social network site, written in PHP Allows for local gadget development & testing too Use as inspiration (or copy) for creating your own social site http://code.google.com/p/partuza
  • 89. OpenSocial for intranet, portals Sun Microsystems Socialsite: Shindig + gadget based UI written in Java Open Source https://socialsite.dev.java.net/ Upcoming from Impetus Zest: Shindig + Drupal (PHP) Zeal: Shindig + Liferay (Java)
  • 90. Summary Become an OpenSocial Container Get Shindig (PHP or Java) Look at examples & documentation Implement Services Add UI Scale it out Resources & Links: http://www.chabotc.com/gdd/
  • 91. What is Friend Connect? Allows any site to become an OpenSocial container by simply copying a few snippets of code into your site http://www.google.com/friendconnect/
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102. Friend Connect gives ... Users ... more ways to do more things with my friends Site owners ... more (and more engaged) traffic for my site App developers ... more reach for my apps and ... make it easy
  • 104.
  • 105. Q&A