SlideShare a Scribd company logo
1 of 65
Download to read offline
Gadgets and Social Applications
With OpenSocial


Vinoaj Vijeyakumaar
Customer Solutions Engineer
Google Southeast Asia

http://friendfeed.com/vinoaj




                                                                     1
                               Google Confidential and Proprietary
What




                                             2
       Google Confidential and Proprietary
Foundation


Gadgets



Applications

               3
Gadgets and OpenSocial Applications




                Websites within websites
                                           4
Gadgets and OpenSocial Applications




                              http://www.orkut.com/Main#Application.aspx?appId=43931632273

                                                                                    5
Why




                                            6
      Google Confidential and Proprietary
Reach your Audience Directly


                     SEM SEO


                        Your
                      Content




                                7
Gadgets & OpenSocial <3 RIAs
                               Consistent look and feel
                               across networks


                               Rapid deployment


                               Fluid interfaces


                               Enhanced user experience




                                                          8
How




                                            9
      Google Confidential and Proprietary
Where do I put it?


I’ve built my RIA …

… I’ve wrapped it into a
 Gadget, an OpenSocial app,
 a widget …

… now where do I put it?
                              10
Option 1: iGoogle

                    Established
                      user-base



                    Sandbox
                      supports
                      OpenSocial




                                   11
Option 2: Gadget Ads
                       Rich Media Ad Format


                       Take your content out
                       to where your users
                       are actively engaged


                       Interaction Tracking




                                              12
Option 3: OpenSocial




                       13
OpenSocial




                                                   14
             Google Confidential and Proprietary
15
OpenSocial Containers




  friendster      ®
Large Reach




              … and more to come!
Popular SEA OpenSocial “containers”
                Thailand
                                     Vietnam
                  Hi5
                                     Yahoo!360   Philippines
                 imeem
                                        Hi5      Friendster
                                                   imeem




                  Malaysia
                  Friendster
                  MySpace
                   imeem




                                                 Indonesia
                        Singapore
                                                 Friendster
                        Friendster
                                                   imeem
                         imeem
                           Orkut
Significant APAC containers

China

• Xiaonei

• 51.com

• Tianya

• MySpace CN



India

• Orkut


                              19
Getting Started with OpenSocial




                                                             20
                       Google Confidential and Proprietary
First Stop

                OpenSocial.org




             Also a social network (surprise surprise!)
                                                          21
A day in the life of a social app developer




                                              22
A day in the life of a social app developer




                                              23
A day in the life of a social app developer




                                              24
A day in the life of a social app developer




                                              25
A day in the life of a social app developer




                                              26
Gadgets
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.




                                                                     27
Gadgets
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>
                                                                  28
Gadgets

JavaScript utility functions for gadgets:
•gadgets.io.makeRequest()

Make cross-domain AJAX calls to remote servers.
•gadgets.json.parse() and gadgets.json.stringify()

Native JSON support.
•gadgets.util.escapeString()

Make text safe for display via innerHTML.
•gadgets.util.registerOnLoadHandler()

Execute code when the page is finished loading.


                                                     29
Gadgets

Add extra features to your gadget:
• dynamic-height - Change the size of your gadget in the container.
• views - Navigate between different surfaces of the container.
• skins - Make your gadget change its styles to match the container.
• Containers may offer custom features...

            <?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[     ... ]]>
            </Content>
            </Module>

                                                                       30
Gadgets




          <?xml version=quot;1.0quot; encoding=quot;UTF-8quot; ?>
          <Module>
           <ModulePrefs title=quot;Hello Social!quot;>
            <Require feature=quot;opensocial-0.8quot; />
           </ModulePrefs>
          <Content type=quot;htmlquot;>
           <![CDATA[    ... ]]>
          </Content>
          </Module>

      The OpenSocial JavaScript API is a gadget feature, too!




                                                                31
The OpenSocial JavaScript API
“It's people!”




                                32
The OpenSocial JavaScript API
Representing users:
• Client-side, users must work with the VIEWER and the OWNER.




                                                                33
The OpenSocial JavaScript API
Multiple personalities:
• When you visit your own profile, you are both the VIEWER and the
OWNER.




                                                                     34
The OpenSocial JavaScript API
Working with people:
 • opensocial.Person - JavaScript representation of a user.




                                                              35
The OpenSocial JavaScript API
    An OpenSocial Person's fields:
                                                   •
                         •                             SEXUAL_ORIENTATION
                             JOB_INTERESTS
