Build real-time social applications platform overview
1. A platform to build real-time social applications Diana Cheng (formerly also: Laurent Eschenauer and Alard Weisscher) Over The Air - London, September 10, 2010
18. A protocol based on open standards Identity, discovery & communication Data model for social objects Data model for profiles Data model for relationships protocol XMPP Activitystreams VCard XFN
23. [email_address] wonderland.lit realworld.com Request is forwarded to Bob's domain on [email_address] behalf. Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
24. [email_address] wonderland.lit realworld.com Bob's provider replies with the profile data that alice is allowed to see. Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
26. 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) platform Already available. Easy to setup. Join our growing community to experiment with us and get involved via our mailing list !
27. A social network user experience web client (HTML + JS) Android client user experience This is just one implementation of a social networking experience. Keep in mind that Onesocialweb is a platform enabling any kind of social applications.
28. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
29. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
31. References XMPP: The definitive guide Peter Saint-Andre, Remko Troncon, Kevin Smith O'Reilly 1999 ISBN: 978-0-596-52126-4 XMPP 101 Peter Saint-Andre & Remko Troncon FOSDEM 2009 http://el-tramo.be/blog/xmpp-101-fosdem XMPP
32. Architecture Web is a browser (thin client) – server architecture From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit web server realworld.com web server browser XMPP
33. Architecture Email is client – server with multi-hop federation From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit email server realworld.com email server email client [email_address] between.org email server email client [email_address] XMPP
34. Architecture XMPP is a client – server with single hop federation From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit xmpp server realworld.com xmpp server xmpp client [email_address] xmpp client [email_address] XMPP
35. Similar to email Addressing User Domain alice @ wonderland.lit Bare JID (Jabber ID) From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
36. Similar to email – with an added resource Addressing User Domain Resource alice @ wonderland.lit / rabbithole Full JID (Jabber ID) From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
37. Streaming XML <stream: stream> <presence/> <iq type="get"> <query xmlns="jabber:iq:roster"/> </iq> <iq type="result"> <query xmlns="jabber:iq:roster"> <item jid="alice@wonderland.lit"/> <item jid="madhatter@wonderland.lit"/> <item jid="whiterabbit@wonderland.lit"/> </query> </iq> <message from="queen@wonderland.lit" to="madhatter@wonderland.lit"> <body>Off with his head!</body> </message> <message from=" [email_address] " to="party@conference.wonderland.lit"> <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
38. Communication based on three “stanzas” <message /> <presence /> <iq /> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
39. Message stanza <message from="queen@wonderland.lit" to="madhatter@wonderland.lit"> <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 From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
40. Presence stanza <presence from="alice@wonderland.lit"> <show>xa</show> <status>down the rabbit hole !</status> </presence> Advertise network availability Rich presence (away, available for chat...) Rich status (a free text entry) Typically used for rosters in IM use cases From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
41. IQ stanza <iq type="get"> <query xmlns="jabber:iq:roster"/> </iq> <iq type="result"> <query xmlns="jabber:iq:roster"> <item jid="alice@wonderland.lit"/> <item jid="madhatter@wonderland.lit"/> <item jid="whiterabbit@wonderland.lit"/> </query> </iq> Request/response Enable querying and editing of resources Similar to HTTP GET & HTTP POST From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
42. e X tensible MPP Any child XML element can be used as a payload, using XML namespaces to manage scope <message from="queen@wonderland.lit" to="madhatter@wonderland.lit"> <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> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
43. Long-lived connection & asynchronous Web world is synchronous - send request - wait for answer - receive response XMPP is a synchronous - long lived connections - event based messaging From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
54. References http://activitystrea.ms The Open and Social Web Chris Messina Google I/O 2010 http://code.google.com/events/io/2010/sessions/open-and-social-web.html Activitystreams
55. 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
56. 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
57. Yet, no common way to describe rich social interactions... leading to proprietary data models title + link + summary + author + id + updated
62. … building upon existing Atom elements title + link + summary + author + id + updated + verb + object-type + target
63. … 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
64. Onesocialweb extends this further with context data and access control rules actor verb object target context access-control
65. Onesocialweb extends it further with context data and access control rules eschnou took a picture in Barcelona , it can be seen visible by 'friends'
72. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
73. e.g. Shopulator on Android Create shopping lists Share them with friends Collaborate on shopping items Receive real-time notifications How would you create a social shopping list application ?
85. 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” );
86. 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);
87. 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().equ als( “ http://acme.com/shoppinglist “ )) { notify(); }}});
88. The power of having a common data model in a federated network [email_address] [email_address] [email_address] Facebook 360 MySpace Google Realtime picture sharing with friends and family, across networks, and without tight coupling of the social applications