SlideShare a Scribd company logo
1 of 52
Download to read offline
A Technical Overview
Chris Schalk, Google Developer Advocate

Jiwoong Lee, Web developer

Seoul - 11/18/2008
Agenda


    • OpenSocial History & Concepts
    • Building OpenSocial Applications
    • Hosting OpenSocial Applications
    • OpenSocial Updates
    • The OpenSocial Specification Process



2
The OpenSocial History & Concepts




3                                       3
OpenSocial Roadmap


    • Version 0.5 was released in a “developer release” on Nov
    1st.
        • First “sandbox” was made available on Orkut

    • Version 0.6 was released in December
       • Initial version of Shindig server software was launched as Apache
       incubator project
       • Other sandboxes came live - Hi5, Ning, Plaxo …

    • Version 0.7 (production) was released in January
       • MySpace, Hi5, Orkut began running 0.7



4
OpenSocial Roadmap


    • Version v0.8 (0.8.1) is current

    • Latest evolution of OpenSocial as defined by the
    OpenSocial development community
        • Updated JavaScript API
        • Now contains a RESTful protocol, RPC protocol

    • hi5, MySpace, orkut, iGoogle now support 0.8

    • Specification:
    http://www.opensocial.org/Technical-Resources/opensocial-spec-v081




5
OpenSocial 0.9 - Coming Soon!

    • Goal:
       – Enable a faster development experience that is both secure and
         efficient


    Core principles:
    • Client-side and server-side processing
    • Standard set of tags with extensibility model
       – Example: <os:ShowPerson>
    • More 0.9 later….




6
OpenSocial Concepts - What is a Container?


    An OpenSocial “Container” is a website that can host
    OpenSocial applications




       • Is an SNS that supports OpenSocial
       • Can serve Gadgets/OpenSocial Applications
       • Provides end user social experience
       • Provides access to site’s social graph through applications




7
OpenSocial Concepts - What is an Application?


     An “OpenSocial Application” is a gadget that uses social
    features



       • OpenSocial applications are gadgets that support the OpenSocial
       JavaScript APIs
       • Similar to traditional gadget
           • Encapsulated in an XML document
           • Container fetches XML document, parses content, serves rendered
           HTML/JS/CSS content in an iFrame
       • OpenSocial applications can rely on third party services



8
Building OpenSocial Applications




9                                      9
Gadgets Basics
     A gadget spec:

     • Is an XML file.
     • Defines metadata about an OpenSocial app.
     • Is highly cacheable and does not need a high performance server.

     Gadgets use existing web standards
     • XML to define metadata.
     • HTML for markup.
     • JavaScript for interactivity.
     • CSS for presentation.




10
Gadgets Basics
     A gadget server:

     •Takes the gadget spec as input.
     •Performs optimizations on the gadget spec.
     •Outputs HTML, JavaScript, and CSS as one document.




11
Gadgets Basics
     A container:

     •Displays the social network’s user interface.
     •Opens an IFrame to the rendered gadget.




       Containers and gadget
       servers are both run by
        the social network, but
       do not need to be on
       the same machine, or
       even domain.




