1. A platform to build real-time social applications
Diana Cheng
(formerly also: Laurent Eschenauer and Alard
Weisscher)
SeaBeyond - Paris, February 3, 2011
11. The menu for today
High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
12. The menu for today
High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
13. Can we make social communications as simple
and universal as email ?
Facebook
MySpace
Friending and following
whatever.com
across networks
One identity and yet multiple
communities
Data portability
360 Google
14. A lot of activities in this field...
… but no such platform yet
16. protocol
A protocol based on open standards
XMPP Identity, discovery & communication
Activitystreams Data model for social objects
VCard Data model for profiles
XFN Data model for relationships
22. protocol
Architecture: federated client-server
e.g. Alice looks up Bob's profile
wonderland.lit realworld.com
Bob's provider replies with the profile
data that alice is allowed to see.
alice@wonderland.lit
24. platform
An open source platform
End to end platform
server backend, client libraries for desktop and mobile
Open source
Apache 2 license
http://github.com/onesocialweb
Java
30% code reuse between components
Web client written in GWT (Java compiled to Javascript)
Already available. Easy to setup. Join our growing community to experiment with us
and get involved via our mailing list !
25. user experience
A social network user experience
web client (HTML + JS) Android client
This is just one implementation of a social networking experience. Keep in mind that
Onesocialweb is a platform enabling any kind of social applications.
30. XMPP
Why XMPP for Onesocialweb ?
Web world is synchronous
- send request
- wait for answer
- receive response
XMPP is asynchronous
- long lived connections
- event based messaging
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
31. XMPP
Why XMPP for Onesocialweb ?
Only technology to achieve such a federation seamlessly:
Identity (user@domain)
Security (TLS and S2S with dialback)
Discovery (XMPP Disco)
Useful extensions (Roster, PubSub, …)
Doing the same in the web world requires to assemble:
OpenID (identity)
Oauth (authentication and authorization)
Webfinger (discovery and openid on en email)
Pubsubhubbub (server to server push notifications)
Salmon (messaging and commenting)
… and to address a lot of other issues (e.g. Privacy, NAT clients)
34. The need for machine readable data
1999 – Introduction of RSS
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<item>
<title>When Will Location-Based Coupons Take Off?</title>
<link>http://bits.blogs.nytimes.com/2010/03/12/when-will-
location-based-mobile-coupons-take-off/</link>
<pubDate>Fri, 12 Mar 2010 21:38:26 +0000</pubDate>
<creator>By CLAIRE CAIN MILLER</creator>
<description>
People want to receive location-based cellphone coupons,
but most have not, according to a Web analytics firm.
</description>
</item>
</channel>
</rss>
title + link + description
From: The Open and Social web, Chris Messina, Google I/O 2010
35. The need for machine readable data
2005 – Atom addresses some of the shortcomings
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<entry>
<title>When Will Location-Based Coupons Take Off?</title>
<link rel=”alternate”>http://bits.blogs.nytimes.com/2010/03/12/when-will-
location-based-mobile-coupons-take-off/</link>
<id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id>
<updated>Fri, 12 Mar 2010 21:38:26 +0000</updated>
<author>
<name>By CLAIRE CAIN MILLER</name>
</author>
<summary>
People want to receive location-based cellphone coupons,
but most have not, according to a Web analytics firm.
</summary>
</entry>
</feed>
title + link + summary +
author + id + updated
From: The Open and Social web, Chris Messina, Google I/O 2010
36. Yet, no common way to describe rich social
interactions... leading to proprietary data models
title + link + summary +
author + id + updated
41. … building upon existing Atom elements
title + link + summary +
author + id + updated +
verb + object-type + target
42. … building upon existing Atom elements
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/">
<entry>
<title>...</title>
<link rel=”alternate”>...</link>
<id>...</id>
<updated>...</updated>
<author>
<activity:object-type>person</activity:object-type>
<name>...</name>
</author>
<activity:verb>post</activity:verb>
<activity:object>
<activity:object-type>note</activity:object-type>
<content type=”html”>
...
</content>
</activity:object>
</entry>
</feed>
From: The Open and Social web, Chris Messina, Google I/O 2010
43. Onesocialweb extends this further with context
data and access control rules
actor verb object target context access-control
44. Onesocialweb extends it further with context
data and access control rules
eschnou took a picture in Barcelona,
it can be seen visible by 'friends'
51. Evolving spec, but ...
Already been adopted by:
- Facebook
- MySpace
- Windows Live
- Google Buzz
- BBC
- Opera
- Superfeedr
and many others...
52. Fine grained access control
- Both public-oriented (Twitter-like) social nodes
as well as private-oriented Facebook-like social
nodes
- For activities on a per activity basis
- For profiles on a field per field basis
- for relations, etc
53. Fine grained access control
- Public
<osw:acl-rule>
<osw:acl-action permission="http://onesocialweb.org/spec/1.0/acl/permission/grant">
http://onesocialweb.org/spec/1.0/acl/action/view
</osw:acl-action>
<osw:acl-subject type="http://onesocialweb.org/spec/1.0/acl/subject/everyone"/>
</osw:acl-rule>
- Roster-groups
<osw:acl-rule>
<osw:acl-action permission="http://onesocialweb.org/spec/1.0/acl/permission/grant">
http://onesocialweb.org/spec/1.0/acl/action/view
</osw:acl-action>
<osw:acl-subject type="http://onesocialweb.org/spec/1.0/acl/subject/group">
Family
</osw:acl-subject>
</osw:acl-rule>
54. The menu for today
High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
55. XMPP on Mobile – OSW Android Client
- Reference Implementation
- Android provides background threads necessary for
real-time notification
- Understand connectivity issues when switching
bearers or reconnecting (2G/3G/WIFI/No network)
- Impact on battery life
- Network traffic implications
57. The menu for today
High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
58. How would you create a social shopping list
application ?
Create shopping lists
Share them with friends
Collaborate on shopping items
Receive real-time notifications
e.g. Shopulator on Android
59. Today you need a lot more than a mobile app
We need a back-end … and a solution for push
server... notifications
User registration Custom TCP sockets
Social graph management Web sockets
(e.g. inviting friends) Comet (HTTP Long polling)
Data storage for the shopping list SMS
Web API Apple Push Notifications
(to communicate with the mobile client) Android C2DM
60. With Onesocialweb, you focus on your
application and let the protocol do the rest
Create a shopping list object and a user as a collaborator
ShoppingList list = new ShoppingList();
list.setTitle(“BBQ on Sunday”);
list.addItem(“bread”);
list.addCollaborator(“alice@betavine.net”);
61. With Onesocialweb, you focus on your
application and let the protocol do the rest
Create a shopping list object and a user as a collaborator
ShoppingList list = new ShoppingList();
list.setTitle(“BBQ on Sunday”);
list.addItem(“bread”);
list.addCollaborator(“alice@betavine.net”);
Connect to the user account and post the new shopping list
service.connect(“vodafonernd.com”, 5222, null);
service.login(“eschnou”, “******”, “shoplist”);
service.post(list);
62. With Onesocialweb, you focus on your
application and let the protocol do the rest
Create a shopping list object and a user as a collaborator
ShoppingList list = new ShoppingList();
list.setTitle(“BBQ on Sunday”);
list.addItem(“bread”);
list.addCollaborator(“alice@betavine.net”);
Connect to the user account and post the new shopping list
service.connect(“vodafonernd.com”, 5222, null);
service.login(“eschnou”, “******”, “shoplist”);
service.post(list);
Listen to incoming social events and act on shopping list
service.registerInboxEventHandler(new InboxEventHandler() {
public void handleEvent(InboxEvent event) {
if (event.getObjectType().equals(“http://acme.com/shoppinglist“)) {
notify();
}}});
63. The power of having a common data model in a
federated network
Facebook
MySpace
eschnou@facebook.com
360 Google
mysister@gmail.com
mymother@360.com
Realtime picture sharing with friends and family, across networks, and without tight
coupling of the social applications
64. The menu for today
High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
65. Federated Social Web & SWAT
- Federated Social Web Summit, June 2010 in Portland
- June 2011 in Berlin
- SWAT- Social Web Acid Test
66. The SWAT0 Use Case
1.With his phone, Dave takes a photo of Tantek and
uploads it using a service
2.Dave tags the photo with Tantek
3.Tantek gets a notification on another service that he's
been tagged in a photo
4.Evan, who is subscribed to Dave, sees the photo on
yet another service
5.Evan comments on the photo
6.David and Tantek receive notifications that Evan has
commented on the photo
67. SWAT0 Assumptions
- Dave, Tantek, and Evan have accounts on different
social networks
- These social networks have at least two different
codebases
68. W3C Incubator Group
- More SWAT-like test cases and challenges
- Community-driven specifications
- Ostatus and related protocols (PubSubHubbub,
ActivityStreams, Salmon, Portable Contacts, and
Webfinger)
- Other architectures: SMOB and XMPP-based
- Best practices for privacy and security for the
federated social web.
69. The menu for today
High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A