Updates about the OpenSocial ecosystem at Google developer days Munich, including presentations from Xing, Lokalisten, 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.
3. Agenda
OpenSocial introduction
How to build OpenSocial applications
Hosting social applications
Social applications monetization
OpenSocial container demos
Becoming an OpenSocial container
Google Friend Connect
Summary
15. 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
16. How do we socialize objects
online
without having to create yet
another social network?
18. The Trouble with Developing Social Apps
Which site do I build my app for?
19. Let’s work on that…
Using OpenSocial, I can build apps for
all of these sites!
20. What’s offered by OpenSocial?
Activities
What are people up to on the web
People/Profile Info
Who do I know, etc.
Persistent datastore
Handles key/value pairs
22. Where is OpenSocial live today?
Live to Users: Live Developer Sandboxes:
MySpace iGoogle
orkut imeem
Hi5 CityIN
Freebar Tianya
Friendster Ning
Webon from Lycos Plaxo Pulse
IDtail Mail.ru
YiQi
Netlog - New!
Hyves - New!
Individual Developer Links:
http://code.google.com/apis/opensocial/gettingstared.html
24. What’s in OpenSocial?
JavaScript API - Now
REST Protocol - New
Templates - Prototype in Shindig
25. OpenSocial’s JavaScript API
OpenSocial JS API
Gadget JS API
Gadget XML schema
OpenSocial v0.7 is live
OpenSocial v0.8 is being deployed now
Specs and release notes: http://opensocial.org
26. OpenSocial’s REST Protocol
Access social data without JavaScript
Works on 3rd party websites / phones / etc
Uses OAuth to allow secure access
Open source client libraries in development
Java, PHP, Python, <your fav language here>
Being deployed with OpenSocial v0.8
Spec’s available at http://opensocial.org
27. OpenSocial Templates
Writing JavaScript is hard
Writing templates is easy
Templates also give
Consistent UI across containers
Easy way to localize
More interesting content options when inlining
into container (activities, profile views)
Ability to serve millions of dynamic pages per
day without a server
28. Try out templates today!
Samples and docs:
http://ostemplates-demo.appspot.com
Sample app:
http://ostemplates-demo.appspot.com/friends.html
Discussion group:
http://tech.groups.yahoo.com/group/os-templates/
Code is all in Shindig, can download, use, and even
submit patches to improve
So…
Get involved and provide comments, and
Build some apps
29. OpenSocial is what you make it.
OpenSocial is an open source project.
The spec is controlled by the community.
Anyone can contribute and have a voice.
http://groups.google.com/group/opensocial/
“OpenSocial and Gadgets spec” subgroup
OpenSocial Foundation
Get involved to nominate and elect board reps
http://www.opensocial.org/opensocial-
foundation/
30. A note on compliance
OpenSocial is designed for many sites
Building an app:
Technology
Policy
OpenSocial Compliance Tests
http://code.google.com/p/opensocial-
resources/wiki/ComplianceTests
36. People & Friends Example
Requesting friend Info
function getFriendData() {
var req = opensocial.newDataRequest();
req.add(
req.newFetchPersonRequest(VIEWER), 'viewer');
req.add(
req.newFetchPeopleRequest(VIEWER_FRIENDS),
'viewerFriends');
req.send(onLoadFriends);
}
37. People & Friends Example
Callback function for returned friend data
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;
}
38. Activities Example
Posting 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);
}
postActivity(
quot;This is a sample activity, created at quot; +
new Date().toString());
39. Persistence Example
Persisting data
function populateMyAppData() {
var req = opensocial.newDataRequest();
var data1 = Math.random() * 5;
var data2 = Math.random() * 100;
req.add(
req.newUpdatePersonAppDataRequest(quot;VIEWERquot;,
quot;AppField1quot;,
data1));
req.add(
req.newUpdatePersonAppDataRequest(quot;VIEWERquot;,
quot;AppField2quot;,
data2));
req.send(requestMyData);
}
40. Persistence Example
Fetching persisted data
function requestMyData() {
var req = opensocial.newDataRequest();
var fields = [quot;AppField1quot;, quot;AppField2quot;];
req.add(req.newFetchPersonRequest(
opensocial.DataRequest.PersonId.VIEWER), quot;viewerquot;);
req.add(req.newFetchPersonAppDataRequest(quot;VIEWERquot;,
fields), quot;viewer_dataquot;);
req.send(handleReturnedData);
}
41. Persistence Example
Displaying fetched (persisted) data
function handleReturnedData(data) {
var mydata = data.get(quot;viewer_dataquot;);
var viewer = data.get(quot;viewerquot;);
me = viewer.getData(); // me is global var
var data = mydata[me.getId()];
htmlout += quot;AppField1: quot; + data[quot;AppField1quot;] + quot;<br/>quot;;
htmlout += quot;AppField2: quot; + data[quot;AppField2quot;] + quot;<br/>quot;;
var div = document.getElementById('content_div');
div.innerHTML = htmlout;
}
44. Hosting OpenSocial apps
In addition to using the provided persistence API...
Establish a quot;homequot; site where gadget can phone
home to retrieve, post data
Can host home site on your own, or use services:
Amazon EC2
Joyent
Google AppEngine
Zembly: is the world's first cloud-based
development environment for social apps. Full
OpenSocial support
45. Google AppEngine and OpenSocial
Create an App Engine app as your backend!
Use makeRequest() to call back to your AppEngine
server
Utilize AppEngine's datastore
New OpenSocial Apps are coming online
BuddyPoke,
Checkout Lane Liabraaten’s OpenSocial-AppEngine
integration article
http://code.google.com/apis/opensocial/articles/appengine.html
Google IO Code Lab about OpenSocial Apps in the Cloud
47. OpenSocial Monetization
Ads from Ad Networks
AdSense, RightMedia
BuddyPoke, Rate My Friend
Brand/Private Label App
Sony Ericsson MTV Roadies app on orkut
Sell virtual or real goods
Free -> Freemium
Referrals
Virtual currency
48. Success Story: Buddy Poke
#1 OpenSocial app on orkut
8M installs for orkut, hi5, MySpace
$1-2 CPM
#1 App for App Engine w/ millions daily PV
49. Success Story: PhotoBuzz
6M+ installs on hi5 and orkut
CPM $1-3, especially good on orkut
4M buzzes per day
Small team of 4 people, profitable
63. DISCLAIMER
This presentation has been produced by XING AG (the quot;Companyquot;) solely for use at the Google Developer Day presentation held in September 2008 and is
strictly confidential. It has been made available to you solely for your own information and may not be copied, distributed or otherwise made available to any
other person by any recipient. Neither this presentation nor any copy of it may be taken or transmitted into the United States or distributed within the United
States. Any failure to comply with this restriction may constitute a violation of the U.S. securities laws. The distribution of this document in other jurisdictions
may also be restricted by law, and any persons into whose possession this presentation comes should inform themselves about, and observe, any such
restrictions. The facts and information contained herein are as up-to-date as is reasonably possible and are subject to revision in the future. Neither the
Company nor any of its subsidiaries, any directors, officers, employees, advisors nor any other person makes any representation or warranty, express or
implied as to, and no reliance should be placed on, the accuracy or completeness of the information contained in this presentation. Neither the Company nor
any of its subsidiaries, any directors, officers, employees, advisors or any other person shall have any liability whatsoever for any loss arising, directly or
indirectly, from any use of this presentation. The same applies to information contained in other material made available at the presentation. While all
reasonable care has been taken to ensure the facts stated herein are accurate and that the opinions contained herein are fair and reasonable, this document is
selective in nature and is intended to provide an introduction to, and overview of, the business of the Company. Where any information and statistics are quoted
from any external source, such information or statistics should not be interpreted as having been adopted or endorsed by the Company as being accurate. This
presentation contains forward-looking statements relating to the business, financial performance and results of the Company and/or the industry in which the
Company operates. These statements are generally identified by words such as quot;believes,quot; quot;expects,quot; quot;predicts,quot; quot;intends,quot; quot;projects,quot; quot;plans,quot; quot;estimates,quot;
quot;aims,quot; quot;foresees,quot; quot;anticipates,quot; quot;targets,quot; and similar expressions. The forward-looking statements, including but not limited to assumptions, opinions and
views of the Company or information from third party sources, contained in this presentation are based on current plans, estimates, assumptions and
projections and involve uncertainties and risks. Various factors could cause actual future results, performance or events to differ materially from those described
in these statements. The Company does not represent or guarantee that the assumptions underlying such forward-looking statements are free from errors nor
do they accept any responsibility for the future accuracy of the opinions expressed in this presentation. No obligation is assumed to update any forward-looking
statements. By accepting this presentation you acknowledge that you will be solely responsible for your own assessment of the market and of the market
position of the Company and that you will conduct your own analysis and be solely responsible for forming your own view of the potential future performance of
the Company's business. This presentation speaks as of September 2008. Neither the delivery of this presentation nor any further discussions of the Company
with any of the recipients shall, under any circumstances, create any implication that there has been no change in the affairs of the Company since such date.
IMPORTANT NOTICE
Pro-forma results
Results contained in this presentation are partly based on unaudited pro-forma financial results that the Company derived from its preliminary and past financial
statements for the indicated periods in order to make these periods comparable and show non-recurring costs.
Cautionary note regarding preliminary results and pro-forma financial results
This presentation contains preliminary results and pro-forma results. The preliminary results may change during their final review. While the Company believes
that its pro-forma financial results are reflective of its recurrent trends and the on-going status of its business, there can be no assurance that its pro-forma
results will accurately reflect these trends and status and therefore, its investors are urged not to rely solely upon the pro-forma results when making their
investing decision and the pro-forma results should always be reviewed together with its actual financial results.
64. About XING
01 XING is European market leader in business networking
What about XING as a platform? What about XING as a company?
Focus: business people worldwide First publicly listed Web 2.0 company
6.14 million members* Headquartered in Hamburg, Germany
500,000 paying members** Offices in Istanbul, Barcelona, Beijing
16 different languages 150 employees from 22 countries
Weekly software releases Development in Perl and Ruby on Rails
*as of June 2008 **as of September 2008
(c) 2008 XING AG | OpenSocial at XING | Matthias Häsel | Join www.xing.com/profile/matthias_haesel
65. OpenSocial at XING
02 XING will introduce a range of OpenSocial apps next year
Why OpenSocial?
Give XING members access to many new social applications
Give application developers access to XING's social graph data
Why is OpenSocial at XING different?
Apps are required to bring value to business people
Apps need to be compatible with XING's business model
Apps must adhere to XING's data protection policy
(c) 2008 XING AG | OpenSocial at XING | Matthias Häsel | Join www.xing.com/profile/matthias_haesel
66. OpenSocial at XING
02 A quick idea on the canvas view
(c) 2008 XING AG | OpenSocial at XING | Matthias Häsel | Join www.xing.com/profile/matthias_haesel
67. OpenSocial at XING
02 A quick idea on the home view
(c) 2008 XING AG | OpenSocial at XING | Matthias Häsel | Join www.xing.com/profile/matthias_haesel
68. OpenSocial at XING
02 A quick idea on the profile view
(c) 2008 XING AG | OpenSocial at XING | Matthias Häsel | Join www.xing.com/profile/matthias_haesel
69. Launching OpenSocial
03 XING is looking for open-minded social gadget experts
What's next with OpenSocial at XING?
XING will launch OpenSocial in the first half-year 2009
Launch will include a white-listed selection of third-party applications
XING is looking for dedicated partners, cool ideas and talented developers
To register for the pitch, contact Matthias: matthias.haesel@xing.com
(c) 2008 XING AG | OpenSocial at XING | Matthias Häsel | Join www.xing.com/profile/matthias_haesel
80. How are we doing?
More than 35,000,000 unique members
3,000,000 German speaking members
More than 6,000,000,000 pageviews/Month
23 languages and alot more coming!
Nederland Svensk
slovenščin s a
a Deutsch
Magya
Русски Englis Italiano česky
r
й h françai
Dansk s suomi
Polski Hrvatski
Türkçe
Afrikaan
Slovenčin s 中文
Eesti a Català
Españo
Portuguê l Latviešu
Română s
valoda българск
Lietuvių Norsk (bokmål) и
kalba
89. Whitelisting Requirements
an application should be fully integrated
no external login should be needed...
no external links
no ads in “profile” view
no spamming through activities/requests
localised & translated
We can help you!
94. 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
95. Credit Economy
Virtual Currency
Use Cases
charge credits for app installation
charge credits for certain features
charge credits for buying items
charge credits for...
99. Agenda
A few words about Viadeo
What to offer to Viadeo’s members
Sandbox presentation
100. Viadeo
3 groups of Use :
Social Network,
Business Tool
Career Management
5 +m Members mainly :
Europe
China
Strong activity
7, 000 new members/day
10, 000 connections/day
+120, 000 consulted profiles/day
1,3 M hubs registration
101. International Footprint : 5+m Members
France
1.8m members(1)
Other European countries
150K members
(1)
Belgium
100k members(1)
UK/Ireland
150 k members(1) China
Switzerland 2.2m members(1)
50K members(1)
Spain/Portugal Italy
350k members(1) 300k members
(1) (1) end of August 2008
102. Benefits Viadeo can offer to developers
8 languages (European + China)
Professional oriented
Distribution of Members among all the Industries
Mainly “A Level” profiles
Members with High Revenues => Strong capabilities of
monetization
105. 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…
112. Becoming an OpenSocial Container
Question:
How do you become an OpenSocial container?
Answer:
The Apache incubator project “Shindig” serves this
purpose!
113. What is Shindig ?
Open source reference implementation of OpenSocial &
Gadgets specification
An Apache Software Incubator project
Available in Java & PHP
http://incubator.apache.org/shindig
It’s Goal:
“Shindig's goal is to allow new sites to start hosting social apps
in under an hour's worth of workquot;
114. Introduction to Shindig Architecture
Gadget Server
Social Data Server
Gadget Container JavaScript
117. Social Server - RESTful API
Preview available on
iGoogle
Orkut
Hi5
New development models
Server to server & Mobile!
Try it out:
curl http://localhost:8080/social/rest/people/john.doe/@all
118. Implementing Shindig - Data sources
Integrate with your own data sources
People Service
Activities Service
App Data Service
class MyPeopleService implements PeopleService {
...
}
class MyAppDataService implements AppDataService {
...
}
class MyActivitiesService implements ActivitiesService {
...
}
119. Implementing Shindig - Data sources
Implement functions
function getActivities($ids)
{
$activities = array();
$res = mysqli_query($this->db, ”SELECT…quot;);
while ($row = @mysqli_fetch_array($res, MYSQLI_ASSOC)) {
$activity = new Activity($row['activityId'],
$row['personId']);
$activity->setStreamTitle($row['activityStream']);
$activity->setTitle($row['activityTitle']);
$activity->setBody($row['activityBody']);
$activity->setPostedTime($row['created']);
$activities[] = $activity;
}
return $activities;
}
120. Implementing - Make it a platform
Add UI Elements
App Gallery
App Canvas
App Invites
Notification Browser
Developer Resources
Developer Console
Application Gallery
Scale it Out!
121. Implementing - Scale it Out!
Prevent Concurrency issues
Reduce Latency
Add Caching
Add more caching!
122. Usage Example: Sample Container
Static html sample container
No effort to get up and running
No database or features
123. Usage Example: Partuza
Partuza is a Example social network site, written in PHP
Allows for local gadget development & testing too
Use as inspiration (or copy) for creating your own social site
http://code.google.com/p/partuza
124. OpenSocial for intranet, portals
Sun Microsystems
Socialsite: Shindig + gadget based UI written in Java
Open Source https://socialsite.dev.java.net/
Upcoming from Impetus
Zest: Shindig + Drupal (PHP)
Zeal: Shindig + Liferay (Java)
125. Summary
Become an OpenSocial Container
Get Shindig (PHP or Java)
Look at examples & documentation
Implement Services
Add UI
Scale it out
Resources & Links:
http://www.chabotc.com/gdd/
126. 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/
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137. 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