SeaBeyond 2011 ProcessOne - Nokia: Jukka Alakontiola - Notifications API
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
-
Upload
processone -
Category
Documents
-
view
899 -
download
1
description
Transcript of SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
A platform to build real-time social applications
Diana Cheng(formerly also: Laurent Eschenauer and Alard
Weisscher)
SeaBeyond - Paris, February 3, 2011
Onesocialweb: a free, open and decentralized social networking platform
The menu for today
High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
The menu for today
High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
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
A lot of activities in this field...
… but no such platform yet
protocol platform user experience
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
[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
[email protected] [email protected]
wonderland.lit realworld.com
Push notifications to recipients
Architecture: federated client-servere.g. Alice updates her status
protocol
[email protected] [email protected]
wonderland.lit realworld.com
Real-time notifications
Architecture: federated client-servere.g. Alice updates her status
protocol
wonderland.lit realworld.com
Request profile of [email protected]
Architecture: federated client-servere.g. Alice looks up Bob's profile
protocol
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
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
wonderland.lit realworld.com
Result is sent back to the requesting client
Architecture: federated client-servere.g. Alice looks up Bob's profile
protocol
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 !
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.
Community implementations
HTML5 client iPhone client
user experience
And others in progress!
The menu for today
High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
The menu for today
High level overviewDemoProtocol and data modelsHands on with the APIOSW on MobileQ&A
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
XMPP
From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
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)
XMPP
Activitystrea.ms
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
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
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
Yet, no common way to describe rich social interactions... leading to proprietary data models
title + link + summary +author + id + updated
Activitystreams provides a common language to describe social interactions...
actor verb object target
Activitystreams provides a common language to describe social interactions...
eschnou posted a note
Activitystreams provides a common language to describe social interactions...
eschnou posted a picture to an album
Activitystreams provides a common language to describe social interactions...
eschnou liked a video
… building upon existing Atom elements
title + link + summary +author + id + updated +verb + object-type + target
… 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
Onesocialweb extends this further with context data and access control rules
actor verb object target context access-control
Onesocialweb extends it further with context data and access control rules
eschnou took a picture in Barcelona,it can be seen visible by 'friends'
Putting it all together
Juliet updates her status“O Romeo, Romeo, wherefore
art thou Romeo ?”
<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>
<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>
<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>
<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>
Evolving spec, but ...
Already been adopted by:
- Facebook - MySpace- Windows Live - Google Buzz- BBC- Opera - Superfeedr
and many others...
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
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>
The menu for today
High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
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
Our implementation
Using some great open source libraries:
- Smack library- Asmack library- JZLib library
The menu for today
High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
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 ?
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
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]”);
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);
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(); }}});
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
The menu for today
High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
Federated Social Web & SWAT
- Federated Social Web Summit, June 2010 in Portland
- June 2011 in Berlin
- SWAT- Social Web Acid Test
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
SWAT0 Assumptions
- Dave, Tantek, and Evan have accounts on different social networks
- These social networks have at least two different codebases
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.
The menu for today
High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
Get started:
http://onesocialweb.org
http://twitter.com/onesocialweb
http://github.com/onesocialweb