A platform to build real-time social applications

                  Diana Cheng
 (formerly also: Laurent Eschenauer and Alard
                   Weisscher)
           SeaBeyond - Paris, February 3, 2011
Diana Cheng
Vodafone Group R&D


    @daianacheng
    dcheng@vodafonernd.com
    diana.cheng@vodafone.com
Onesocialweb: a free, open and
decentralized social networking platform
The menu for today


High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
The menu for today


High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
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
A lot of activities in this field...




         … but no such platform yet
protocol   platform   user experience
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
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
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
protocol
Architecture: federated client-server
e.g. Alice updates her status

    wonderland.lit                  realworld.com




                                              Real-time
                                              notifications




   alice@wonderland.lit            bob@realworld.com
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
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
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
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
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 !
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.
user experience
Community implementations




      HTML5 client                             iPhone client



                     And others in progress!
The menu for today


High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
The menu for today


High level overview
Demo
Protocol and data models
Hands on with the API
OSW on Mobile
Q&A
XMPP
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




From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009
XMPP
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)
Activitystrea.ms
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
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='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>
<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>
<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>
<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>
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 overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&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 overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
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
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
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”);
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);
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();
       }}});
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
The menu for today


High level overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&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 overview
Demo
Protocol and data models
OSW on Mobile
Hands on with the API
The Federated Social Web
Q&A
Get started:

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

contact@onesocialweb.org

SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

  • 1.
    A platform tobuild real-time social applications Diana Cheng (formerly also: Laurent Eschenauer and Alard Weisscher) SeaBeyond - Paris, February 3, 2011
  • 2.
    Diana Cheng Vodafone GroupR&D @daianacheng dcheng@vodafonernd.com diana.cheng@vodafone.com
  • 10.
    Onesocialweb: a free,open and decentralized social networking platform
  • 11.
    The menu fortoday High level overview Demo Protocol and data models OSW on Mobile Hands on with the API The Federated Social Web Q&A
  • 12.
    The menu fortoday High level overview Demo Protocol and data models OSW on Mobile Hands on with the API The Federated Social Web Q&A
  • 13.
    Can we makesocial 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
  • 14.
    A lot ofactivities in this field... … but no such platform yet
  • 15.
    protocol platform user experience
  • 16.
    protocol A protocol basedon open standards XMPP Identity, discovery & communication Activitystreams Data model for social objects VCard Data model for profiles XFN Data model for relationships
  • 17.
    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
  • 18.
    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
  • 19.
    protocol Architecture: federated client-server e.g.Alice updates her status wonderland.lit realworld.com Real-time notifications alice@wonderland.lit bob@realworld.com
  • 20.
    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
  • 21.
    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
  • 22.
    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
  • 23.
    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
  • 24.
    platform An open sourceplatform 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 !
  • 25.
    user experience A socialnetwork 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.
  • 26.
    user experience Community implementations HTML5 client iPhone client And others in progress!
  • 27.
    The menu fortoday High level overview Demo Protocol and data models OSW on Mobile Hands on with the API The Federated Social Web Q&A
  • 28.
    The menu fortoday High level overview Demo Protocol and data models Hands on with the API OSW on Mobile Q&A
  • 29.
  • 30.
    XMPP Why XMPP forOnesocialweb ? 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
  • 31.
    XMPP Why XMPP forOnesocialweb ? 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)
  • 32.
  • 33.
    Activitystreams References http://activitystrea.ms The Open andSocial Web Chris Messina Google I/O 2010 http://code.google.com/events/io/2010/sessions/open-and-social-web.html
  • 34.
    The need formachine 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
  • 35.
    The need formachine 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
  • 36.
    Yet, no commonway to describe rich social interactions... leading to proprietary data models title + link + summary + author + id + updated
  • 37.
    Activitystreams provides acommon language to describe social interactions... actor verb object target
  • 38.
    Activitystreams provides acommon language to describe social interactions... eschnou posted a note
  • 39.
    Activitystreams provides acommon language to describe social interactions... eschnou posted a picture to an album
  • 40.
    Activitystreams provides acommon language to describe social interactions... eschnou liked a video
  • 41.
    … building uponexisting Atom elements title + link + summary + author + id + updated + verb + object-type + target
  • 42.
    … building uponexisting 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
  • 43.
    Onesocialweb extends thisfurther with context data and access control rules actor verb object target context access-control
  • 44.
    Onesocialweb extends itfurther with context data and access control rules eschnou took a picture in Barcelona, it can be seen visible by 'friends'
  • 45.
  • 46.
    Juliet updates herstatus “O Romeo, Romeo, wherefore  art thou Romeo ?”
  • 47.
    <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>
  • 48.
    <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>
  • 49.
    <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>
  • 50.
    <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>
  • 51.
    Evolving spec, but... Already been adopted by: - Facebook - MySpace - Windows Live - Google Buzz - BBC - Opera - Superfeedr and many others...
  • 52.
    Fine grained accesscontrol - 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
  • 53.
    Fine grained accesscontrol - 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>
  • 54.
    The menu fortoday High level overview Demo Protocol and data models OSW on Mobile Hands on with the API The Federated Social Web Q&A
  • 55.
    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
  • 56.
    Our implementation Using somegreat open source libraries: - Smack library - Asmack library - JZLib library
  • 57.
    The menu fortoday High level overview Demo Protocol and data models OSW on Mobile Hands on with the API The Federated Social Web Q&A
  • 58.
    How would youcreate 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
  • 59.
    Today you needa 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
  • 60.
    With Onesocialweb, youfocus 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”);
  • 61.
    With Onesocialweb, youfocus 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);
  • 62.
    With Onesocialweb, youfocus 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(); }}});
  • 63.
    The power ofhaving 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
  • 64.
    The menu fortoday High level overview Demo Protocol and data models OSW on Mobile Hands on with the API The Federated Social Web Q&A
  • 65.
    Federated Social Web& SWAT - Federated Social Web Summit, June 2010 in Portland - June 2011 in Berlin - SWAT- Social Web Acid Test
  • 66.
    The SWAT0 UseCase 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
  • 67.
    SWAT0 Assumptions - Dave,Tantek, and Evan have accounts on different social networks - These social networks have at least two different codebases
  • 68.
    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.
  • 69.
    The menu fortoday High level overview Demo Protocol and data models OSW on Mobile Hands on with the API The Federated Social Web Q&A
  • 70.