SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

1,097 views
1,060 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,097
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

  1. 1. A platform to build real-time social applications Diana Cheng (formerly also: Laurent Eschenauer and Alard Weisscher) SeaBeyond - Paris, February 3, 2011
  2. 2. Diana ChengVodafone Group R&D @daianacheng dcheng@vodafonernd.com diana.cheng@vodafone.com
  3. 3. Onesocialweb: a free, open anddecentralized social networking platform
  4. 4. The menu for todayHigh level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
  5. 5. The menu for todayHigh level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
  6. 6. Can we make social communications as simpleand universal as email ? Facebook MySpace  Friending and following whatever.com across networks  One identity and yet multiple communities  Data portability 360 Google
  7. 7. A lot of activities in this field... … but no such platform yet
  8. 8. protocol platform user experience
  9. 9. protocolA protocol based on open standards XMPP Identity, discovery & communicationActivitystreams Data model for social objects VCard Data model for profiles XFN Data model for relationships
  10. 10. protocolArchitecture: federated client-servere.g. Alice updates her status wonderland.lit realworld.com Post a new item to her stream alice@wonderland.lit bob@realworld.com
  11. 11. protocolArchitecture: federated client-servere.g. Alice updates her status wonderland.lit realworld.com Push notifications to recipients alice@wonderland.lit bob@realworld.com
  12. 12. protocolArchitecture: federated client-servere.g. Alice updates her status wonderland.lit realworld.com Real-time notifications alice@wonderland.lit bob@realworld.com
  13. 13. protocolArchitecture: federated client-servere.g. Alice looks up Bobs profile wonderland.lit realworld.com Request profile of bob@realworld.com alice@wonderland.lit
  14. 14. protocolArchitecture: federated client-servere.g. Alice looks up Bobs profile wonderland.lit realworld.com Request is forwarded to Bobs domain on alice@wonderland.lit behalf. alice@wonderland.lit
  15. 15. protocolArchitecture: federated client-servere.g. Alice looks up Bobs profile wonderland.lit realworld.com Bobs provider replies with the profile data that alice is allowed to see. alice@wonderland.lit
  16. 16. protocolArchitecture: federated client-servere.g. Alice looks up Bobs profile wonderland.lit realworld.com Result is sent back to the requesting client alice@wonderland.lit
  17. 17. platformAn open source platformEnd to end platform server backend, client libraries for desktop and mobileOpen source Apache 2 license http://github.com/onesocialwebJava 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 !
  18. 18. user experienceA 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.
  19. 19. user experienceCommunity implementations HTML5 client iPhone client And others in progress!
  20. 20. The menu for todayHigh level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
  21. 21. The menu for todayHigh level overviewDemoProtocol and data modelsHands on with the APIOSW on MobileQ&A
  22. 22. XMPP
  23. 23. XMPPWhy XMPP for Onesocialweb ?Web world is synchronous - send request - wait for answer - receive responseXMPP is asynchronous - long lived connections - event based messagingFrom: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
  24. 24. XMPPWhy 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)
  25. 25. Activitystrea.ms
  26. 26. ActivitystreamsReferenceshttp://activitystrea.msThe Open and Social WebChris MessinaGoogle I/O 2010http://code.google.com/events/io/2010/sessions/open-and-social-web.html
  27. 27. The need for machine readable data1999 – 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 + descriptionFrom: The Open and Social web, Chris Messina, Google I/O 2010
  28. 28. The need for machine readable data2005 – 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 + updatedFrom: The Open and Social web, Chris Messina, Google I/O 2010
  29. 29. Yet, no common way to describe rich socialinteractions... leading to proprietary data models title + link + summary + author + id + updated
  30. 30. Activitystreams provides a common language todescribe social interactions... actor verb object target
  31. 31. Activitystreams provides a common language todescribe social interactions... eschnou posted a note
  32. 32. Activitystreams provides a common language todescribe social interactions... eschnou posted a picture to an album
  33. 33. Activitystreams provides a common language todescribe social interactions... eschnou liked a video
  34. 34. … building upon existing Atom elements title + link + summary + author + id + updated + verb + object-type + target
  35. 35. … 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
  36. 36. Onesocialweb extends this further with contextdata and access control rules actor verb object target context access-control
  37. 37. Onesocialweb extends it further with contextdata and access control rules eschnou took a picture in Barcelona, it can be seen visible by friends
  38. 38. Putting it all together
  39. 39. Juliet updates her status“O Romeo, Romeo, wherefore  art thou Romeo ?”
  40. 40. <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>
  41. 41. <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>
  42. 42. <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>
  43. 43. <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>
  44. 44. Evolving spec, but ...Already been adopted by:- Facebook- MySpace- Windows Live- Google Buzz- BBC- Opera- Superfeedr and many others...
  45. 45. 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
  46. 46. 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>
  47. 47. The menu for todayHigh level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
  48. 48. 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
  49. 49. Our implementationUsing some great open source libraries:- Smack library- Asmack library- JZLib library
  50. 50. The menu for todayHigh level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
  51. 51. How would you create a social shopping listapplication ?Create shopping listsShare them with friendsCollaborate on shopping itemsReceive real-time notifications e.g. Shopulator on Android
  52. 52. Today you need a lot more than a mobile appWe need a back-end … and a solution for pushserver... 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
  53. 53. With Onesocialweb, you focus on yourapplication 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(“alice@betavine.net”);
  54. 54. With Onesocialweb, you focus on yourapplication 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(“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);
  55. 55. With Onesocialweb, you focus on yourapplication 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(“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(); }}});
  56. 56. The power of having a common data model in afederated 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
  57. 57. The menu for todayHigh level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
  58. 58. Federated Social Web & SWAT- Federated Social Web Summit, June 2010 in Portland- June 2011 in Berlin- SWAT- Social Web Acid Test
  59. 59. The SWAT0 Use Case1.With his phone, Dave takes a photo of Tantek and uploads it using a service2.Dave tags the photo with Tantek3.Tantek gets a notification on another service that hes been tagged in a photo4.Evan, who is subscribed to Dave, sees the photo on yet another service5.Evan comments on the photo6.David and Tantek receive notifications that Evan has commented on the photo
  60. 60. SWAT0 Assumptions- Dave, Tantek, and Evan have accounts on different social networks- These social networks have at least two different codebases
  61. 61. 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.
  62. 62. The menu for todayHigh level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A
  63. 63. Get started:http://onesocialweb.orghttp://twitter.com/onesocialwebhttp://github.com/onesocialwebcontact@onesocialweb.org

×