Laurent Eschenauer June 17 th 2010 C1 – Public ©2010 Vodafone Group Services Ltd. A platform to build real-time social applications Laurent Eschenauer Mobile 2.0 Europe June 17 th - Barcelona
May 11, 2015
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
A platform to build real-time social applications
Laurent Eschenauer
Mobile 2.0 EuropeJune 17th - Barcelona
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
@eschnou
Laurent EschenauerSenior Research EngineerVodafone Group R&D
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Ask questions !
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Onesocialweb: a free, open and decentralized social networking platform
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
The menu for today
High level overviewDemoProtocol and data modelsHands on with the APIQ&A
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
The menu for today
High level overviewDemoProtocol and data modelsHands on with the APIQ&A
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Can we make social communications as simple and universal as email ?
360
MySpace
whatever.com
Friending and following across networks
One identity and yet multiple communities
Data portability
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
A lot of activities in this field...
… but no such platform yet
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
protocol platform user experience
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
protocol
A protocol based on open standards
Identity, discovery & communication
Data model for social objects
Data model for profiles
Data model for relationships
XMPP
Activitystreams
VCard
XFN
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
[email protected] [email protected]
wonderland.lit realworld.com
Post a new item to her stream
Architecture: federated client-servere.g. Alice updates her status
protocol
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
[email protected] [email protected]
wonderland.lit realworld.com
Push notifications to recipients
Architecture: federated client-servere.g. Alice updates her status
protocol
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
[email protected] [email protected]
wonderland.lit realworld.com
Real-time notifications
Architecture: federated client-servere.g. Alice updates her status
protocol
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
wonderland.lit realworld.com
Request profile of [email protected]
Architecture: federated client-servere.g. Alice looks up Bob's profile
protocol
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
wonderland.lit realworld.com
Request is forwarded to Bob's domainon [email protected] behalf.
Architecture: federated client-servere.g. Alice looks up Bob's profile
protocol
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
wonderland.lit realworld.com
Bob's provider replies with the profile data that alice is allowed to see.
Architecture: federated client-servere.g. Alice looks up Bob's profile
protocol
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
wonderland.lit realworld.com
Result is sent back to the requesting client
Architecture: federated client-servere.g. Alice looks up Bob's profile
protocol
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
An open source platform
End to end platformserver backend, client libraries for desktop and mobile
Open sourceApache 2 licensehttp://github.com/onesocialweb
Java30% code reuse between componentsWeb client written in GWT (Java compiled to Javascript)
platform
Already available. Easy to setup. Join our growing community to experiment with us
and get involved via our mailing list !
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
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.
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
The menu for today
High level overviewDemoProtocol and data modelsHands on with the APIQ&A
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
The menu for today
High level overviewDemoProtocol and data modelsHands on with the APIQ&A
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
XMPP
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
References
XMPP: The definitive guidePeter Saint-Andre, Remko Troncon, Kevin SmithO'Reilly 1999ISBN: 978-0-596-52126-4
XMPP 101Peter Saint-Andre & Remko TronconFOSDEM 2009http://el-tramo.be/blog/xmpp-101-fosdem
XMPP
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Architecture
Web is a browser (thin client) – server architecture
wonderland.litweb server
realworld.comweb server
browser
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
XMPP
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Architecture
Email is client – server with multi-hop federation
wonderland.litemail server
realworld.comemail server
email [email protected]
between.orgemail server
email [email protected]
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
XMPP
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Architecture
XMPP is a client – server with single hop federation
wonderland.litxmpp server
realworld.comxmpp server
xmpp [email protected]
xmpp [email protected]
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
XMPP
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Similar to email
Addressing
User Domain
Bare JID (Jabber ID)
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
XMPP
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Similar to email – with an added resource
Addressing
User Domain Resource
[email protected]/rabbithole
Full JID (Jabber ID)
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
XMPP
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Streaming XML <stream: stream> <presence/>
<iq type="get"> <query xmlns="jabber:iq:roster"/> </iq>
<iq type="result"> <query xmlns="jabber:iq:roster"> <item jid="[email protected]"/> <item jid="[email protected]"/> <item jid="[email protected]"/> </query> </iq>
<message from="[email protected]" to="[email protected]"> <body>Off with his head!</body> </message>
<message from="[email protected]" to="[email protected]"> <body>You are all pardoned.</body> </message>
<presence type="unavailable"/></stream: stream>
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
XMPP
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Communication based on three “stanzas”
<message />
<presence />
<iq />
XMPP
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Message stanza
<message from="[email protected]" to="[email protected]"> <body>Off with his head!</body></message>
One to one messaging (from & to addresses)Different types of messages (chat, headline, error, …)Basic payload of subject and body
XMPP
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Presence stanza
<presence from="[email protected]"><show>xa</show>
<status>down the rabbit hole !</status></presence>
Advertise network availabilityRich presence (away, available for chat...)Rich status (a free text entry)Typically used for rosters in IM use cases
XMPP
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
IQ stanza
<iq type="get"> <query xmlns="jabber:iq:roster"/></iq>
<iq type="result"> <query xmlns="jabber:iq:roster"> <item jid="[email protected]"/> <item jid="[email protected]"/> <item jid="[email protected]"/> </query></iq>
Request/responseEnable querying and editing of resourcesSimilar to HTTP GET & HTTP POST
XMPP
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
eXtensible MPP
Any child XML element can be used as a payload, using XML namespaces to manage scope<message from="[email protected]" to="[email protected]"> <body>Off with his head!</body> <entry xmlns="http://www.w3.org/2005/Atom"> <published>2010-01-13T12:40:51.292Z</published> <author> <name>The Queen</name> </author> <title>Message from the Queen</title> <content type='html'> Off with his <b>head</b>! </content></message>
XMPP
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Long-lived connection & asynchronous
Web world is synchronous- send request- wait for answer- receive response
XMPP is asynchronous- long lived connections- event based messaging
XMPP
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
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)
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Activitystrea.ms
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
References
http://activitystrea.ms
The Open and Social WebChris MessinaGoogle I/O 2010http://code.google.com/events/io/2010/sessions/open-and-social-web.html
Activitystreams
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
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
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
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
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Yet, no common way to describe rich social interactions... leading to proprietary data models
title + link + summary +author + id + updated
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Activitystreams provides a common language to describe social interactions...
actor verb object target
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Activitystreams provides a common language to describe social interactions...
eschnou posted a note
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Activitystreams provides a common language to describe social interactions...
eschnou posted a picture to an album
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Activitystreams provides a common language to describe social interactions...
eschnou liked a video
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
… building upon existing Atom elements
title + link + summary +author + id + updated +verb + object-type + target
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
… 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
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Onesocialweb extends this further with context data and access control rules
actor verb object target context access-control
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Onesocialweb extends it further with context data and access control rules
eschnou took a picture in Barcelona,it can be seen visible by 'friends'
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Putting it all together
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Juliet updates her status“O Romeo, Romeo, wherefore
art thou Romeo ?”
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
<iq type='set' from='[email protected]/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns="http://jabber.org/protocol/pubsub"> <publish node=”urn:xmpp:microblog:0”> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:osw="http://onesocialweb.org/spec/1.0/"> <title>O Romeo, Romeo, wherefore art thou Romeo?</title> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/status</activity:object-type> <content>O Romeo, Romeo, wherefore art thou Romeo?</content> </activity:object> <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>http://onesocialweb.org/spec/1.0/acl/subject/everyone</osw:acl-subject> </osw:acl-rule> </entry> </publish> </pubsub></iq>
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
<iq type='set' from='[email protected]/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns="http://jabber.org/protocol/pubsub"> <publish node=”urn:xmpp:microblog:0”> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:osw="http://onesocialweb.org/spec/1.0/"> <title>O Romeo, Romeo, wherefore art thou Romeo?</title> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/status</activity:object-type> <content>O Romeo, Romeo, wherefore art thou Romeo?</content> </activity:object> <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>http://onesocialweb.org/spec/1.0/acl/subject/everyone</osw:acl-subject> </osw:acl-rule> </entry> </publish> </pubsub></iq>
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
<iq type='set' from='[email protected]/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns="http://jabber.org/protocol/pubsub"> <publish node=”urn:xmpp:microblog:0”> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:osw="http://onesocialweb.org/spec/1.0/"> <title>O Romeo, Romeo, wherefore art thou Romeo?</title> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/status</activity:object-type> <content>O Romeo, Romeo, wherefore art thou Romeo?</content> </activity:object> <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>http://onesocialweb.org/spec/1.0/acl/subject/everyone</osw:acl-subject> </osw:acl-rule> </entry> </publish> </pubsub></iq>
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
<iq type='set' from='[email protected]/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns="http://jabber.org/protocol/pubsub"> <publish node=”urn:xmpp:microblog:0”> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:osw="http://onesocialweb.org/spec/1.0/"> <title>O Romeo, Romeo, wherefore art thou Romeo?</title> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/status</activity:object-type> <content>O Romeo, Romeo, wherefore art thou Romeo?</content> </activity:object> <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>http://onesocialweb.org/spec/1.0/acl/subject/everyone</osw:acl-subject> </osw:acl-rule> </entry> </publish> </pubsub></iq>
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
The menu for today
High level overviewDemoProtocol and data modelsHands on with the APIQ&A
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
e.g. Shopulator on Android
Create shopping listsShare them with friendsCollaborate on shopping itemsReceive real-time notifications
How would you create a social shopping list application ?
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Today you need a lot more than a mobile app
We need a back-end server...
User registration Social graph management
(e.g. inviting friends) Data storage for the shopping list Web API
(to communicate with the mobile client)
… and a solution for push notifications
Custom TCP sockets Web sockets Comet (HTTP Long polling) SMS Apple Push Notifications Android C2DM
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
With Onesocialweb, you focus on your application and let the protocol do the restCreate a shopping list object and a user as a collaborator
ShoppingList list = new ShoppingList();list.setTitle(“BBQ on Sunday”);list.addItem(“bread”);list.addCollaborator(“[email protected]”);
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
With Onesocialweb, you focus on your application and let the protocol do the restCreate a shopping list object and a user as a collaborator
ShoppingList list = new ShoppingList();list.setTitle(“BBQ on Sunday”);list.addItem(“bread”);list.addCollaborator(“[email protected]”);
Connect to the user account and post the new shopping list
service.connect(“vodafonernd.com”, 5222, null);service.login(“eschnou”, “******”, “shoplist”);service.post(list);
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
With Onesocialweb, you focus on your application and let the protocol do the restCreate a shopping list object and a user as a collaborator
ShoppingList list = new ShoppingList();list.setTitle(“BBQ on Sunday”);list.addItem(“bread”);list.addCollaborator(“[email protected]”);
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(); }}});
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
360
MySpace
The power of having a common data model in a federated network
Realtime picture sharing with friends and family, across networks, and without tight
coupling of the social applications
Laurent EschenauerJune 17th 2010
C1 – Public©2010 Vodafone Group Services Ltd.
Get started:
http://onesocialweb.org
http://twitter.com/onesocialweb
http://github.com/onesocialweb