•   ABOUT_ME
                                                   •
                         •                             SMOKER
                             JOBS
•   ACTIVITIES
                                                   •
                         •                             SPORTS
                             LANGUAGES_SPOKEN
•   ADDRESSES
                                                   •
                         •                             STATUS
                             LIVING_ARRANGEMENT
•   AGE
                                                   •
                         •                             TAGS
                             LOOKING_FOR
•   BODY_TYPE
                                                   •
                         •                             THUMBNAIL_URL
                             MOVIES
•   BOOKS
                                                   •
                         •                             TIME_ZONE
                             MUSIC
•   CARS
                                                   •
                         •                             TURN_OFFS
                             NAME
•   CHILDREN
                                                   •
                         •                             TURN_ONS
                             NETWORK_PRESENCE
•   CURRENT_LOCATION
                                                   •
                         •                             TV_SHOWS
                             NICKNAME
•   DATE_OF_BIRTH
                                                   •
                         •                             URLS
                             PETS
•   DRINKER
                         •   PHONE_NUMBERS
•   EMAILS
                         •   POLITICAL_VIEWS
•   ETHNICITY
                         •   PROFILE_SONG
•   FASHION
                         •   PROFILE_URL
•   FOOD
                         •   PROFILE_VIDEO
•   GENDER
                         •   QUOTES
•   HAPPIEST_WHEN
                         •   RELATIONSHIP_STATUS
•   HAS_APP
                         •   RELIGION
•   HEROES
                         •   ROMANCE
•   HUMORID
                         •   SCARED_OF
•   INTERESTS
                         •   SCHOOLS

                                                                            36
The OpenSocial JavaScript API
Working with people:
 • A Collection represents many opensocial.Person objects.




                                                             37
The OpenSocial JavaScript API
Working with data:
 • Persistent data gives apps key, value storage directly on the container.
 • String only, but conversion to JSON allows for storage of complex
   objects.
 • Storage per app per user - scales well with growth.
 • Ideal for settings, customizations.




                                                                        38
The OpenSocial JavaScript API
Working with activities:
  • API to post information about what users are doing with your app.
  • Many containers have support for images and some HTML.
  • Channel to grow your application.




 orkut                     MySpace                     hi5




                                                                        39
The OpenSocial JavaScript API
Post an activity:

   function postActivity(text) {
      var params = {};
      params[opensocial.Activity.Field.TITLE] = text;
      var activity = opensocial.newActivity(params);
      opensocial.requestCreateActivity(activity,
       opensocial.CreateActivityPriority.HIGH, callback);
   };



  • Assign the activity text to the TITLE field.
  • Call opensocial.newActivity() to create a new Activity instance.
  • Call opensocial.requestCreateActivity() to post the activity to the
   container.




                                                                          40
RESTful and RPC protocols
Servers talking to servers




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




                               42
RESTful and RPC protocols
Communication methods:
• RESTful (Representational State Transfer)
• RPC (Remote Procedure Call)
Formats:
• XML
• JSON
• AtomPub




                                              43
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



                                             44
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}


                                                      45
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>




                                                                                                            46
RESTful and RPC protocols
Authentication:
• Both protocols use OAuth to identify users and apps.

• Depending on what the application needs to do, it can use two-legged
or three-legged OAuth.




                                                                     47
OpenSocial Tools
What sets us apart from the animals




                                      48
Shindig
Writing a gadget server is difficult:

• Fast changing API - hard to keep up.
• Standardization is hard to get right.
• Costs $ / ¥ / 元 !




                                          49
OpenSocial Dev App
Development tool to test out JS code in different containers




http://osda.appspot.com
                                                               50
Client Libraries


•OpenSocial PHP Client Library
•OpenSocial Java Client Library
•OpenSocial Ruby Client Library
•OpenSocial Python Client Library


                                    51
“But I didn’t show
 up today to deal
 with PHP, Java,
 Python or Ruby”
                     52
ActionScript Client Library (beta)
• http://opensocial-resources-zh.googlecode.com/svn/trunk/opensocial-
  actionscript-client/0.8/doc/index.html




                                                                    53
54
Challenges
Nobody said this was going to be easy




                                        55
Challenges

Cross container development is still tricky:
• Containers may not follow the standard.
• Containers may follow the standard but have different policies.
• Follow best practices: http://tinyurl.com/4nuzll




                                                                    56
Challenges

No central directory
• Hard for apps to spread to many containers.
• Apps need to work with different install processes.
• Directory approval requirements vary from container to container.




                                                                      57
