+ All Categories
Home > Documents > SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Date post: 15-Jan-2015
Category:
Upload: processone
View: 900 times
Download: 1 times
Share this document with a friend
Description:
 
Popular Tags:
70
A platform to build real-time social applications Diana Cheng (formerly also: Laurent Eschenauer and Alard Weisscher) SeaBeyond - Paris, February 3, 2011
Transcript
Page 1: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

A platform to build real-time social applications

Diana Cheng(formerly also: Laurent Eschenauer and Alard

Weisscher)

SeaBeyond - Paris, February 3, 2011

Page 2: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

@daianacheng

[email protected]

[email protected]

Diana ChengVodafone Group R&D

Page 3: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
Page 4: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
Page 5: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
Page 6: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
Page 7: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
Page 8: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
Page 9: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
Page 10: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Onesocialweb: a free, open and decentralized social networking platform

Page 11: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

The menu for today

High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A

Page 12: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

The menu for today

High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A

Page 13: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Can we make social communications as simple and universal as email ?

Facebook

360

MySpace

Google

whatever.com

Friending and following across networks

One identity and yet multiple communities

Data portability

Page 14: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

A lot of activities in this field...

… but no such platform yet

Page 15: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

protocol platform user experience

Page 16: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

protocol

A protocol based on open standards

Identity, discovery & communication

Data model for social objects

Data model for profiles

Data model for relationships

XMPP

Activitystreams

VCard

XFN

Page 17: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

[email protected] [email protected]

wonderland.lit realworld.com

Post a new item to her stream

Architecture: federated client-servere.g. Alice updates her status

protocol

Page 18: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

[email protected] [email protected]

wonderland.lit realworld.com

Push notifications to recipients

Architecture: federated client-servere.g. Alice updates her status

protocol

Page 19: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

[email protected] [email protected]

wonderland.lit realworld.com

Real-time notifications

Architecture: federated client-servere.g. Alice updates her status

protocol

Page 20: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

[email protected]

wonderland.lit realworld.com

Request profile of [email protected]

Architecture: federated client-servere.g. Alice looks up Bob's profile

protocol

Page 21: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

[email protected]

wonderland.lit realworld.com

Request is forwarded to Bob's domainon [email protected] behalf.

Architecture: federated client-servere.g. Alice looks up Bob's profile

protocol

Page 22: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

[email protected]

wonderland.lit realworld.com

Bob's provider replies with the profile data that alice is allowed to see.

Architecture: federated client-servere.g. Alice looks up Bob's profile

protocol

Page 23: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

[email protected]

wonderland.lit realworld.com

Result is sent back to the requesting client

Architecture: federated client-servere.g. Alice looks up Bob's profile

protocol

Page 24: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

An open source platform

End to end platformserver backend, client libraries for desktop and mobile

Open sourceApache 2 licensehttp://github.com/onesocialweb

Java30% code reuse between componentsWeb client written in GWT (Java compiled to Javascript)

platform

Already available. Easy to setup. Join our growing community to experiment with us

and get involved via our mailing list !

Page 25: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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.

Page 26: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Community implementations

HTML5 client iPhone client

user experience

And others in progress!

Page 27: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

The menu for today

High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A

Page 28: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

The menu for today

High level overviewDemoProtocol and data modelsHands on with the APIOSW on MobileQ&A

Page 29: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

XMPP

Page 30: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Why XMPP for Onesocialweb ?

Web world is synchronous- send request- wait for answer- receive response

XMPP is asynchronous- long lived connections- event based messaging

XMPP

From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009

Page 31: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Why XMPP for Onesocialweb ?

Only technology to achieve such a federation seamlessly: Identity (user@domain) Security (TLS and S2S with dialback) Discovery (XMPP Disco) Useful extensions (Roster, PubSub, …)

