A platform to build real-time social applications

                     Laurent Eschenauer
                        Mobile ...
Laurent Eschenauer
                           Senior Research Engineer
                           Vodafone Group R&D

    ...
Ask questions !




Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
Onesocialweb: a free, open and
decentralized social networking platform




Laurent Eschenauer              C1 – Public
Ju...
The menu for today


High level overview
Demo
Protocol and data models
Hands on with the API
Q&A




Laurent Eschenauer   ...
The menu for today


High level overview
Demo
Protocol and data models
Hands on with the API
Q&A




Laurent Eschenauer   ...
Can we make social communications as simple
and universal as email ?



      Facebook
                                   ...
A lot of activities in this field...




                 … but no such platform yet



Laurent Eschenauer                ...
protocol              platform                  user experience




Laurent Eschenauer                C1 – Public
June 17t...
protocol
A protocol based on open standards




       XMPP          Identity, discovery & communication
 Activitystreams ...
protocol
Architecture: federated client-server
e.g. Alice updates her status

        wonderland.lit                      ...
protocol
Architecture: federated client-server
e.g. Alice updates her status

        wonderland.lit                      ...
protocol
Architecture: federated client-server
e.g. Alice updates her status

        wonderland.lit                      ...
protocol
Architecture: federated client-server
e.g. Alice looks up Bob's profile

        wonderland.lit                  ...
protocol
Architecture: federated client-server
e.g. Alice looks up Bob's profile

        wonderland.lit                  ...
protocol
Architecture: federated client-server
e.g. Alice looks up Bob's profile

        wonderland.lit                  ...
protocol
Architecture: federated client-server
e.g. Alice looks up Bob's profile

        wonderland.lit                  ...
platform
An open source platform

End to end platform
     server backend, client libraries for desktop and mobile


Open ...
user experience
A social network user experience




                     web client (HTML + JS)                          ...
The menu for today


High level overview
Demo
Protocol and data models
Hands on with the API
Q&A




Laurent Eschenauer   ...
The menu for today


High level overview
Demo
Protocol and data models
Hands on with the API
Q&A




Laurent Eschenauer   ...
XMPP




Laurent Eschenauer              C1 – Public
June 17th 2010       ©2010 Vodafone Group Services Ltd.
XMPP
References

XMPP: The definitive guide
Peter Saint-Andre, Remko Troncon, Kevin Smith
O'Reilly 1999
ISBN: 978-0-596-52...
XMPP
Architecture

Web is a browser (thin client) – server architecture



              wonderland.lit                   ...
XMPP
Architecture

Email is client – server with multi-hop federation



      wonderland.lit                             ...
XMPP
Architecture

XMPP is a client – server with single hop federation



                         wonderland.lit        ...
XMPP
Addressing

     Similar to email

                     User                  Domain

                     alice@wond...
XMPP
Addressing

     Similar to email – with an added resource

                     User                  Domain        ...
XMPP
Streaming XML
<stream: stream>
   <presence/>

    <iq type="get">
      <query xmlns="jabber:iq:roster"/>
    </iq>
...
XMPP
Communication based on three “stanzas”



                                       <message />

                       ...
XMPP
Message stanza


<message from="queen@wonderland.lit"
         to="madhatter@wonderland.lit">
   <body>Off with his h...
XMPP
Presence stanza


<presence from="alice@wonderland.lit">
  <show>xa</show>
  <status>down the rabbit hole !</status>
...
XMPP
IQ stanza

<iq type="get">
  <query xmlns="jabber:iq:roster"/>
</iq>

<iq type="result">
  <query xmlns="jabber:iq:ro...
XMPP
eXtensible MPP

Any child XML element can be used as a payload, using
XML namespaces to manage scope
<message from="q...
XMPP
Long-lived connection & asynchronous

Web world is synchronous
     - send request
     - wait for answer
     - rece...
Why XMPP for Onesocialweb ?

Only technology to achieve such a federation seamlessly:
    Identity (user@domain)
    Sec...
Activitystrea.ms