Challenges
Scaling is hard:
• Easy to start and get some users.




                                      58
Challenges
Scaling is hard:
• Being popular on one social network can push your server to the limit...




                                                                        59
Scaling is hard:
•...being popular on many networks
will push you right over.




                                     60
Help solve these problems


•OpenSocial is Open

•Get involved with the
 community at opensocial.org


•Help shape the Open & Social
 Web
                                61
Resources




            62
Resources

•   OpenSocial Tutorial: http://rurl.org/ss3

•   OpenSocial Spec, Foundation, Reference: http://opensocial.org

•   Caja: http://code.google.com/p/google-caja/

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

•   OpenSocial Across Containers video: http://tinyurl.com/4nuzll

•   OpenSocial Templates: http://ostemplates-demo.appspot.com/

•   OpenSocial Dev App: http://osda.appspot.com

•   Partuza: http://partuza.nl

•   OpenSocial Specification Proposals:
    http://groups.google.com/group/opensocial-and-gadgets-spec/topics


                                                                        63
Learn more
http://code.google.com
http://opensocial.org




                         64
Stay updated at
http://apacdeveloper.blogspot.com/
http://cse-sea.blogspot.com




                                     65

More Related Content

Similar to RIAction Social Applications in the Cloud 20090226

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
 
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
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea OverviewChris Schalk
 
Integrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.comIntegrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.comChris Schalk
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialPatrick Chanezon
 
Javapolis GWT Gadget OpenSocial
Javapolis GWT Gadget OpenSocialJavapolis GWT Gadget OpenSocial
Javapolis GWT Gadget OpenSocialDidier Girard
 
Introduction to Enterprise 2.0
Introduction to Enterprise 2.0Introduction to Enterprise 2.0
Introduction to Enterprise 2.0David Saitta
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformTaylor Singletary
 
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
 
Capstone It 101 Final
Capstone It 101 FinalCapstone It 101 Final
Capstone It 101 Finalguest745203
 
Html5 mobile develop tools
Html5 mobile develop toolsHtml5 mobile develop tools
Html5 mobile develop toolsLey Liu
 
Jonathon Rochelle @ FOWA Feb 07
Jonathon Rochelle @ FOWA Feb 07Jonathon Rochelle @ FOWA Feb 07
Jonathon Rochelle @ FOWA Feb 07carsonsystems
 
Goodle Developer Days London 2008 - Open Social Update
Goodle Developer Days London 2008 - Open Social UpdateGoodle Developer Days London 2008 - Open Social Update
Goodle Developer Days London 2008 - Open Social UpdatePatrick Chanezon
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationChris Schalk
 
Want Your API to Stick? Try Story-Telling...
Want Your API to Stick? Try Story-Telling...Want Your API to Stick? Try Story-Telling...
Want Your API to Stick? Try Story-Telling...Pat Cappelaere
 
The Next Generation of Social is in a Hangout
The Next Generation of Social is in a HangoutThe Next Generation of Social is in a Hangout
The Next Generation of Social is in a HangoutJonathan Beri
 

