ajaxworld opensocial presentation

41

Post on 13-Sep-2014

6.578 views

Category:

Technology


0 download

DESCRIPTION

The presentation I gave at AjaxWorld East.

TRANSCRIPT

Page 1: Ajaxworld Opensocial Presentation
Page 2: Ajaxworld Opensocial Presentation

Introducing OpenSocial

“Building Social Ajax applications with OpenSocial”

Chris Schalk

Developer AdvocateGoogle

Page 3: Ajaxworld Opensocial Presentation

3

Agenda

• What is OpenSocial and Why is it important?

• A Technical Overview of OpenSocial• JavaScript APIs• Container Software - Shindig• REST APIs

• Where to find more information on OpenSocial

Page 4: Ajaxworld Opensocial Presentation

4

Agenda

• What is OpenSocial and Why is it important?

• A Technical Overview of OpenSocial• JavaScript APIs• Container Software - Shindig• REST APIs

• Where to find more information on OpenSocial

Page 5: Ajaxworld Opensocial Presentation

5

What is OpenSocial?

• OpenSocial is a set of common APIs for building social applications across the web

• It is being developed by Google in conjunction with partners from the Web/Social Application development community

Page 6: Ajaxworld Opensocial Presentation

6

Why OpenSocial is Important?

• The Web is better when its social

• Isn’t the Web social already?

• 100s of millions of users already have signed up for social networks around the world

• That’s great, but we believe it can get better

Page 7: Ajaxworld Opensocial Presentation

7

The problem of social network development

“.. But what if you want to build an application that will run on multiple social websites?”

• Problem: Developers have to learn multiple APIs to publish in multiple environments

• Solution: OpenSocial allows developers to write applications to a common standard API that will run on multiple websites!

• As each social website opens its environment to developers, it exposes an API

Page 8: Ajaxworld Opensocial Presentation

8

OpenSocial solves this problem

Page 9: Ajaxworld Opensocial Presentation

9

OpenSocial solves this problem

Page 10: Ajaxworld Opensocial Presentation

10

What can OpenSocial do for the Web?

• It’s about more, more, more • More applications can be built by developers• More websites can run these applications• More users can use these applications

For Web developers this equates to distribution, distribution, distribution!

Page 11: Ajaxworld Opensocial Presentation

11

OpenSocial is not GoogleSocial

• The evolution of OpenSocial…

“It is about working with open standards and open partners in a collaborative fashion to build the best technology”

Page 12: Ajaxworld Opensocial Presentation

12

OpenSocial in the US

Pictures of hackerthon

Partner Hackathon at SixApart in San Francisco

Pictures of container meeting

Numerous Hackathons held both at Google and at Partners sites

On Site Google Hackathons

– We supplied Power, Wifi, & Pizza!

Page 13: Ajaxworld Opensocial Presentation

13

OpenSocial in Japan

Pictures of hackerthon

関連ドキュメントの

日本語化を検討中

Pictures of container meeting

世界でも最も Social Site が成功している国の一つ

パートナーのオンライン /

オフラインの参加をサポート– ハッカーソン

– OpenSocial Container Provider Meeting

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Page 14: Ajaxworld Opensocial Presentation

14

OpenSocial in India

Pictures of hackerthon

Hacking in Delhi

Pictures of container meeting

Did a multi-city tour in Fall 07 - introducing OpenSocial

Kicking off Hackathon in Bangalore

– OpenSocial Container Provider Meeting

Page 15: Ajaxworld Opensocial Presentation

15

Who’s working on OpenSocial?

Over 200 other influential companies…

amiandoAnimotoAppirioBeboBleacher ReportBonstioNetBrad AndersonBunchball, IncBuyFastCardinal Blue SoftwareChakpakChronus CorporationCi&T Inccome2play

CurrentTVE-junkieEngage.comeTwine Holdings, Inc.Fendoo LtdFlixsterFotoFlexerFriendsterGrimmthethingGuerreiro ConsultHedgeStop.comHi5