Laurent Eschenauer                 C1 – Public
June 17th 2010          ©2010 Vodafone Group Services ...
Activitystreams
References

http://activitystrea.ms

The Open and Social Web
Chris Messina
Google I/O 2010
http://code.goo...
The need for machine readable data
1999 – Introduction of RSS
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
 ...
The need for machine readable data
2005 – Atom addresses some of the shortcomings
<?xml version="1.0" encoding="utf-8"?>
<...
Yet, no common way to describe rich social
interactions... leading to proprietary data models




                     tit...
Activitystreams provides a common language to
describe social interactions...




                     actor verb object t...
Activitystreams provides a common language to
describe social interactions...




                     eschnou posted a no...
Activitystreams provides a common language to
describe social interactions...




              eschnou posted a picture t...
Activitystreams provides a common language to
describe social interactions...




                     eschnou liked a vid...
… building upon existing Atom elements



                     title + link + summary +
                     author + id +...
… building upon existing Atom elements

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" x...
Onesocialweb extends this further with context
data and access control rules




    actor verb object target context acce...
Onesocialweb extends it further with context
data and access control rules




               eschnou took a picture in Ba...
Putting it all together




Laurent Eschenauer                    C1 – Public
June 17th 2010             ©2010 Vodafone Gr...
Juliet updates her status
“O Romeo, Romeo, wherefore 
     art thou Romeo ?”


Laurent Eschenauer              C1 – Public...
<iq type='set' from='juliet@capulet.lit/mobile' to='capulet.lit' id='osw1'>
 <pubsub xmlns="http://jabber.org/protocol/pub...
<iq type='set' from='juliet@capulet.lit/mobile' to='capulet.lit' id='osw1'>
 <pubsub xmlns="http://jabber.org/protocol/pub...
<iq type='set' from='juliet@capulet.lit/mobile' to='capulet.lit' id='osw1'>
 <pubsub xmlns="http://jabber.org/protocol/pub...
<iq type='set' from='juliet@capulet.lit/mobile' to='capulet.lit' id='osw1'>
 <pubsub xmlns="http://jabber.org/protocol/pub...
The menu for today


High level overview
Demo
Protocol and data models
Hands on with the API
Q&A




Laurent Eschenauer   ...
How would you create a social shopping list
application ?



Create shopping lists
Share them with friends
Collaborate on ...
Today you need a lot more than a mobile app


We need a back-end                                  … and a solution for pus...
With Onesocialweb, you focus on your
application and let the protocol do the rest
Create a shopping list object and a user...
With Onesocialweb, you focus on your
application and let the protocol do the rest
Create a shopping list object and a user...
With Onesocialweb, you focus on your
application and let the protocol do the rest
Create a shopping list object and a user...
The power of having a common data model in a
federated network

                                 Facebook
                ...
Get started:

http://onesocialweb.org
http://twitter.com/onesocialweb
http://github.com/onesocialweb

contact@onesocialweb...
Upcoming SlideShare
Loading in …5
×

Introduction to onesocialweb protocol and API

3,436 views
3,347 views

Published on

Slides of the workshop given at Mobile 2 Europe in Barcelona on June 17th.

Published in: Technology