12
Gadgets Basics
     Example gadget XML spec:
     •Uses HTML to print “Hello World”.
     •Colors the text red with CSS.
     •Dynamically adjusts the height of the gadget with JavaScript.
         <?xml version=quot;1.0quot; encoding=quot;UTF-8quot; ?>
         <Module>
          <ModulePrefs title=quot;Hello World!quot;>
           <Require feature=quot;dynamic-heightquot; />
          </ModulePrefs>
          <Content type=quot;htmlquot;>
           <![CDATA[
             <h1>Hello World</h1>
             <style type=quot;text/cssquot;>
              h1 { color: #dd0000; }
             </style>
             <script type=quot;text/javascriptquot;>
              gadgets.window.adjustHeight();
             </script>
           ]]>
          </Content>
         </Module>

13
Gadgets Basics




14
Making Gadgets Social
     Gadgets can become social with OpenSocial JavaScript API

      OpenSocial API has three core services:

      •People & Friends
          •   Access friends information programmatically

      •Activities
          • See what you’re friends are up to
          • Share what you are doing


      •Persistence
          • Provide state without a server
          • Share data with your friends




15
Integrating OpenSocial applications with external servers

        The OpenSocial persistence service provides a way to
        store/share small amounts of data on the OpenSocial
        server, but…

       • What if you need to store more data than your
          container allows?

       • Solution: You can make independent requests out
          to external servers.
           • Use: gadgets.io.makeRequest
           • Can also make authenticated requests using Oauth
           • Can use cloud services from: Joyent, Amazon or
             AppEngine!


16
Integrating OpenSocial applications with external servers

        An example request to an external server

                  gadgets.io.makeRequest



                                OpenSocial
                                  Server                   External
                       1                        2           Server


        browser


             1. Initial request made from gadget
             2. Server routes request to external server

                              Requests can be secured using OAuth
17
Advanced OpenSocial App Development


      Arne will provide more detailed coverage on OpenSocial
       Application Development at 3:00pm!




18
Demonstration

     • Building simple OpenSocial Client Applications




19
Hosting OpenSocial Applications




20                                     2
                                       0
How to host OpenSocial Applications


     1. Can build your own server that implements
     OpenSocial specification…

     2. Or can use “Shindig” - Reference implementation for
     OpenSocial




21
Hosting OpenSocial Applications

     What is Shindig?

        • Gadget Server
            –Parses gadget XML, renders as HTML/JS/CSS
        • OpenSocial Data Server
            –Includes RESTful API server
        • Container JavaScript
            –Core gadgets, OpenSocial JavaScript environment


        http://incubator.apache.org/shindig




22
How Shindig works
     • Gadget Server
     • OpenSocial Data Server

          Yoursite.com           Shindig

                                 Gadget
                                 Server
              Gadget
                                OpenSocial
                                DataServer




23                                           23
Why use Shindig?

     • Strong Open Source community

     • High quality production-ready code

     • Synchronized with specification

     • Language neutral (Java, PHP, …)




24
Shindig success at hi5


     • Big Traffic
        • 10k req/sec Edge
        • 6k req/sec Origin


     • Hundreds of Developers
     • 1800+ Apps
     • 1 Billion hits/day
     … on 42 Shindig servers




25                               25
Demonstration: Trying out Shindig




26                                       26
Adapting Shindig
     •   Adapting Shindig to your own social data


               Shindig

              Gadget Server

           OpenSocialDataServer

              ActivityService                   Social Graph
              PersonService                        Data
              AppDataService




27
Demonstration: Shindig with MySQL




28                                       28
RESTful and RPC protocols
     Opens new development models
     • Background processing.
     • Easier Flash integration.
     • Mobile applications.




29
RESTful and RPC protocols
     Communication methods:
     •RESTful (Representational State Transfer)
     •RPC (Remote Procedure Call)‫‏‬


     Formats:
     •XML
     •JSON
     •AtomPub




30
RESTful and RPC protocols
     REST:
     •Resources are URLs.
     Example - People:
      • All people connected to the given user:
          /people/{guid}/@all

       • All friends of the given user:
          /people/{guid}/@friends

       • Profile of the given user:
          /people/{guid}/@self

       • Profile of the authenticated user:
          /people/@me/@self

       • Supported Person fields:
          /people/@supportedFields


31
RESTful and RPC protocols
     Querystring parameters customize requests:
      • Response format (JSON, XML, AtomPub)‫‏‬
        format={format}

      • Request extra fields
        fields={-join|,|field}.

      • Filtering:
        filterBy={fieldname}
        filterOp={operation}filterValue={value}
        updatedSince={xsdDateTime}
        networkDistance={networkDistance}


      • Paging:
        count={count}                sortBy={fieldname}
        sortOrder={order}
        startIndex={startIndex}

32
RESTful and RPC protocols
     REST responses (Person):
      • JSON:
      {
          quot;idquot; : quot;example.org:34KJDCSKJN2HHF0DW20394quot;,
          quot;displayNamequot; : quot;Janeyquot;,
          quot;namequot; : {quot;unstructuredquot; : quot;Jane Doequot;},
          quot;genderquot; : quot;femalequot;
      }

      • XML:
      <person xmlns=quot;http://ns.opensocial.org/2008/opensocialquot;>
       <id></id>
       <displayName></displayName>
       <name>
        <unstructured>Jane Doe</unstructured>
       </name>
       <gender>female</gender>
      </person>




33
RESTful and RPC protocols
     REST responses (Person):
      • AtomPub:
      <entry xmlns=quot;http://www.w3.org/2005/Atomquot;>
       <content type=quot;application/xmlquot;>
        <person xmlns=quot;http://ns.opensocial.org/2008/opensocialquot;>
          <name>
            <unstructured>Jane Doe</unstructured>
          </name>
          <gender>female</gender>
        </person>
       </content>
       <title/>
       <updated>2003-12-13T18:30:02Z</updated>
       <author/>
       <id>urn:guid:example.org:34KJDCSKJN2HHF0DW20394</id>
      </entry>




34
RESTful and RPC protocols

     REST has some disadvantages:

     •Batch support requires multiple HTTP requests, or a contrived URL
     scheme.
     •Specifying multiple users via querystring is difficult. Is
     ?uid=1234,5678 the same resource as ?uid=5678,1234 ?




35
RESTful and RPC protocols
     RPC:
     •One endpoint - parameters specify methods to call.
     •Batch support.
     •Specify collections of users through passed arguments, not URLs.

     Example - Fetch current user:
        • Request                        • Response
     POST /rpc HTTP/1.1
                                      HTTP/1.x 207 Multi-Status
     Host: api.example.org
                                      Content-Type: application/json
     Authorization: <Auth token>
                                      {
     Content-Type: application/json     quot;idquot; : quot;myselfquot;,
     {                                  quot;resultquot; : {
       quot;methodquot; : quot;people.getquot;,           quot;idquot; : quot;example.org:34KJDCSKJN2HHF0DW20394quot;,
       quot;idquot; : quot;myselfquot;,                   quot;namequot; : { quot;unstructuredquot; : quot;Jane Doequot;},
       quot;paramsquot; : {                       quot;genderquot; : quot;femalequot;
         quot;useridquot; : quot;@mequot;,              }
         quot;groupidquot; : quot;@selfquot;          }
       }
     }



36
RESTful and RPC protocols
     Client libraries are being created for PHP, Java, and Python.
        • Help you connect to OpenSocial containers, and work with social
        data on your server.

     Sample: log into a container:




37
RESTful and RPC protocols
     Sample: Fetch the current user’s friends:




38
RESTful and RPC protocols
     RESTful and RPC use OAuth for authentication
        • OAuth is an open standard.
        • Client libraries will help make this process easier for developers.

     Sample: use OAuth to get an access token for a user:




39                                                                              3
                                                                                9
OpenSocial RESTful/RPC and Mobile




40
Demonstration: Trying out the RESTful protocol

     String uid =    quot;05047698136432048591quot;;


     OpenSocialClient client = new OpenSocialClient(quot;orkut.comquot;);

     client.setProperty(OpenSocialClient.Property.RESTFUL_BASE_URI, quot;http://orkut.com/social/rest/quot;);
     client.setProperty(OpenSocialClient.Property.TOKEN, quot;hpelsWNlP2SN8zkJiW6qBawcfxwquot;);
     client.setProperty(OpenSocialClient.Property.SHARED_SECRET, quot;AounHfbA8JLJxhMmAFCoffTKquot;);

     try {
       Person p;
       OpenSocialObject d;

         p = client.fetchPerson(uid);
         System.out.println(quot;Display name: quot; + p.getDisplayName() + quot;¥nquot;);

         Collection<Person> c = client.fetchFriends(uid);
         for (Person friend : c) {
            System.out.println(friend.getDisplayName() + quot; - quot; + friend.getId());
          }
     }




41                                                                                                      41
OpenSocial Future Updates - 0.9




42                                     4
                                       2
What’s coming in OpenSocial 0.9


     • HTML on your own Server
     • OpenSocial Templates
     • Other stuff..
       • http://wiki.opensocial.org/index.php?title=Spec_Changes




43
Dynamic HTML from your own server
     Example gadget XML:
     <Content href=quot;http://developer.com/canvasquot;>
         <os:PeopleRequest userId=quot;@viewerquot; groupId=quot;@friendsquot;
     fields=quot;name,birthdayquot; key=quot;ViewerFriendsquot;>
     </Content>


     Example PHP:
     <?php
     // Code here will pull POST param into $ViewerFriends
     echo quot;<h1>Welcome to the birthday app</h1>quot;;
     foreach ($ViewerFriends as $friend) {
         if ($friend['birthday']) {
             echo quot;<div>quot;.$friend['name'].quot;'s birthday isquot;.
             $friend['birthday']quot;</div>quot;;
         }
     }
     ?>

44
Using OpenSocial Templates

     Example gadget XML:


     <Content type=quot;htmlquot;>
      <h1>Welcome to the birthday app!</h1>
      <script type=quot;text/os-templatequot;>
       <os:PeopleRequest userId=quot;@viewerquot; groupId=quot;@friendsquot;
           fields=quot;name,birthdayquot; key=quot;friendsquot;>
       <div repeat=quot;${friends}quot;>
         ${Name}'s birthday is ${Birthday}
       </div>
      </script>
     </Content>




45
Demonstration: Trying out OS Templates




           http://ostemplates-devapp.appspot.com/
46                                                  46
The OpenSocial specification process




47                                          4
                                            7
The OpenSocial specification process




48
The OpenSocial specification process




49
The OpenSocial specification process




50
Useful Links

 New Wiki! (Compliancy, Cross container development …)
   • http://wiki.opensocial.org

 Homepage & specification:
   • http://www.opensocial.org

 Get on the forums:
     •   http://groups.google.com/group/opensocial

 Subscribe to the Shindig mailing list:
     •   shindig-dev-subscribe@incubator.apache.org

 Help shape the specification:
     •   http://groups.google.com/group/opensocial-and-gadgets-spec/

 Check out Shindig:
     •   http://incubator.apache.org/shindig

 OS Templates:
     •   http://groups.google.com/group/opensocial-and-gadgets-spec/web/opensocial-templates
51
Questions




                 Q&A


52

More Related Content

What's hot

Connected Banking Framework
Connected Banking FrameworkConnected Banking Framework
Connected Banking FrameworkKashif Akram
 
A Customer-Centric Banking Platform Powered by MongoDB
A Customer-Centric Banking Platform Powered by MongoDB A Customer-Centric Banking Platform Powered by MongoDB
A Customer-Centric Banking Platform Powered by MongoDB MongoDB
 
Why are merchants connecting with the Magento Connect extension?
Why are merchants connecting with the Magento Connect extension?Why are merchants connecting with the Magento Connect extension?
Why are merchants connecting with the Magento Connect extension?NexSoftsys
 
Extended 360 degree view of customer
Extended 360 degree view of customerExtended 360 degree view of customer
Extended 360 degree view of customerTrisha Dutta
 
Acquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B Leads
Acquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B LeadsAcquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B Leads
Acquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B LeadsAcquia
 
A Single Customer View Starts with a CDP: Meet AgilOne
A Single Customer View Starts with a CDP: Meet AgilOneA Single Customer View Starts with a CDP: Meet AgilOne
A Single Customer View Starts with a CDP: Meet AgilOneAcquia
 
Microsoft Dynamics 365 for Marketing: connecting marketing & sales
Microsoft Dynamics 365 for Marketing: connecting marketing & salesMicrosoft Dynamics 365 for Marketing: connecting marketing & sales
Microsoft Dynamics 365 for Marketing: connecting marketing & salesJuan Fabian
 
Carolina Media Design
Carolina Media DesignCarolina Media Design
Carolina Media Designchefmike
 
Sitecore 8 XP – A Dream for Digital Marketers
Sitecore 8 XP – A Dream for Digital MarketersSitecore 8 XP – A Dream for Digital Marketers
Sitecore 8 XP – A Dream for Digital Marketersedynamic
 
Guide to web trends query parameters
Guide to web trends query parametersGuide to web trends query parameters
Guide to web trends query parametersShipra Malik
 
Single view with_mongo_db_(lo)
Single view with_mongo_db_(lo)Single view with_mongo_db_(lo)
Single view with_mongo_db_(lo)MongoDB
 
Business Track: MetLife Leapfrogs Insurance Industry with MongoDB-Powered Big...
Business Track: MetLife Leapfrogs Insurance Industry with MongoDB-Powered Big...Business Track: MetLife Leapfrogs Insurance Industry with MongoDB-Powered Big...
Business Track: MetLife Leapfrogs Insurance Industry with MongoDB-Powered Big...MongoDB
 
Building a 360 Degree View of Your Customers on BICS
Building a 360 Degree View of Your Customers on BICSBuilding a 360 Degree View of Your Customers on BICS
Building a 360 Degree View of Your Customers on BICSPerficient, Inc.
 
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing CloudProgramming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing CloudSalesforce Developers
 
Spark summit 2017- Transforming B2B sales with Spark powered sales intelligence
Spark summit 2017- Transforming B2B sales with Spark powered sales intelligenceSpark summit 2017- Transforming B2B sales with Spark powered sales intelligence
Spark summit 2017- Transforming B2B sales with Spark powered sales intelligenceWei Di
 
Microsoft CRM Features – What’s New with Dynamics CRM 2016? | BDO Connections...
Microsoft CRM Features – What’s New with Dynamics CRM 2016? | BDO Connections...Microsoft CRM Features – What’s New with Dynamics CRM 2016? | BDO Connections...
Microsoft CRM Features – What’s New with Dynamics CRM 2016? | BDO Connections...BDO IT Solutions
 
5 Critical Keys to Success with Sitecore DMS
5 Critical Keys to Success with Sitecore DMS5 Critical Keys to Success with Sitecore DMS
5 Critical Keys to Success with Sitecore DMSNavigationArts
 
Dynamics 365 for Marketing
Dynamics 365 for MarketingDynamics 365 for Marketing
Dynamics 365 for MarketingJuan Fabian
 
Sieena - Case Study - Dial 800
Sieena - Case Study - Dial 800Sieena - Case Study - Dial 800
Sieena - Case Study - Dial 800Definity First
 

What's hot (20)

Connected Banking Framework
Connected Banking FrameworkConnected Banking Framework
Connected Banking Framework
 
A Customer-Centric Banking Platform Powered by MongoDB
A Customer-Centric Banking Platform Powered by MongoDB A Customer-Centric Banking Platform Powered by MongoDB
A Customer-Centric Banking Platform Powered by MongoDB
 
Why are merchants connecting with the Magento Connect extension?
Why are merchants connecting with the Magento Connect extension?Why are merchants connecting with the Magento Connect extension?
Why are merchants connecting with the Magento Connect extension?
 
Extended 360 degree view of customer
Extended 360 degree view of customerExtended 360 degree view of customer
Extended 360 degree view of customer
 
Acquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B Leads
Acquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B LeadsAcquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B Leads
Acquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B Leads
 
A Single Customer View Starts with a CDP: Meet AgilOne
A Single Customer View Starts with a CDP: Meet AgilOneA Single Customer View Starts with a CDP: Meet AgilOne
A Single Customer View Starts with a CDP: Meet AgilOne
 
Microsoft Dynamics 365 for Marketing: connecting marketing & sales
Microsoft Dynamics 365 for Marketing: connecting marketing & salesMicrosoft Dynamics 365 for Marketing: connecting marketing & sales
Microsoft Dynamics 365 for Marketing: connecting marketing & sales
 
Carolina Media Design
Carolina Media DesignCarolina Media Design
Carolina Media Design
 
Sitecore 8 XP – A Dream for Digital Marketers
Sitecore 8 XP – A Dream for Digital MarketersSitecore 8 XP – A Dream for Digital Marketers
Sitecore 8 XP – A Dream for Digital Marketers
 
Guide to web trends query parameters
Guide to web trends query parametersGuide to web trends query parameters
Guide to web trends query parameters
 
Solution Blueprint - Customer 360
Solution Blueprint - Customer 360Solution Blueprint - Customer 360
Solution Blueprint - Customer 360
 
Single view with_mongo_db_(lo)
Single view with_mongo_db_(lo)Single view with_mongo_db_(lo)
Single view with_mongo_db_(lo)
 
Business Track: MetLife Leapfrogs Insurance Industry with MongoDB-Powered Big...
Business Track: MetLife Leapfrogs Insurance Industry with MongoDB-Powered Big...Business Track: MetLife Leapfrogs Insurance Industry with MongoDB-Powered Big...
Business Track: MetLife Leapfrogs Insurance Industry with MongoDB-Powered Big...
 
Building a 360 Degree View of Your Customers on BICS
Building a 360 Degree View of Your Customers on BICSBuilding a 360 Degree View of Your Customers on BICS
Building a 360 Degree View of Your Customers on BICS
 
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing CloudProgramming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
 
Spark summit 2017- Transforming B2B sales with Spark powered sales intelligence
Spark summit 2017- Transforming B2B sales with Spark powered sales intelligenceSpark summit 2017- Transforming B2B sales with Spark powered sales intelligence
Spark summit 2017- Transforming B2B sales with Spark powered sales intelligence
 
Microsoft CRM Features – What’s New with Dynamics CRM 2016? | BDO Connections...
Microsoft CRM Features – What’s New with Dynamics CRM 2016? | BDO Connections...Microsoft CRM Features – What’s New with Dynamics CRM 2016? | BDO Connections...
Microsoft CRM Features – What’s New with Dynamics CRM 2016? | BDO Connections...
 
5 Critical Keys to Success with Sitecore DMS
5 Critical Keys to Success with Sitecore DMS5 Critical Keys to Success with Sitecore DMS
5 Critical Keys to Success with Sitecore DMS
 
Dynamics 365 for Marketing
Dynamics 365 for MarketingDynamics 365 for Marketing
Dynamics 365 for Marketing
 
Sieena - Case Study - Dial 800
Sieena - Case Study - Dial 800Sieena - Case Study - Dial 800
Sieena - Case Study - Dial 800
 

Similar to Open Social Summit Korea Overview

Open Social Shindig Preso for FB and OpenSocial Meetup
Open Social Shindig Preso for FB and OpenSocial MeetupOpen Social Shindig Preso for FB and OpenSocial Meetup
Open Social Shindig Preso for FB and OpenSocial MeetupChris Schalk
 
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...Chris Schalk
 
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
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialPatrick 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
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Androidnatdefreitas
 
Integrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.comIntegrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.comChris Schalk
 
Next Generation Portals : How OpenSocial Standard Adds Social to the Mix?
Next Generation Portals : How OpenSocial Standard Adds Social to the Mix? Next Generation Portals : How OpenSocial Standard Adds Social to the Mix?
Next Generation Portals : How OpenSocial Standard Adds Social to the Mix? Tugdual Grall
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationChris Schalk
 
Futuropolis 2058 Singapore - OpenSocial, a standard for the social web
Futuropolis 2058 Singapore - OpenSocial, a standard for the social webFuturopolis 2058 Singapore - OpenSocial, a standard for the social web
Futuropolis 2058 Singapore - OpenSocial, a standard for the social webPatrick Chanezon
 
Application development using the wso2 developer studio
Application development using the wso2 developer studioApplication development using the wso2 developer studio
Application development using the wso2 developer studioWSO2
 
RIAction Social Applications in the Cloud 20090226
RIAction Social Applications in the Cloud 20090226RIAction Social Applications in the Cloud 20090226
RIAction Social Applications in the Cloud 20090226Vinoaj Vijeyakumaar
 
Integrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsIntegrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsChris Schalk
 
Open Social Intro Gdd Taipei
Open Social Intro Gdd TaipeiOpen Social Intro Gdd Taipei
Open Social Intro Gdd TaipeiChris Schalk
 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScalePatrick Chanezon
 
Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009sullis
 
Android Applications Development: A Quick Start Guide
Android Applications Development: A Quick Start GuideAndroid Applications Development: A Quick Start Guide
Android Applications Development: A Quick Start GuideSergii Zhuk
 

Similar to Open Social Summit Korea Overview (20)

Open Social Shindig Preso for FB and OpenSocial Meetup
Open Social Shindig Preso for FB and OpenSocial MeetupOpen Social Shindig Preso for FB and OpenSocial Meetup
Open Social Shindig Preso for FB and OpenSocial Meetup
 
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
Open Social Technical Update for Java developers - Presented at sv-gtug.org m...
 
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
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocial
 
Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08Opensocial Haifa Seminar - 2008.04.08
Opensocial Haifa Seminar - 2008.04.08
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
 
Integrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.comIntegrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.com
 
Next Generation Portals : How OpenSocial Standard Adds Social to the Mix?
Next Generation Portals : How OpenSocial Standard Adds Social to the Mix? Next Generation Portals : How OpenSocial Standard Adds Social to the Mix?
Next Generation Portals : How OpenSocial Standard Adds Social to the Mix?
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial Presentation
 
Futuropolis 2058 Singapore - OpenSocial, a standard for the social web
Futuropolis 2058 Singapore - OpenSocial, a standard for the social webFuturopolis 2058 Singapore - OpenSocial, a standard for the social web
Futuropolis 2058 Singapore - OpenSocial, a standard for the social web
 
State Of Opensocial
State Of OpensocialState Of Opensocial
State Of Opensocial
 
Open Social Summit Korea
Open Social Summit KoreaOpen Social Summit Korea
Open Social Summit Korea
 
Application development using the wso2 developer studio
Application development using the wso2 developer studioApplication development using the wso2 developer studio
Application development using the wso2 developer studio
 
RIAction Social Applications in the Cloud 20090226
RIAction Social Applications in the Cloud 20090226RIAction Social Applications in the Cloud 20090226
RIAction Social Applications in the Cloud 20090226
 
Integrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsIntegrating Google APIs into Your Applications
Integrating Google APIs into Your Applications
 
Open Social Intro Gdd Taipei
Open Social Intro Gdd TaipeiOpen Social Intro Gdd Taipei
Open Social Intro Gdd Taipei
 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
 
Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009
 
Open Social Tech Talk Beijing
Open Social Tech Talk   BeijingOpen Social Tech Talk   Beijing
Open Social Tech Talk Beijing
 
Android Applications Development: A Quick Start Guide
Android Applications Development: A Quick Start GuideAndroid Applications Development: A Quick Start Guide
Android Applications Development: A Quick Start Guide
 

More from Chris Schalk

Google App Engine Overview and Update
Google App Engine Overview and UpdateGoogle App Engine Overview and Update
Google App Engine Overview and UpdateChris Schalk
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesChris Schalk
 
How to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudHow to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudChris Schalk
 
Building Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudBuilding Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudChris Schalk
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesChris Schalk
 
GDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudGDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudChris Schalk
 
Quick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesQuick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesChris Schalk
 
Intro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesIntro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesChris Schalk
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesChris Schalk
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest FeaturesChris Schalk
 
Building Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesBuilding Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesChris Schalk
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest FeaturesChris Schalk
 
Building Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudBuilding Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudChris Schalk
 
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Chris Schalk
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesChris Schalk
 
Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalkChris Schalk
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesIntroduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesChris Schalk
 
Google Cloud Technologies Overview
Google Cloud Technologies OverviewGoogle Cloud Technologies Overview
Google Cloud Technologies OverviewChris Schalk
 
Introducing App Engine for Business
Introducing App Engine for BusinessIntroducing App Engine for Business
Introducing App Engine for BusinessChris Schalk
 
Introduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesIntroduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesChris Schalk
 

More from Chris Schalk (20)

Google App Engine Overview and Update
Google App Engine Overview and UpdateGoogle App Engine Overview and Update
Google App Engine Overview and Update
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud Technologies
 
How to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudHow to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the Cloud
 
Building Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudBuilding Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the Cloud
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud Technologies
 
GDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudGDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloud
 
Quick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesQuick Intro to Google Cloud Technologies
Quick Intro to Google Cloud Technologies
 
Intro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesIntro to Google's Cloud Technologies
Intro to Google's Cloud Technologies
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
 
Building Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesBuilding Apps on Google Cloud Technologies
Building Apps on Google Cloud Technologies
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
 
Building Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudBuilding Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the Cloud
 
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
 
Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalk
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesIntroduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform Technologies
 
Google Cloud Technologies Overview
Google Cloud Technologies OverviewGoogle Cloud Technologies Overview
Google Cloud Technologies Overview
 
Introducing App Engine for Business
Introducing App Engine for BusinessIntroducing App Engine for Business
Introducing App Engine for Business
 
Introduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesIntroduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologies
 

Recently uploaded

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 

Recently uploaded (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 

Open Social Summit Korea Overview

  • 1. A Technical Overview Chris Schalk, Google Developer Advocate Jiwoong Lee, Web developer Seoul - 11/18/2008
  • 2. Agenda • OpenSocial History & Concepts • Building OpenSocial Applications • Hosting OpenSocial Applications • OpenSocial Updates • The OpenSocial Specification Process 2
  • 3. The OpenSocial History & Concepts 3 3
  • 4. OpenSocial Roadmap • Version 0.5 was released in a “developer release” on Nov 1st. • First “sandbox” was made available on Orkut • Version 0.6 was released in December • Initial version of Shindig server software was launched as Apache incubator project • Other sandboxes came live - Hi5, Ning, Plaxo … • Version 0.7 (production) was released in January • MySpace, Hi5, Orkut began running 0.7 4
  • 5. OpenSocial Roadmap • Version v0.8 (0.8.1) is current • Latest evolution of OpenSocial as defined by the OpenSocial development community • Updated JavaScript API • Now contains a RESTful protocol, RPC protocol • hi5, MySpace, orkut, iGoogle now support 0.8 • Specification: http://www.opensocial.org/Technical-Resources/opensocial-spec-v081 5
  • 6. OpenSocial 0.9 - Coming Soon! • Goal: – Enable a faster development experience that is both secure and efficient Core principles: • Client-side and server-side processing • Standard set of tags with extensibility model – Example: <os:ShowPerson> • More 0.9 later…. 6
  • 7. OpenSocial Concepts - What is a Container? An OpenSocial “Container” is a website that can host OpenSocial applications • Is an SNS that supports OpenSocial • Can serve Gadgets/OpenSocial Applications • Provides end user social experience • Provides access to site’s social graph through applications 7
  • 8. OpenSocial Concepts - What is an Application? An “OpenSocial Application” is a gadget that uses social features • OpenSocial applications are gadgets that support the OpenSocial JavaScript APIs • Similar to traditional gadget • Encapsulated in an XML document • Container fetches XML document, parses content, serves rendered HTML/JS/CSS content in an iFrame • OpenSocial applications can rely on third party services 8
  • 10. Gadgets Basics A gadget spec: • Is an XML file. • Defines metadata about an OpenSocial app. • Is highly cacheable and does not need a high performance server. Gadgets use existing web standards • XML to define metadata. • HTML for markup. • JavaScript for interactivity. • CSS for presentation. 10
  • 11. Gadgets Basics A gadget server: •Takes the gadget spec as input. •Performs optimizations on the gadget spec. •Outputs HTML, JavaScript, and CSS as one document. 11
  • 12. Gadgets Basics A container: •Displays the social network’s user interface. •Opens an IFrame to the rendered gadget. Containers and gadget servers are both run by the social network, but do not need to be on the same machine, or even domain. 12
  • 13. Gadgets Basics Example gadget XML spec: •Uses HTML to print “Hello World”. •Colors the text red with CSS. •Dynamically adjusts the height of the gadget with JavaScript. <?xml version=quot;1.0quot; encoding=quot;UTF-8quot; ?> <Module> <ModulePrefs title=quot;Hello World!quot;> <Require feature=quot;dynamic-heightquot; /> </ModulePrefs> <Content type=quot;htmlquot;> <![CDATA[ <h1>Hello World</h1> <style type=quot;text/cssquot;> h1 { color: #dd0000; } </style> <script type=quot;text/javascriptquot;> gadgets.window.adjustHeight(); </script> ]]> </Content> </Module> 13
  • 15. Making Gadgets Social Gadgets can become social with OpenSocial JavaScript API OpenSocial API has three core services: •People & Friends • Access friends information programmatically •Activities • See what you’re friends are up to • Share what you are doing •Persistence • Provide state without a server • Share data with your friends 15
  • 16. Integrating OpenSocial applications with external servers The OpenSocial persistence service provides a way to store/share small amounts of data on the OpenSocial server, but… • What if you need to store more data than your container allows? • Solution: You can make independent requests out to external servers. • Use: gadgets.io.makeRequest • Can also make authenticated requests using Oauth • Can use cloud services from: Joyent, Amazon or AppEngine! 16
  • 17. Integrating OpenSocial applications with external servers An example request to an external server gadgets.io.makeRequest OpenSocial Server External 1 2 Server browser 1. Initial request made from gadget 2. Server routes request to external server Requests can be secured using OAuth 17
  • 18. Advanced OpenSocial App Development Arne will provide more detailed coverage on OpenSocial Application Development at 3:00pm! 18
  • 19. Demonstration • Building simple OpenSocial Client Applications 19
  • 21. How to host OpenSocial Applications 1. Can build your own server that implements OpenSocial specification… 2. Or can use “Shindig” - Reference implementation for OpenSocial 21
  • 22. Hosting OpenSocial Applications What is Shindig? • Gadget Server –Parses gadget XML, renders as HTML/JS/CSS • OpenSocial Data Server –Includes RESTful API server • Container JavaScript –Core gadgets, OpenSocial JavaScript environment http://incubator.apache.org/shindig 22
  • 23. How Shindig works • Gadget Server • OpenSocial Data Server Yoursite.com Shindig Gadget Server Gadget OpenSocial DataServer 23 23
  • 24. Why use Shindig? • Strong Open Source community • High quality production-ready code • Synchronized with specification • Language neutral (Java, PHP, …) 24
  • 25. Shindig success at hi5 • Big Traffic • 10k req/sec Edge • 6k req/sec Origin • Hundreds of Developers • 1800+ Apps • 1 Billion hits/day … on 42 Shindig servers 25 25
  • 26. Demonstration: Trying out Shindig 26 26
  • 27. Adapting Shindig • Adapting Shindig to your own social data Shindig Gadget Server OpenSocialDataServer ActivityService Social Graph PersonService Data AppDataService 27
  • 29. RESTful and RPC protocols Opens new development models • Background processing. • Easier Flash integration. • Mobile applications. 29
  • 30. RESTful and RPC protocols Communication methods: •RESTful (Representational State Transfer) •RPC (Remote Procedure Call)‫‏‬ Formats: •XML •JSON •AtomPub 30
  • 31. RESTful and RPC protocols REST: •Resources are URLs. Example - People: • All people connected to the given user: /people/{guid}/@all • All friends of the given user: /people/{guid}/@friends • Profile of the given user: /people/{guid}/@self • Profile of the authenticated user: /people/@me/@self • Supported Person fields: /people/@supportedFields 31
  • 32. RESTful and RPC protocols Querystring parameters customize requests: • Response format (JSON, XML, AtomPub)‫‏‬ format={format} • Request extra fields fields={-join|,|field}. • Filtering: filterBy={fieldname} filterOp={operation}filterValue={value} updatedSince={xsdDateTime} networkDistance={networkDistance} • Paging: count={count} sortBy={fieldname} sortOrder={order} startIndex={startIndex} 32
  • 33. RESTful and RPC protocols REST responses (Person): • JSON: { quot;idquot; : quot;example.org:34KJDCSKJN2HHF0DW20394quot;, quot;displayNamequot; : quot;Janeyquot;, quot;namequot; : {quot;unstructuredquot; : quot;Jane Doequot;}, quot;genderquot; : quot;femalequot; } • XML: <person xmlns=quot;http://ns.opensocial.org/2008/opensocialquot;> <id></id> <displayName></displayName> <name> <unstructured>Jane Doe</unstructured> </name> <gender>female</gender> </person> 33
  • 34. RESTful and RPC protocols REST responses (Person): • AtomPub: <entry xmlns=quot;http://www.w3.org/2005/Atomquot;> <content type=quot;application/xmlquot;> <person xmlns=quot;http://ns.opensocial.org/2008/opensocialquot;> <name> <unstructured>Jane Doe</unstructured> </name> <gender>female</gender> </person> </content> <title/> <updated>2003-12-13T18:30:02Z</updated> <author/> <id>urn:guid:example.org:34KJDCSKJN2HHF0DW20394</id> </entry> 34
  • 35. RESTful and RPC protocols REST has some disadvantages: •Batch support requires multiple HTTP requests, or a contrived URL scheme. •Specifying multiple users via querystring is difficult. Is ?uid=1234,5678 the same resource as ?uid=5678,1234 ? 35
  • 36. RESTful and RPC protocols RPC: •One endpoint - parameters specify methods to call. •Batch support. •Specify collections of users through passed arguments, not URLs. Example - Fetch current user: • Request • Response POST /rpc HTTP/1.1 HTTP/1.x 207 Multi-Status Host: api.example.org Content-Type: application/json Authorization: <Auth token> { Content-Type: application/json quot;idquot; : quot;myselfquot;, { quot;resultquot; : { quot;methodquot; : quot;people.getquot;, quot;idquot; : quot;example.org:34KJDCSKJN2HHF0DW20394quot;, quot;idquot; : quot;myselfquot;, quot;namequot; : { quot;unstructuredquot; : quot;Jane Doequot;}, quot;paramsquot; : { quot;genderquot; : quot;femalequot; quot;useridquot; : quot;@mequot;, } quot;groupidquot; : quot;@selfquot; } } } 36
  • 37. RESTful and RPC protocols Client libraries are being created for PHP, Java, and Python. • Help you connect to OpenSocial containers, and work with social data on your server. Sample: log into a container: 37
  • 38. RESTful and RPC protocols Sample: Fetch the current user’s friends: 38
  • 39. RESTful and RPC protocols RESTful and RPC use OAuth for authentication • OAuth is an open standard. • Client libraries will help make this process easier for developers. Sample: use OAuth to get an access token for a user: 39 3 9
  • 41. Demonstration: Trying out the RESTful protocol String uid = quot;05047698136432048591quot;; OpenSocialClient client = new OpenSocialClient(quot;orkut.comquot;); client.setProperty(OpenSocialClient.Property.RESTFUL_BASE_URI, quot;http://orkut.com/social/rest/quot;); client.setProperty(OpenSocialClient.Property.TOKEN, quot;hpelsWNlP2SN8zkJiW6qBawcfxwquot;); client.setProperty(OpenSocialClient.Property.SHARED_SECRET, quot;AounHfbA8JLJxhMmAFCoffTKquot;); try { Person p; OpenSocialObject d; p = client.fetchPerson(uid); System.out.println(quot;Display name: quot; + p.getDisplayName() + quot;¥nquot;); Collection<Person> c = client.fetchFriends(uid); for (Person friend : c) { System.out.println(friend.getDisplayName() + quot; - quot; + friend.getId()); } } 41 41
  • 43. What’s coming in OpenSocial 0.9 • HTML on your own Server • OpenSocial Templates • Other stuff.. • http://wiki.opensocial.org/index.php?title=Spec_Changes 43
  • 44. Dynamic HTML from your own server Example gadget XML: <Content href=quot;http://developer.com/canvasquot;> <os:PeopleRequest userId=quot;@viewerquot; groupId=quot;@friendsquot; fields=quot;name,birthdayquot; key=quot;ViewerFriendsquot;> </Content> Example PHP: <?php // Code here will pull POST param into $ViewerFriends echo quot;<h1>Welcome to the birthday app</h1>quot;; foreach ($ViewerFriends as $friend) { if ($friend['birthday']) { echo quot;<div>quot;.$friend['name'].quot;'s birthday isquot;. $friend['birthday']quot;</div>quot;; } } ?> 44
  • 45. Using OpenSocial Templates Example gadget XML: <Content type=quot;htmlquot;> <h1>Welcome to the birthday app!</h1> <script type=quot;text/os-templatequot;> <os:PeopleRequest userId=quot;@viewerquot; groupId=quot;@friendsquot; fields=quot;name,birthdayquot; key=quot;friendsquot;> <div repeat=quot;${friends}quot;> ${Name}'s birthday is ${Birthday} </div> </script> </Content> 45
  • 46. Demonstration: Trying out OS Templates http://ostemplates-devapp.appspot.com/ 46 46
  • 51. Useful Links New Wiki! (Compliancy, Cross container development …) • http://wiki.opensocial.org Homepage & specification: • http://www.opensocial.org Get on the forums: • http://groups.google.com/group/opensocial Subscribe to the Shindig mailing list: • shindig-dev-subscribe@incubator.apache.org Help shape the specification: • http://groups.google.com/group/opensocial-and-gadgets-spec/ Check out Shindig: • http://incubator.apache.org/shindig OS Templates: • http://groups.google.com/group/opensocial-and-gadgets-spec/web/opensocial-templates 51
  • 52. Questions Q&A 52