Hungry MachineHyvesIG.com (Division of Brasil Telecom)iFamily, InciLikeImeemIndeed.comKlickSports, Inc.LabPixies Ltd.LimitNoneLinkedInLjmSite

LoveMyGadgetsLuvGoogleGadgetsMesa Dynamics, LLCMixiMuseStorm IncMySpaceNetvibesNewsGatorNikeNingNY TimesShelfari

O Globo OnlineOberon MediaOracleOrkutOutside.InPayPalPlaxoPROTRADEPuxaQloudRockYouSalesforce.com …

Page 16: Ajaxworld Opensocial Presentation

16

OpenSocial is not just for friends

• There is an untapped Enterprise potential • Instead of friends just sharing photos, messages business partners can interact via social networks

• Google is now partnering with many influential business application providers

Page 17: Ajaxworld Opensocial Presentation

17

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 officially launching “very soon”

Page 18: Ajaxworld Opensocial Presentation

18

Gartner Technology Hype curve

Case Study: OpenSocialCase Study: OpenSocial

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 19: Ajaxworld Opensocial Presentation

19

OpenSocial Roadmap a la the “Hype curve”

Case Study: OpenSocialCase Study: OpenSocial

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 20: Ajaxworld Opensocial Presentation

20

Agenda

• What is OpenSocial and Why is it important?

• A Technical Overview of OpenSocial• JavaScript APIs• Container Software - Shindig• REST APIs

• Where to find more information on OpenSocial

Page 21: Ajaxworld Opensocial Presentation

21

OpenSocial APIs overview

• People and Friends Data API Access friends information programmatically • Activities Data API See what you’re friends are up to Share what you are doing

• Persistence Data APIShare data with your friends, the world

The core OpenSocial services include:

Page 22: Ajaxworld Opensocial Presentation

22

OpenSocial APIs overview

• Gadgets Core Utilities handling gadget preferences, IO, JSON • Gadgets Feature-Specific Utilities for working with flash, window management, tabs, rpc, MiniMessage

Additional Gadgets services include:

Page 23: Ajaxworld Opensocial Presentation

23

Core Services - People & Friends

/*** Request for friend info when the page loads.*/

function getData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest(VIEWER), 'viewer'); req.add(req.newFetchPeopleRequest(VIEWER_FRIENDS), 'viewerFriends'); req.send(onLoadFriends);};

Getting info on you and your friends:

Page 24: Ajaxworld Opensocial Presentation

24

Core Services - People

/*** Callback function for returned friend data.*/

function onLoadFriends(response) { var viewer = response.get('viewer').getData(); var html = 'Friends of ' + viewer.getDisplayName() + ‘:<br><ul>’; var viewerFriends = response.get('viewerFriends').getData(); viewerFriends.each(function(person) { html += '<li>' + person.getDisplayName() + '</li>';}); html += '</ul>'; document.getElementById('message').innerHTML = html;};

Getting info on you and your friends:

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Generated output:

Page 25: Ajaxworld Opensocial Presentation

25

Core Services - Activities

/*** Posting a simple text activity*/

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

postActivity("This is a sample activity, created at " + new Date().toString());

Posting an Activity:

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Activities in Orkut:

Page 26: Ajaxworld Opensocial Presentation

26

Core Services - Persistence

/*** Storing data*/function populateMyAppData() { var req = opensocial.newDataRequest(); var data1 = Math.random() * 5; var data2 = Math.random() * 100;

req.add(req.newUpdatePersonAppDataRequest("VIEWER", "AppField1", data1)); req.add(req.newUpdatePersonAppDataRequest("VIEWER", "AppField2", data2)); req.send(requestMyData);};

Requesting to persist data:

Page 27: Ajaxworld Opensocial Presentation

27

Core Services - Persistence