Introduction to onesocialweb protocol and API

  1. 1. A platform to build real-time social applications Laurent Eschenauer Mobile 2.0 Europe June 17th - Barcelona Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  2. 2. Laurent Eschenauer Senior Research Engineer Vodafone Group R&D @eschnou eschnou@vodafonernd.com laurent@eschenauer.be Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  3. 3. Ask questions ! Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  4. 4. Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  5. 5. Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  6. 6. Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  7. 7. Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  8. 8. Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  9. 9. Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  10. 10. Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  11. 11. Onesocialweb: a free, open and decentralized social networking platform Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  12. 12. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  13. 13. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  14. 14. 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  15. 15. A lot of activities in this field... … but no such platform yet Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  16. 16. protocol platform user experience Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  17. 17. 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  18. 18. protocol Architecture: federated client-server e.g. Alice updates her status wonderland.lit realworld.com Post a new item to her stream alice@wonderland.lit bob@realworld.com Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  19. 19. protocol Architecture: federated client-server e.g. Alice updates her status wonderland.lit realworld.com Push notifications to recipients alice@wonderland.lit bob@realworld.com Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  20. 20. protocol Architecture: federated client-server e.g. Alice updates her status wonderland.lit realworld.com Real-time notifications alice@wonderland.lit bob@realworld.com Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  21. 21. protocol Architecture: federated client-server e.g. Alice looks up Bob's profile wonderland.lit realworld.com Request profile of bob@realworld.com alice@wonderland.lit Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  22. 22. protocol Architecture: federated client-server e.g. Alice looks up Bob's profile wonderland.lit realworld.com Request is forwarded to Bob's domain on alice@wonderland.lit behalf. alice@wonderland.lit Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  23. 23. 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  24. 24. protocol Architecture: federated client-server e.g. Alice looks up Bob's profile wonderland.lit realworld.com Result is sent back to the requesting client alice@wonderland.lit Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  25. 25. 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 ! Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  26. 26. 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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  27. 27. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  28. 28. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  29. 29. XMPP Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  30. 30. XMPP 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  31. 31. XMPP Architecture Web is a browser (thin client) – server architecture wonderland.lit realworld.com web server web server browser From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  32. 32. XMPP Architecture Email is client – server with multi-hop federation wonderland.lit between.org realworld.com email server email server email server email client email client alice@wonderland.lit bob@realworld.com From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  33. 33. XMPP Architecture XMPP is a client – server with single hop federation wonderland.lit realworld.com xmpp server xmpp server xmpp client xmpp client alice@wonderland.lit bob@realworld.com From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  34. 34. XMPP Addressing Similar to email User Domain alice@wonderland.lit Bare JID (Jabber ID) From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  35. 35. XMPP Addressing Similar to email – with an added resource User Domain Resource alice@wonderland.lit/rabbithole Full JID (Jabber ID) From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  36. 36. XMPP 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="king@wonderland.lit" 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  37. 37. XMPP Communication based on three “stanzas” <message /> <presence /> <iq /> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  38. 38. XMPP 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  39. 39. XMPP 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  40. 40. XMPP 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  41. 41. XMPP eXtensible 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  42. 42. XMPP Long-lived connection & asynchronous 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  43. 43. 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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  44. 44. Activitystrea.ms Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  45. 45. Activitystreams 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  46. 46. 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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  47. 47. 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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  48. 48. Yet, no common way to describe rich social interactions... leading to proprietary data models title + link + summary + author + id + updated Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  49. 49. Activitystreams provides a common language to describe social interactions... actor verb object target Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  50. 50. Activitystreams provides a common language to describe social interactions... eschnou posted a note Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  51. 51. Activitystreams provides a common language to describe social interactions... eschnou posted a picture to an album Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  52. 52. Activitystreams provides a common language to describe social interactions... eschnou liked a video Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  53. 53. … building upon existing Atom elements title + link + summary + author + id + updated + verb + object-type + target Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  54. 54. … 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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  55. 55. Onesocialweb extends this further with context data and access control rules actor verb object target context access-control Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  56. 56. 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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  57. 57. Putting it all together Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  58. 58. Juliet updates her status “O Romeo, Romeo, wherefore  art thou Romeo ?” Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  59. 59. <iq type='set' from='juliet@capulet.lit/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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  60. 60. <iq type='set' from='juliet@capulet.lit/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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  61. 61. <iq type='set' from='juliet@capulet.lit/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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  62. 62. <iq type='set' from='juliet@capulet.lit/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 Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  63. 63. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  64. 64. 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  65. 65. 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  66. 66. 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”); Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  67. 67. 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); Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  68. 68. 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(); }}}); Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  69. 69. 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 Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.
  70. 70. Get started: http://onesocialweb.org http://twitter.com/onesocialweb http://github.com/onesocialweb contact@onesocialweb.org Laurent Eschenauer C1 – Public June 17th 2010 ©2010 Vodafone Group Services Ltd.

×