Click here to load reader
View
15.750
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Updates about the OpenSocial ecosystem at Google developer days London including presentations from Netlog and Viadeo.OpenSocial is an open specification defining a common API that works on many different social websites, including MySpace, Plaxo, Hi5, Ning, orkut, Friendster Salesforce.com and LinkedIn, among others. This allows developers to learn one API, then write a social application for any of those sites: Learn once, write anywhere.In addition, in order to make it easier for developers of social sites to implement the API and make their site an OpenSocial container, the Apache project Shindig provides reference implementations for OpenSocial containers in two languages (Java, PHP). Shindig will define a language specific Service Provider Interface (SPI) that a social site can implement to connect Shindig to People, Persistence and Activities backend services for the social site. Shindig will then expose these services as OpenSocial JavaScript and REST APIs.In this session we will explain what OpenSocial is, show examples of OpenSocial containers and applications, demonstrate how to create an OpenSocial application, and explain how to leverage Apache Shindig in order to implement an OpenSocial container.
Citation preview
OpenSocial ecosystem updatesPatrick ChanezonChris ChabotChewy Trewhella
9/16/2008
Agenda
OpenSocial introductionHow to build OpenSocial applicationsHosting social applicationsSocial applications monetization OpenSocial container demosBecoming an OpenSocial containerKinds of ContainersGoogle Friend ConnectSummary
OpenSocial IntroductionPatrick Chanezon
Making the web betterby making it social
What does social mean?
What does Social mean?
Eliette what do you do with your friends?
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
Raoul: a social object for Charlotte (3 year old)
Jaiku’s Jyri Engeström's 5 rules for social networks: social objects
1. What is your object?
2. What are your verbs?
3. How can people share the objects?
4. What is the gift in the invitation?
5. Are you charging the publishers or the spectators?
http://tinyurl.com/yus8gw
How do we socialize objects online
without having to create yet another social network?
OpenSocial
A common API for social applications across multiple web sites
The Trouble with Developing Social Apps
Which site do I build my app for?
Let’s work on that…
Using OpenSocial, I can build apps for all of these sites!
What’s offered by OpenSocial?
ActivitiesWhat are people up to on the web
People/Profile InfoWho do I know, etc.
Persistent datastoreHandles key/value pairs
Today: 375 Million User Reach
Where is OpenSocial live today?
Live to Users:MySpaceorkutHi5FreebarFriendsterWebon from LycosIDtailYiQiNetlog - New!Hyves - New!
Live Developer Sandboxes:iGoogleimeemCityINTianyaNingPlaxo PulseMail.ru
Individual Developer Links: http://code.google.com/apis/opensocial/gettingstared.html
OpenSocial “Containers”
What’s in OpenSocial?
JavaScript API - Now
REST Protocol - New
Templates - Prototype in Shindig
OpenSocial’s JavaScript API
OpenSocial JS APIGadget JS APIGadget XML schema
OpenSocial v0.7 is liveOpenSocial v0.8 is being deployed now
Specs and release notes: http://opensocial.org
OpenSocial’s REST Protocol
Access social data without JavaScriptWorks on 3rd party websites / phones / etcUses OAuth to allow secure accessOpen source client libraries in development
Java, PHP, Python, <your fav language here>
Being deployed with OpenSocial v0.8
Spec’s available at http://opensocial.org
OpenSocial Templates
Writing JavaScript is hardWriting templates is easyTemplates also give
Consistent UI across containersEasy way to localizeMore interesting content options when inlining into container (activities, profile views)Ability to serve millions of dynamic pages per day without a server
Try out templates today!
Samples and docs:http://ostemplates-demo.appspot.comSample app:http://ostemplates-demo.appspot.com/friends.htmlDiscussion group:http://tech.groups.yahoo.com/group/os-templates/Code is all in Shindig, can download, use, and even submit patches to improveSo…
Get involved and provide comments, andBuild some apps
OpenSocial is what you make it.
OpenSocial is an open source project.The spec is controlled by the community.Anyone can contribute and have a voice.http://groups.google.com/group/opensocial/
“OpenSocial and Gadgets spec” subgroup
OpenSocial FoundationGet involved to nominate and elect board repshttp://www.opensocial.org/opensocial-foundation/
A note on compliance
OpenSocial is designed for many sites
Building an app:TechnologyPolicy
OpenSocial Compliance Tests http://code.google.com/p/opensocial-resources/wiki/ComplianceTests
OpenSocial Compliance test in orkut
OpenSocial Compliance Matrix
http://opensocial-compliance.appspot.com
Other comments
Portable Contacts Alignment
Caja for JavaScript security
A standard for everyone
This work by Eliette Chanezon is licensed under a Creative Commons Attribution-Share Alike 3.0 License
How To Build OpenSocial Applications
People & Friends ExampleRequesting friend Info
function getFriendData() { var req = opensocial.newDataRequest(); req.add( req.newFetchPersonRequest(VIEWER), 'viewer'); req.add( req.newFetchPeopleRequest(VIEWER_FRIENDS), 'viewerFriends'); req.send(onLoadFriends);}
People & Friends Example
function onLoadFriends(resp) { var viewer = resp.get('viewer').getData(); var viewerFriends = resp.get('viewerFriends').getData(); var html = 'Friends of ' + viewer.getDisplayName() + ‘:<br><ul>’; viewerFriends.each(function(person) { html += '<li>' + person.getDisplayName()+'</li>';}); html += '</ul>'; document.getElementById('friends').innerHTML += html;}
Callback function for returned friend data
Activities Example
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
Persistence Example
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);}
Persisting data
Persistence Example
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);}
Fetching persisted data
Persistence Example
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 fetched (persisted) data
Resources For Application DevelopersSpecificationhttp://opensocial.org/http://groups.google.com/group/opensocial-and-gadgets-spec
Code Samples and Toolshttp://code.google.com/opensocialhttp://code.google.com/p/opensocial-resources/
Sandboxeshttp://developer.myspace.com/http://www.hi5networks.com/developer/http://opensocial.ning.com/http://code.google.com/apis/orkut/http://code.google.com/apis/igoogle/http://en.netlog.com/go/developer/opensocial
Hosting social apps Patrick Chanezon
Hosting OpenSocial apps
Establish a "home" site where gadget can phone home to retrieve, post data
Can host home site on your own, or use services:Amazon EC2JoyentGoogle AppEngine
Zembly: is the world's first cloud-based development environment for social apps. Full OpenSocial support
In addition to using the provided persistence API...
Google AppEngine and OpenSocial
Create an App Engine app as your backend!Use makeRequest() to call back to your AppEngine serverUtilize AppEngine's datastore
New OpenSocial Apps are coming onlineBuddyPoke,
Checkout Lane Liabraaten’s OpenSocial-AppEngine integration article
http://code.google.com/apis/opensocial/articles/appengine.html
Google IO Code Lab about OpenSocial Apps in the Cloud
Social Apps monetization Patrick Chanezon
OpenSocial MonetizationAds from Ad Networks
AdSense, RightMediaBuddyPoke, Rate My Friend
Brand/Private Label App Sony Ericsson MTV Roadies app on orkut
Sell virtual or real goodsFree -> FreemiumReferralsVirtual currency
Success Story: Buddy Poke
#1 OpenSocial app on orkut8M installs for orkut, hi5, MySpace$1-2 CPM#1 App for App Engine w/ millions daily PV
Success Story: PhotoBuzz
6M+ installs on hi5 and orkutCPM $1-3, especially good on orkut4M buzzes per daySmall team of 4 people, profitable
Container demos
HyvesReinoud Elhorst
What is Hyves?
4 years old
6 million+ Dutch members
5 billion pageviews/month
51.6% reach/month 13+, 75.6% 13-34
Social networking service
OpenSocial on Hyves
Launching OpenSocial today
OS 0.7, working on 0.8 release
(traditional) API intergration
Gadget gallery waiting for good apps to be featured
Contact [email protected]
Gadget gallery
Profile view
Homepage view
Canvas view
Thanks for your attention
Reinoud, Derk, Youri, Marijn, Frank & Yme are here today if you have any questions
Contact [email protected] for inclusion in the Gadget Gallery
http://trac.hyves-api.nl/hyves-api/wiki/opensocial
NetlogPieter De SchepperToon CoppensFolke Lemaitre
What is Netlog?
Your Profile
Friend Activity
Communication: Shouts
Communication: Private messaging
Communication: Chat
Homepage
Explore
How are we doing?
Català中文
česky
Dansk
Nederlands
English
Eesti
suomifrançai
s
DeutschItaliano
Lietuvių kalba
Norsk (bokmål)
Polski
PortuguêsRomână
Русский
slovenščina
Español
Svenska
TürkçeAfrikaan
s
български
Hrvatski
Magyar
Latviešu valoda
Slovenčina
More than 35,000,000 unique membersMore than 6,000,000,000 pageviews/Month23 languages and alot more coming!
Applications
Canvas view
Profile view
Home View (available soon!)
Application directory
User Profiles
Activity logs
Share with your friends
Requirements
Whitelisting Requirements
an application should be fully integratedno external login should be needed...no external links
no ads in “profile” viewno spamming through activities/requestslocalised & translated
We can help you!
Localization
Seemless translation
Localisation is important!
Translations are automatically injected
Translation tool for Netlog translators
Monetization
What’s in it for you?
Branding, co-branding, sponsorships
100% revenue from vertical rectangle or skyscraper on your application page
Credit economy with Netlog OpenSocial extension
charge credits for app installationcharge credits for certain featurescharge credits for buying itemscharge credits for...
Credit Economy
Questions?
Developer pages:http://en.netlog.com/go/developer/
OpenSocial sandbox:http://en.netlog.com/go/developer/opensocial/sandbox=1
ViadeoAriel Messias
Becoming an OpenSocial Container Chris Chabot
Google Dev DayOpenSocial
London 08/09/16
Social NetworkBusiness ToolCareer Management
© viadeo – septembre 2008
A few words about Viadeo
What to offer to Viadeo’s members
(Sandbox presentation)
Agenda
Viadeo
3 groups of Use : Social Network, Business ToolCareer Management
5 +m Members mainly :EuropeChina
Strong activity7, 000 new members/day10, 000 connections/day+120, 000 consulted profiles/day1,3 M hubs registration
France
1.8m members(1)
350k members(1)
2.2m members(1)
China
(1) end of August 2008300k members(1)
Italy
150 k members(1)
UK/Ireland100k members(1)
Belgium
Spain/Portugal
International Footprint : 5+m Members
Other European countries
150K members(1)
Switzerland
50K members(1)
What to offer to Viadeo’s Members
7 languages (European + China)
Professional oriented
Mainly “A Level” profiles
Split by Industry
Members with High Revenues => Strong capabilities of monetization
Vertical Apps ?
Members split by industry
“A Level” priority targets ?
High qualification of Viadeo’s members
Apps for Professional Social Network…
Helping to :
Find Customers / Partners / Suppliers
Organize Meetings/Events
Share information and expertise
But also ...
Get headhunted…
…and recruit
Etc…
Becoming an OpenSocial Container
Question: How do you become an OpenSocial container?
Answer: The Apache incubator project “Shindig” serves this purpose!
What is Shindig ?
Open source reference implementation of OpenSocial & Gadgets specificationAn Apache Software Incubator projectAvailable in Java & PHP http://incubator.apache.org/shindig
It’s Goal: “Shindig's goal is to allow new sites to start hosting social apps in under an hour's worth of work"
Introduction to Shindig ArchitectureGadget ServerSocial Data Server Gadget Container JavaScript
Gadget Server
Social Server
Social Server - RESTful APIPreview available on
iGoogleOrkutHi5
New development modelsServer to server & Mobile!
Try it out:curl http://localhost:8080/social/rest/people/john.doe/@all
Implementing Shindig - Data sourcesIntegrate with your own data sources
People ServiceActivities ServiceApp Data Service
class MyPeopleService implements PeopleService {...}
class MyAppDataService implements AppDataService {...}
class MyActivitiesService implements ActivitiesService {... }
Implementing Shindig - Data sourcesImplement functions
function getActivities($ids) { $activities = array(); $res = mysqli_query($this->db, ”SELECT…"); while ($row = @mysqli_fetch_array($res, MYSQLI_ASSOC)) { $activity = new Activity($row['activityId'], $row['personId']); $activity->setStreamTitle($row['activityStream']); $activity->setTitle($row['activityTitle']); $activity->setBody($row['activityBody']); $activity->setPostedTime($row['created']); $activities[] = $activity; } return $activities;}
Implementing - Make it a platformAdd UI Elements
App GalleryApp CanvasApp InvitesNotification Browser
Developer ResourcesDeveloper ConsoleApplication Gallery
Scale it Out!
Implementing - Scale it Out!Prevent Concurrency issuesReduce LatencyAdd CachingAdd more caching!Pre-populate Cache
Usage Example: Sample ContainerStatic html sample containerNo effort to get up and runningNo database or features
Usage Example: PartuzaPartuza is a Example social network site, written in PHPAllows for local gadget development & testing tooUse as inspiration (or copy) for creating your own social sitehttp://code.google.com/p/partuza
OpenSocial for intranet, portalsSun Microsystems
Socialsite: Shindig + gadget based UI written in JavaOpen Source https://socialsite.dev.java.net/
Upcoming from Impetus
Zest: Shindig + Drupal (PHP)Zeal: Shindig + Liferay (Java)
SummaryBecome an OpenSocial Container
Get Shindig (PHP or Java)Look at examples & documentationImplement ServicesAdd UIScale it out
Resources & Links:
http://www.chabotc.com/gdd/
Kinds of ContainersKevin Marks
Not just Social Network Sites
Social network sites - Profiles and home pagesPersonal dashboardsSites based around a Social ObjectCorporate CRM systemsAny web site
How do we abstract these out?
Viewer + friendsOwner + friends
The Viewer and Viewer friends
Owner and Owner friends
Owner and Viewerare defined by Container
The Application gets IDs and connections to other IDs
the Owner need not be a PersonIt could be an organisation
or a social object
Kinds of container - Social network sites
Profile pagesOwner is profile page ownerViewer may not be known, may be owner or other member
Home pagesOwner is Viewer (must be logged in to see)
ExamplesMySpaceHi5Orkut
Kinds of container - Personal dashboard
like Home pagesOwner is Viewer (must be logged in to see)
Friends may not be definedExample:
iGoogle, My Yahoo
Kinds of container - Social Object site
Pages reflect the object - movie, picture, productOwner is the objectOwner friends are people connected to the object
may be authors or fansViewer is looking at it, Viewer friends are people you may want to share with
Example:Imeem is a bit like this - opportunity for sites like Flickr, YouTube
Kinds of container - CRM systems
Pages reflect the customer Owner is the customerOwner friends are people connected to the customer
may be your colleagues, or other customersViewer is you, Viewer friends are your colleagues or customers
Example:Oracle CRM, Salesforce
Kinds of container - Any web site
Owner is the site
Owner friends are site usersViewer is you,
Viewer friends are your friends who have visited this siteExample:
Google Friend Connect will enable this for any site
What is Friend Connect?Allows any site to become an OpenSocial container by simply
copying a few snippets of code into your site
http://www.google.com/friendconnect/
Friend Connect gives ...
Users... more ways to do more things with my friends
Site owners... more (and more engaged) traffic for my site
App developers... more reach for my apps
and ... make it easy
Learn more
code.google.com
Q & A