/** * Fetching data*/function requestMyData() { var req = opensocial.newDataRequest(); var fields = ["AppField1", "AppField2"]; req.add(req.newFetchPersonRequest( opensocial.DataRequest.PersonId.VIEWER), "viewer"); req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data"); req.send(handleReturnedData);}

Requesting to persist data:

Page 28: Ajaxworld Opensocial Presentation

28

Core Services - Persistence

/*** Displaying persisted data*/function handleReturnedData(data) { var mydata = data.get("viewer_data"); var viewer = data.get("viewer"); me = viewer.getData(); // me is global var var data = mydata[me.getId()];

htmlout += "AppField1: " + data["AppField1"] + "<br/>"; htmlout += "AppField2: " + data["AppField2"] + "<br/>"; var div = document.getElementById('content_div'); div.innerHTML = htmlout;}

Displaying the fetched (persisted) data:

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Generated output:

Page 29: Ajaxworld Opensocial Presentation

29

Demonstration

• Building some simple OpenSocial apps in Orkut• Displaying your friends

• Reviewing other OpenSocial applications

Page 30: Ajaxworld Opensocial Presentation

30

Agenda

• What is OpenSocial and Why is it important?

• A Technical Overview of OpenSocial• JavaScript APIs• Container Software - Shindig• REST APIs

• Where to find more information on OpenSocial

Page 31: Ajaxworld Opensocial Presentation

31

OpenSocial’s Container - Shindig

• What is Shindig?• “OpenSource software that allows you to serve OpenSocial

applications”

• Is currently an Apache Software Incubator project• Heavy partner involvement: Ning championed• Open source reference implementation of OpenSocial & Gadgets technologies

• It’s Goal: “To serve as an easy to use OpenSocial “container in a box”

Page 32: Ajaxworld Opensocial Presentation

32

Shindig Components

ShindigShindig

Gadget ServerGadget Server

Gadget Container Gadget Container JavaScriptJavaScript

OpenSocial Container JavaScript

Gadget Rendering ServletGadget Rendering Servlet

• Gadget Server• Renders gadget XML (i.e. from gmodules.com)• Gadget Container JavaScript

• OpenSocial Container JavaScript

• JavaScript environment for people, activities, persistence

•OpenSocial Gateway Server• WIP!

Page 33: Ajaxworld Opensocial Presentation

33

Shindig in Action

Gadget XML SourceGadget XML Source

Running the application Request is made from Client Data is returned and rendered

Application Installation Gadget XML is loaded and cached on OpenSocial Container

Page 34: Ajaxworld Opensocial Presentation

34

Demonstration

• Checking out the Shindig website

• Running and Debugging Shindig from Eclipse

• Trying out the SampleContainer

Page 35: Ajaxworld Opensocial Presentation

35

Agenda

• What is OpenSocial and Why is it important?

• A Technical Overview of OpenSocial• JavaScript APIs• Container Software - Shindig• REST APIs

• Where to find more information on OpenSocial

Page 36: Ajaxworld Opensocial Presentation

36

OpenSocial’s REST APIs

• Why are REST APIs needed?• “What if you don’t have a JavaScript environment?”

• Progress is now being made on the specification for OpenSocial REST APIs!

• A new proposal is been published• Posted in “opensocial-and-gadgets-spec” Google Group

• Currently receiving feedback

Page 37: Ajaxworld Opensocial Presentation

37

With REST APIs OpenSocial can go Mobile!

• The OpenSocial Mobile environment potential is obviously huge • Since OpenSocial based on common Web standards programming is straightforward

• HTML/JavaScript• Flash/Flash Lite • REST APIs (Upcoming)

Page 38: Ajaxworld Opensocial Presentation

38

With REST APIs OpenSocial can go Mobile!

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Page 39: Ajaxworld Opensocial Presentation

39

Agenda

• What is OpenSocial and Why is it important?

• A Technical Overview of OpenSocial• JavaScript APIs• Container Software - Shindig• REST APIs

• Where to find more information on OpenSocial

Page 40: Ajaxworld Opensocial Presentation

40

Where to find more info on OpenSocial

• OpenSocial APIs• code.google.com/opensocial• code.google.com/p/opensocial-resources

• Shindig• incubator.apache.org/shindig

(Me) [email protected]

Page 41: Ajaxworld Opensocial Presentation

41

Questions?