Doing the same in the web world requires to assemble: OpenID (identity) Oauth (authentication and authorization) Webfinger (discovery and openid on en email) Pubsubhubbub (server to server push notifications) Salmon (messaging and commenting) … and to address a lot of other issues (e.g. Privacy, NAT clients)

XMPP

Page 32: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Activitystrea.ms

Page 33: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

References

http://activitystrea.ms

The Open and Social WebChris MessinaGoogle I/O 2010http://code.google.com/events/io/2010/sessions/open-and-social-web.html

Activitystreams

Page 34: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

Page 35: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

Page 36: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Yet, no common way to describe rich social interactions... leading to proprietary data models

title + link + summary +author + id + updated

Page 37: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

actor verb object target

Page 38: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

eschnou posted a note

Page 39: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

eschnou posted a picture to an album

Page 40: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

eschnou liked a video

Page 41: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

… building upon existing Atom elements

title + link + summary +author + id + updated +verb + object-type + target

Page 42: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

… 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

Page 43: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Onesocialweb extends this further with context data and access control rules

actor verb object target context access-control

Page 44: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Onesocialweb extends it further with context data and access control rules

eschnou took a picture in Barcelona,it can be seen visible by 'friends'

Page 45: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Putting it all together

Page 46: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Juliet updates her status“O Romeo, Romeo, wherefore 

art thou Romeo ?”

Page 47: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

<iq type='set' from='[email protected]/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns="http://jabber.org/protocol/pubsub"> <publish node=”urn:xmpp:microblog:0”> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:osw="http://onesocialweb.org/spec/1.0/"> <title>O Romeo, Romeo, wherefore art thou Romeo?</title> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/status</activity:object-type> <content>O Romeo, Romeo, wherefore art thou Romeo?</content> </activity:object> <osw:acl-rule> <osw:acl-action permission="http://onesocialweb.org/spec/1.0/acl/permission/grant"> http://onesocialweb.org/spec/1.0/acl/action/view </osw:acl-action> <osw:acl-subject>http://onesocialweb.org/spec/1.0/acl/subject/everyone</osw:acl-subject> </osw:acl-rule> </entry> </publish> </pubsub></iq>

Page 48: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

<iq type='set' from='[email protected]/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns="http://jabber.org/protocol/pubsub"> <publish node=”urn:xmpp:microblog:0”> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:osw="http://onesocialweb.org/spec/1.0/"> <title>O Romeo, Romeo, wherefore art thou Romeo?</title> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/status</activity:object-type> <content>O Romeo, Romeo, wherefore art thou Romeo?</content> </activity:object> <osw:acl-rule> <osw:acl-action permission="http://onesocialweb.org/spec/1.0/acl/permission/grant"> http://onesocialweb.org/spec/1.0/acl/action/view </osw:acl-action> <osw:acl-subject>http://onesocialweb.org/spec/1.0/acl/subject/everyone</osw:acl-subject> </osw:acl-rule> </entry> </publish> </pubsub></iq>

Page 49: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

<iq type='set' from='[email protected]/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns="http://jabber.org/protocol/pubsub"> <publish node=”urn:xmpp:microblog:0”> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:osw="http://onesocialweb.org/spec/1.0/"> <title>O Romeo, Romeo, wherefore art thou Romeo?</title> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/status</activity:object-type> <content>O Romeo, Romeo, wherefore art thou Romeo?</content> </activity:object> <osw:acl-rule> <osw:acl-action permission="http://onesocialweb.org/spec/1.0/acl/permission/grant"> http://onesocialweb.org/spec/1.0/acl/action/view </osw:acl-action> <osw:acl-subject>http://onesocialweb.org/spec/1.0/acl/subject/everyone</osw:acl-subject> </osw:acl-rule> </entry> </publish> </pubsub></iq>

Page 50: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

