SlideShare une entreprise Scribd logo
1  sur  106
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

 +  = ❤️ (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
 

Tendances (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 - 串起前後端世界的橋樑
 

Similaire à 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
 

Similaire à 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...
 

Plus de 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
 

Plus de 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
 

Dernier

Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear RegressionRavindra Nath Shukla
 
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Dipal Arora
 
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Tina Ji
 
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,noida100girls
 
Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni
 
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Call Girls Pune Kirti 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Kirti 8617697112 Independent Escort Service PuneVIP Call Girls Pune Kirti 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Kirti 8617697112 Independent Escort Service PuneCall girls in Ahmedabad High profile
 
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130  Available With RoomVIP Kolkata Call Girl Howrah 👉 8250192130  Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Roomdivyansh0kumar0
 
RE Capital's Visionary Leadership under Newman Leech
RE Capital's Visionary Leadership under Newman LeechRE Capital's Visionary Leadership under Newman Leech
RE Capital's Visionary Leadership under Newman LeechNewman George Leech
 
Catalogue ONG NUOC PPR DE NHAT .pdf
Catalogue ONG NUOC PPR DE NHAT      .pdfCatalogue ONG NUOC PPR DE NHAT      .pdf
Catalogue ONG NUOC PPR DE NHAT .pdfOrient Homes
 
Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageMatteo Carbone
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMANIlamathiKannappan
 
GD Birla and his contribution in management
GD Birla and his contribution in managementGD Birla and his contribution in management
GD Birla and his contribution in managementchhavia330
 
Non Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxNon Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxAbhayThakur200703
 
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
Tech Startup Growth Hacking 101  - Basics on Growth MarketingTech Startup Growth Hacking 101  - Basics on Growth Marketing
Tech Startup Growth Hacking 101 - Basics on Growth MarketingShawn Pang
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communicationskarancommunications
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Dave Litwiller
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsApsara Of India
 

Dernier (20)

Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear Regression
 
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
 
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
 
Best Practices for Implementing an External Recruiting Partnership
Best Practices for Implementing an External Recruiting PartnershipBest Practices for Implementing an External Recruiting Partnership
Best Practices for Implementing an External Recruiting Partnership
 
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
 
Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.
 
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Mehrauli Delhi 💯Call Us 🔝8264348440🔝
 
VIP Call Girls Pune Kirti 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Kirti 8617697112 Independent Escort Service PuneVIP Call Girls Pune Kirti 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Kirti 8617697112 Independent Escort Service Pune
 
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130  Available With RoomVIP Kolkata Call Girl Howrah 👉 8250192130  Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
 
RE Capital's Visionary Leadership under Newman Leech
RE Capital's Visionary Leadership under Newman LeechRE Capital's Visionary Leadership under Newman Leech
RE Capital's Visionary Leadership under Newman Leech
 
Catalogue ONG NUOC PPR DE NHAT .pdf
Catalogue ONG NUOC PPR DE NHAT      .pdfCatalogue ONG NUOC PPR DE NHAT      .pdf
Catalogue ONG NUOC PPR DE NHAT .pdf
 
Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usage
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMAN
 
GD Birla and his contribution in management
GD Birla and his contribution in managementGD Birla and his contribution in management
GD Birla and his contribution in management
 
Non Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxNon Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptx
 
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
Tech Startup Growth Hacking 101  - Basics on Growth MarketingTech Startup Growth Hacking 101  - Basics on Growth Marketing
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
 
KestrelPro Flyer Japan IT Week 2024 (English)
KestrelPro Flyer Japan IT Week 2024 (English)KestrelPro Flyer Japan IT Week 2024 (English)
KestrelPro Flyer Japan IT Week 2024 (English)
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communications
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
 

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