Similar to RIAction Social Applications in the Cloud 20090226 (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
 
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
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
 
Integrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.comIntegrating OpenSocial & SalesForce.com
Integrating OpenSocial & SalesForce.com
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocial
 
Javapolis GWT Gadget OpenSocial
Javapolis GWT Gadget OpenSocialJavapolis GWT Gadget OpenSocial
Javapolis GWT Gadget OpenSocial
 
State Of Opensocial
State Of OpensocialState Of Opensocial
State Of Opensocial
 
Introduction to Enterprise 2.0
Introduction to Enterprise 2.0Introduction to Enterprise 2.0
Introduction to Enterprise 2.0
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application Platform
 
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
 
Capstone It 101 Final
Capstone It 101 FinalCapstone It 101 Final
Capstone It 101 Final
 
Html5 mobile develop tools
Html5 mobile develop toolsHtml5 mobile develop tools
Html5 mobile develop tools
 
Jonathon Rochelle @ FOWA Feb 07
Jonathon Rochelle @ FOWA Feb 07Jonathon Rochelle @ FOWA Feb 07
Jonathon Rochelle @ FOWA Feb 07
 
Web2.0 tools for e-learning and KM
Web2.0 tools for e-learning and KMWeb2.0 tools for e-learning and KM
Web2.0 tools for e-learning and KM
 
Goodle Developer Days London 2008 - Open Social Update
Goodle Developer Days London 2008 - Open Social UpdateGoodle Developer Days London 2008 - Open Social Update
Goodle Developer Days London 2008 - Open Social Update
 
Hinting at a better web
Hinting at a better webHinting at a better web
Hinting at a better web
 
App Activity Streams
App Activity StreamsApp Activity Streams
App Activity Streams
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial Presentation
 
Want Your API to Stick? Try Story-Telling...
Want Your API to Stick? Try Story-Telling...Want Your API to Stick? Try Story-Telling...
Want Your API to Stick? Try Story-Telling...
 
The Next Generation of Social is in a Hangout
The Next Generation of Social is in a HangoutThe Next Generation of Social is in a Hangout
The Next Generation of Social is in a Hangout
 

More from Vinoaj Vijeyakumaar

You are Not So Smart: The Data Analyst's Guide
You are Not So Smart: The Data Analyst's GuideYou are Not So Smart: The Data Analyst's Guide
You are Not So Smart: The Data Analyst's GuideVinoaj Vijeyakumaar
 
2014 10-10 ThinkPerformance Hong Kong - sparkline - Vinoaj Vijeyakumaar
2014 10-10 ThinkPerformance Hong Kong - sparkline - Vinoaj Vijeyakumaar2014 10-10 ThinkPerformance Hong Kong - sparkline - Vinoaj Vijeyakumaar
2014 10-10 ThinkPerformance Hong Kong - sparkline - Vinoaj VijeyakumaarVinoaj Vijeyakumaar
 
2014 09-10-12 Building Customer Profiles - Move from clicks to faces
2014 09-10-12 Building Customer Profiles - Move from clicks to faces2014 09-10-12 Building Customer Profiles - Move from clicks to faces
2014 09-10-12 Building Customer Profiles - Move from clicks to facesVinoaj Vijeyakumaar
 
Multi touch attribution & attribution modeling - GAUC Sydney Melbourne - 2013...
Multi touch attribution & attribution modeling - GAUC Sydney Melbourne - 2013...Multi touch attribution & attribution modeling - GAUC Sydney Melbourne - 2013...
Multi touch attribution & attribution modeling - GAUC Sydney Melbourne - 2013...Vinoaj Vijeyakumaar
 
Overcoming the Seduction of Data - AlphaTerra Digital Marketing Conference - ...
Overcoming the Seduction of Data - AlphaTerra Digital Marketing Conference - ...Overcoming the Seduction of Data - AlphaTerra Digital Marketing Conference - ...
Overcoming the Seduction of Data - AlphaTerra Digital Marketing Conference - ...Vinoaj Vijeyakumaar
 
5 steps to measurement success - gThailand - 2012-10-25
5 steps to measurement success - gThailand - 2012-10-255 steps to measurement success - gThailand - 2012-10-25
5 steps to measurement success - gThailand - 2012-10-25Vinoaj Vijeyakumaar
 
Measuring your way towards a successful application - 2012-10-04 - Google Dev...
Measuring your way towards a successful application - 2012-10-04 - Google Dev...Measuring your way towards a successful application - 2012-10-04 - Google Dev...
Measuring your way towards a successful application - 2012-10-04 - Google Dev...Vinoaj Vijeyakumaar
 
Navigating Uncertainty through Data
Navigating Uncertainty through DataNavigating Uncertainty through Data
Navigating Uncertainty through DataVinoaj Vijeyakumaar
 
TEDx Johnson & Johnson - Building Great User Experience with Data - 2012-03-27
TEDx Johnson & Johnson - Building Great User Experience with Data - 2012-03-27TEDx Johnson & Johnson - Building Great User Experience with Data - 2012-03-27
TEDx Johnson & Johnson - Building Great User Experience with Data - 2012-03-27Vinoaj Vijeyakumaar
 
WAN-IFRA Digital Media Asia 2011 - Owning Great Content: A Data-Driven Approa...
WAN-IFRA Digital Media Asia 2011 - Owning Great Content: A Data-Driven Approa...WAN-IFRA Digital Media Asia 2011 - Owning Great Content: A Data-Driven Approa...
WAN-IFRA Digital Media Asia 2011 - Owning Great Content: A Data-Driven Approa...Vinoaj Vijeyakumaar
 
Owning a Great Blog: A Data-Driven Approach - Kopdar 1000 Blogger Nusantara (...
Owning a Great Blog: A Data-Driven Approach - Kopdar 1000 Blogger Nusantara (...Owning a Great Blog: A Data-Driven Approach - Kopdar 1000 Blogger Nusantara (...
Owning a Great Blog: A Data-Driven Approach - Kopdar 1000 Blogger Nusantara (...Vinoaj Vijeyakumaar
 
NTU MBA - Data-Driven Insights - 2011-10-14.ppt
NTU MBA - Data-Driven Insights - 2011-10-14.pptNTU MBA - Data-Driven Insights - 2011-10-14.ppt
NTU MBA - Data-Driven Insights - 2011-10-14.pptVinoaj Vijeyakumaar
 
GTUG Philippines - Implementing Google Analytics - 2011-10-11
GTUG Philippines - Implementing Google Analytics - 2011-10-11GTUG Philippines - Implementing Google Analytics - 2011-10-11
GTUG Philippines - Implementing Google Analytics - 2011-10-11Vinoaj Vijeyakumaar
 
DevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.ppt
DevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.pptDevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.ppt
DevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.pptVinoaj Vijeyakumaar
 
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.ppt
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.pptDevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.ppt
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.pptVinoaj Vijeyakumaar
 
Breakout GoMeasure (sg and kl) - google analytics 101 - clicktrue.ppt
Breakout   GoMeasure (sg and kl) - google analytics 101 - clicktrue.pptBreakout   GoMeasure (sg and kl) - google analytics 101 - clicktrue.ppt
Breakout GoMeasure (sg and kl) - google analytics 101 - clicktrue.pptVinoaj Vijeyakumaar
 
13 GoMeasure (sg) - google analytics certified partner program - timo joste...
13   GoMeasure (sg) - google analytics certified partner program - timo joste...13   GoMeasure (sg) - google analytics certified partner program - timo joste...
13 GoMeasure (sg) - google analytics certified partner program - timo joste...Vinoaj Vijeyakumaar
 
12 GoMeasure (sg and kl) - page speed light speed path to conversions - joh...
12   GoMeasure (sg and kl) - page speed light speed path to conversions - joh...12   GoMeasure (sg and kl) - page speed light speed path to conversions - joh...
12 GoMeasure (sg and kl) - page speed light speed path to conversions - joh...Vinoaj Vijeyakumaar
 
11 GoMeasure (sg and kl) - mobile landing page and site usability tips - ma...
11   GoMeasure (sg and kl) - mobile landing page and site usability tips - ma...11   GoMeasure (sg and kl) - mobile landing page and site usability tips - ma...
11 GoMeasure (sg and kl) - mobile landing page and site usability tips - ma...Vinoaj Vijeyakumaar
 
10 GoMeasure (sg and kl) - designing for conversions - jereme wong - clicktrue
10   GoMeasure (sg and kl) - designing for conversions - jereme wong - clicktrue10   GoMeasure (sg and kl) - designing for conversions - jereme wong - clicktrue
10 GoMeasure (sg and kl) - designing for conversions - jereme wong - clicktrueVinoaj Vijeyakumaar
 

More from Vinoaj Vijeyakumaar (20)

You are Not So Smart: The Data Analyst's Guide
You are Not So Smart: The Data Analyst's GuideYou are Not So Smart: The Data Analyst's Guide
You are Not So Smart: The Data Analyst's Guide
 
2014 10-10 ThinkPerformance Hong Kong - sparkline - Vinoaj Vijeyakumaar
2014 10-10 ThinkPerformance Hong Kong - sparkline - Vinoaj Vijeyakumaar2014 10-10 ThinkPerformance Hong Kong - sparkline - Vinoaj Vijeyakumaar
2014 10-10 ThinkPerformance Hong Kong - sparkline - Vinoaj Vijeyakumaar
 
2014 09-10-12 Building Customer Profiles - Move from clicks to faces
2014 09-10-12 Building Customer Profiles - Move from clicks to faces2014 09-10-12 Building Customer Profiles - Move from clicks to faces
2014 09-10-12 Building Customer Profiles - Move from clicks to faces
 
Multi touch attribution & attribution modeling - GAUC Sydney Melbourne - 2013...
Multi touch attribution & attribution modeling - GAUC Sydney Melbourne - 2013...Multi touch attribution & attribution modeling - GAUC Sydney Melbourne - 2013...
Multi touch attribution & attribution modeling - GAUC Sydney Melbourne - 2013...
 
Overcoming the Seduction of Data - AlphaTerra Digital Marketing Conference - ...
Overcoming the Seduction of Data - AlphaTerra Digital Marketing Conference - ...Overcoming the Seduction of Data - AlphaTerra Digital Marketing Conference - ...
Overcoming the Seduction of Data - AlphaTerra Digital Marketing Conference - ...
 
5 steps to measurement success - gThailand - 2012-10-25
5 steps to measurement success - gThailand - 2012-10-255 steps to measurement success - gThailand - 2012-10-25
5 steps to measurement success - gThailand - 2012-10-25
 
Measuring your way towards a successful application - 2012-10-04 - Google Dev...
Measuring your way towards a successful application - 2012-10-04 - Google Dev...Measuring your way towards a successful application - 2012-10-04 - Google Dev...
Measuring your way towards a successful application - 2012-10-04 - Google Dev...
 
Navigating Uncertainty through Data
Navigating Uncertainty through DataNavigating Uncertainty through Data
Navigating Uncertainty through Data
 
TEDx Johnson & Johnson - Building Great User Experience with Data - 2012-03-27
TEDx Johnson & Johnson - Building Great User Experience with Data - 2012-03-27TEDx Johnson & Johnson - Building Great User Experience with Data - 2012-03-27
TEDx Johnson & Johnson - Building Great User Experience with Data - 2012-03-27
 
WAN-IFRA Digital Media Asia 2011 - Owning Great Content: A Data-Driven Approa...
WAN-IFRA Digital Media Asia 2011 - Owning Great Content: A Data-Driven Approa...WAN-IFRA Digital Media Asia 2011 - Owning Great Content: A Data-Driven Approa...
WAN-IFRA Digital Media Asia 2011 - Owning Great Content: A Data-Driven Approa...
 
Owning a Great Blog: A Data-Driven Approach - Kopdar 1000 Blogger Nusantara (...
Owning a Great Blog: A Data-Driven Approach - Kopdar 1000 Blogger Nusantara (...Owning a Great Blog: A Data-Driven Approach - Kopdar 1000 Blogger Nusantara (...
Owning a Great Blog: A Data-Driven Approach - Kopdar 1000 Blogger Nusantara (...
 
NTU MBA - Data-Driven Insights - 2011-10-14.ppt
NTU MBA - Data-Driven Insights - 2011-10-14.pptNTU MBA - Data-Driven Insights - 2011-10-14.ppt
NTU MBA - Data-Driven Insights - 2011-10-14.ppt
 
GTUG Philippines - Implementing Google Analytics - 2011-10-11
GTUG Philippines - Implementing Google Analytics - 2011-10-11GTUG Philippines - Implementing Google Analytics - 2011-10-11
GTUG Philippines - Implementing Google Analytics - 2011-10-11
 
DevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.ppt
DevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.pptDevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.ppt
DevFest Kuala Lumpur - Implementing Google Analytics - 2011-09-29.ppt
 
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.ppt
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.pptDevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.ppt
DevFest Chiang Mai - Implementing Google Analytics - 2011-09-24.ppt
 
Breakout GoMeasure (sg and kl) - google analytics 101 - clicktrue.ppt
Breakout   GoMeasure (sg and kl) - google analytics 101 - clicktrue.pptBreakout   GoMeasure (sg and kl) - google analytics 101 - clicktrue.ppt
Breakout GoMeasure (sg and kl) - google analytics 101 - clicktrue.ppt
 
13 GoMeasure (sg) - google analytics certified partner program - timo joste...
13   GoMeasure (sg) - google analytics certified partner program - timo joste...13   GoMeasure (sg) - google analytics certified partner program - timo joste...
13 GoMeasure (sg) - google analytics certified partner program - timo joste...
 
12 GoMeasure (sg and kl) - page speed light speed path to conversions - joh...
12   GoMeasure (sg and kl) - page speed light speed path to conversions - joh...12   GoMeasure (sg and kl) - page speed light speed path to conversions - joh...
12 GoMeasure (sg and kl) - page speed light speed path to conversions - joh...
 
11 GoMeasure (sg and kl) - mobile landing page and site usability tips - ma...
11   GoMeasure (sg and kl) - mobile landing page and site usability tips - ma...11   GoMeasure (sg and kl) - mobile landing page and site usability tips - ma...
11 GoMeasure (sg and kl) - mobile landing page and site usability tips - ma...
 
10 GoMeasure (sg and kl) - designing for conversions - jereme wong - clicktrue
10   GoMeasure (sg and kl) - designing for conversions - jereme wong - clicktrue10   GoMeasure (sg and kl) - designing for conversions - jereme wong - clicktrue
10 GoMeasure (sg and kl) - designing for conversions - jereme wong - clicktrue
 

Recently uploaded

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
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
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
 
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
 
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
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
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
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 

Recently uploaded (20)

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
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
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
 
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
 
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
 
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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
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
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
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
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
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
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 

RIAction Social Applications in the Cloud 20090226

  • 1. Gadgets and Social Applications With OpenSocial Vinoaj Vijeyakumaar Customer Solutions Engineer Google Southeast Asia http://friendfeed.com/vinoaj 1 Google Confidential and Proprietary
  • 2. What 2 Google Confidential and Proprietary
  • 4. Gadgets and OpenSocial Applications Websites within websites 4
  • 5. Gadgets and OpenSocial Applications http://www.orkut.com/Main#Application.aspx?appId=43931632273 5
  • 6. Why 6 Google Confidential and Proprietary
  • 7. Reach your Audience Directly SEM SEO Your Content 7
  • 8. Gadgets & OpenSocial <3 RIAs Consistent look and feel across networks Rapid deployment Fluid interfaces Enhanced user experience 8
  • 9. How 9 Google Confidential and Proprietary
  • 10. Where do I put it? I’ve built my RIA … … I’ve wrapped it into a Gadget, an OpenSocial app, a widget … … now where do I put it? 10
  • 11. Option 1: iGoogle Established user-base Sandbox supports OpenSocial 11
  • 12. Option 2: Gadget Ads Rich Media Ad Format Take your content out to where your users are actively engaged Interaction Tracking 12
  • 14. OpenSocial 14 Google Confidential and Proprietary
  • 15. 15
  • 16. OpenSocial Containers friendster ®
  • 17. Large Reach … and more to come!
  • 18. Popular SEA OpenSocial “containers” Thailand Vietnam Hi5 Yahoo!360 Philippines imeem Hi5 Friendster imeem Malaysia Friendster MySpace imeem Indonesia Singapore Friendster Friendster imeem imeem Orkut
  • 19. Significant APAC containers China • Xiaonei • 51.com • Tianya • MySpace CN India • Orkut 19
  • 20. Getting Started with OpenSocial 20 Google Confidential and Proprietary
  • 21. First Stop OpenSocial.org Also a social network (surprise surprise!) 21
  • 22. A day in the life of a social app developer 22
  • 23. A day in the life of a social app developer 23
  • 24. A day in the life of a social app developer 24
  • 25. A day in the life of a social app developer 25
  • 26. A day in the life of a social app developer 26
  • 27. Gadgets 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. 27
  • 28. Gadgets 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> 28
  • 29. Gadgets JavaScript utility functions for gadgets: •gadgets.io.makeRequest() Make cross-domain AJAX calls to remote servers. •gadgets.json.parse() and gadgets.json.stringify() Native JSON support. •gadgets.util.escapeString() Make text safe for display via innerHTML. •gadgets.util.registerOnLoadHandler() Execute code when the page is finished loading. 29
  • 30. Gadgets Add extra features to your gadget: • dynamic-height - Change the size of your gadget in the container. • views - Navigate between different surfaces of the container. • skins - Make your gadget change its styles to match the container. • Containers may offer custom features... <?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[ ... ]]> </Content> </Module> 30
  • 31. Gadgets <?xml version=quot;1.0quot; encoding=quot;UTF-8quot; ?> <Module> <ModulePrefs title=quot;Hello Social!quot;> <Require feature=quot;opensocial-0.8quot; /> </ModulePrefs> <Content type=quot;htmlquot;> <![CDATA[ ... ]]> </Content> </Module> The OpenSocial JavaScript API is a gadget feature, too! 31
  • 32. The OpenSocial JavaScript API “It's people!” 32
  • 33. The OpenSocial JavaScript API Representing users: • Client-side, users must work with the VIEWER and the OWNER. 33
  • 34. The OpenSocial JavaScript API Multiple personalities: • When you visit your own profile, you are both the VIEWER and the OWNER. 34
  • 35. The OpenSocial JavaScript API Working with people: • opensocial.Person - JavaScript representation of a user. 35
  • 36. The OpenSocial JavaScript API An OpenSocial Person's fields: • • SEXUAL_ORIENTATION JOB_INTERESTS • ABOUT_ME • • SMOKER JOBS • ACTIVITIES • • SPORTS LANGUAGES_SPOKEN • ADDRESSES • • STATUS LIVING_ARRANGEMENT • AGE • • TAGS LOOKING_FOR • BODY_TYPE • • THUMBNAIL_URL MOVIES • BOOKS • • TIME_ZONE MUSIC • CARS • • TURN_OFFS NAME • CHILDREN • • TURN_ONS NETWORK_PRESENCE • CURRENT_LOCATION • • TV_SHOWS NICKNAME • DATE_OF_BIRTH • • URLS PETS • DRINKER • PHONE_NUMBERS • EMAILS • POLITICAL_VIEWS • ETHNICITY • PROFILE_SONG • FASHION • PROFILE_URL • FOOD • PROFILE_VIDEO • GENDER • QUOTES • HAPPIEST_WHEN • RELATIONSHIP_STATUS • HAS_APP • RELIGION • HEROES • ROMANCE • HUMORID • SCARED_OF • INTERESTS • SCHOOLS 36
  • 37. The OpenSocial JavaScript API Working with people: • A Collection represents many opensocial.Person objects. 37
  • 38. The OpenSocial JavaScript API Working with data: • Persistent data gives apps key, value storage directly on the container. • String only, but conversion to JSON allows for storage of complex objects. • Storage per app per user - scales well with growth. • Ideal for settings, customizations. 38
  • 39. The OpenSocial JavaScript API Working with activities: • API to post information about what users are doing with your app. • Many containers have support for images and some HTML. • Channel to grow your application. orkut MySpace hi5 39
  • 40. The OpenSocial JavaScript API Post an activity: function postActivity(text) { var params = {}; params[opensocial.Activity.Field.TITLE] = text; var activity = opensocial.newActivity(params); opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, callback); }; • Assign the activity text to the TITLE field. • Call opensocial.newActivity() to create a new Activity instance. • Call opensocial.requestCreateActivity() to post the activity to the container. 40
  • 41. RESTful and RPC protocols Servers talking to servers 41
  • 42. RESTful and RPC protocols Opens new development models •Background processing. •Easier Flash integration. •Mobile applications. 42
  • 43. RESTful and RPC protocols Communication methods: • RESTful (Representational State Transfer) • RPC (Remote Procedure Call) Formats: • XML • JSON • AtomPub 43
  • 44. 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 44
  • 45. 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} 45
  • 46. 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> 46
  • 47. RESTful and RPC protocols Authentication: • Both protocols use OAuth to identify users and apps. • Depending on what the application needs to do, it can use two-legged or three-legged OAuth. 47
  • 48. OpenSocial Tools What sets us apart from the animals 48
  • 49. Shindig Writing a gadget server is difficult: • Fast changing API - hard to keep up. • Standardization is hard to get right. • Costs $ / ¥ / 元 ! 49
  • 50. OpenSocial Dev App Development tool to test out JS code in different containers http://osda.appspot.com 50
  • 51. Client Libraries •OpenSocial PHP Client Library •OpenSocial Java Client Library •OpenSocial Ruby Client Library •OpenSocial Python Client Library 51
  • 52. “But I didn’t show up today to deal with PHP, Java, Python or Ruby” 52
  • 53. ActionScript Client Library (beta) • http://opensocial-resources-zh.googlecode.com/svn/trunk/opensocial- actionscript-client/0.8/doc/index.html 53
  • 54. 54
  • 55. Challenges Nobody said this was going to be easy 55
  • 56. Challenges Cross container development is still tricky: • Containers may not follow the standard. • Containers may follow the standard but have different policies. • Follow best practices: http://tinyurl.com/4nuzll 56
  • 57. Challenges No central directory • Hard for apps to spread to many containers. • Apps need to work with different install processes. • Directory approval requirements vary from container to container. 57
  • 58. Challenges Scaling is hard: • Easy to start and get some users. 58
  • 59. Challenges Scaling is hard: • Being popular on one social network can push your server to the limit... 59
  • 60. Scaling is hard: •...being popular on many networks will push you right over. 60
  • 61. Help solve these problems •OpenSocial is Open •Get involved with the community at opensocial.org •Help shape the Open & Social Web 61
  • 62. Resources 62
  • 63. Resources • OpenSocial Tutorial: http://rurl.org/ss3 • OpenSocial Spec, Foundation, Reference: http://opensocial.org • Caja: http://code.google.com/p/google-caja/ • Shindig: http://incubator.apache.org/shindig/ • OpenSocial Across Containers video: http://tinyurl.com/4nuzll • OpenSocial Templates: http://ostemplates-demo.appspot.com/ • OpenSocial Dev App: http://osda.appspot.com • Partuza: http://partuza.nl • OpenSocial Specification Proposals: http://groups.google.com/group/opensocial-and-gadgets-spec/topics 63