<iq type='set' from='[email protected]/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns="http://jabber.org/protocol/pubsub"> <publish node=”urn:xmpp:microblog:0”> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:osw="http://onesocialweb.org/spec/1.0/"> <title>O Romeo, Romeo, wherefore art thou Romeo?</title> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/status</activity:object-type> <content>O Romeo, Romeo, wherefore art thou Romeo?</content> </activity:object> <osw:acl-rule> <osw:acl-action permission="http://onesocialweb.org/spec/1.0/acl/permission/grant"> http://onesocialweb.org/spec/1.0/acl/action/view </osw:acl-action> <osw:acl-subject>http://onesocialweb.org/spec/1.0/acl/subject/everyone</osw:acl-subject> </osw:acl-rule> </entry> </publish> </pubsub></iq>

Page 51: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Evolving spec, but ...

Already been adopted by:

- Facebook - MySpace- Windows Live - Google Buzz- BBC- Opera - Superfeedr

and many others...

Page 52: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

Page 53: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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>

Page 54: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

The menu for today

High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A

Page 55: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

Page 56: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Our implementation

Using some great open source libraries:

- Smack library- Asmack library- JZLib library

Page 57: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

The menu for today

High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A

Page 58: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

e.g. Shopulator on Android

Create shopping listsShare them with friendsCollaborate on shopping itemsReceive real-time notifications

How would you create a social shopping list application ?

Page 59: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Today you need a lot more than a mobile app

We need a back-end server...

User registration Social graph management

(e.g. inviting friends) Data storage for the shopping list Web API

(to communicate with the mobile client)

… and a solution for push notifications

Custom TCP sockets Web sockets Comet (HTTP Long polling) SMS Apple Push Notifications Android C2DM

Page 60: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

With Onesocialweb, you focus on your application and let the protocol do the restCreate a shopping list object and a user as a collaborator

ShoppingList list = new ShoppingList();list.setTitle(“BBQ on Sunday”);list.addItem(“bread”);list.addCollaborator(“[email protected]”);

Page 61: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

With Onesocialweb, you focus on your application and let the protocol do the restCreate a shopping list object and a user as a collaborator

ShoppingList list = new ShoppingList();list.setTitle(“BBQ on Sunday”);list.addItem(“bread”);list.addCollaborator(“[email protected]”);

Connect to the user account and post the new shopping list

service.connect(“vodafonernd.com”, 5222, null);service.login(“eschnou”, “******”, “shoplist”);service.post(list);

Page 62: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

With Onesocialweb, you focus on your application and let the protocol do the restCreate a shopping list object and a user as a collaborator

ShoppingList list = new ShoppingList();list.setTitle(“BBQ on Sunday”);list.addItem(“bread”);list.addCollaborator(“[email protected]”);

Connect to the user account and post the new shopping list

service.connect(“vodafonernd.com”, 5222, null);service.login(“eschnou”, “******”, “shoplist”);service.post(list);

Listen to incoming social events and act on shopping list

service.registerInboxEventHandler(new InboxEventHandler() { public void handleEvent(InboxEvent event) { if (event.getObjectType().equals(“http://acme.com/shoppinglist“)) {

notify(); }}});

Page 63: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Facebook

360

MySpace

Google

The power of having a common data model in a federated network

[email protected]

[email protected]

[email protected]

Realtime picture sharing with friends and family, across networks, and without tight

coupling of the social applications

Page 64: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

The menu for today

High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A

Page 65: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Federated Social Web & SWAT

- Federated Social Web Summit, June 2010 in Portland

- June 2011 in Berlin

- SWAT- Social Web Acid Test

Page 66: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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

Page 67: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

SWAT0 Assumptions

- Dave, Tantek, and Evan have accounts on different social networks

- These social networks have at least two different codebases

Page 68: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

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.

Page 69: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

The menu for today

High level overviewDemoProtocol and data modelsOSW on MobileHands on with the APIThe Federated Social WebQ&A

Page 70: SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb

Get started:

http://onesocialweb.org

http://twitter.com/onesocialweb

http://github.com/onesocialweb

[email protected]


Recommended