SlideShare une entreprise Scribd logo
1  sur  69
A platform to build  real-time social   applications Diana Cheng (formerly also: Laurent Eschenauer and Alard Weisscher) Over The Air - London, September 10, 2010
Diana Cheng Vodafone Group R&D @daianacheng [email_address] [email_address]
 
 
 
 
 
 
 
Onesocialweb : a free, open and decentralized social networking platform
The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
Can we make social communications as simple and universal as email ? Facebook 360 MySpace Google whatever.com ,[object Object]
One identity and yet multiple communities
Data portability
A lot of activities in this field... … but no such platform yet
protocol platform user experience
A protocol based on open standards Identity, discovery & communication Data model for social objects Data model for profiles Data model for relationships protocol XMPP Activitystreams VCard XFN
[email_address] [email_address] wonderland.lit realworld.com Post a new item to her stream Architecture: federated client-server e.g. Alice updates her status protocol
[email_address] [email_address] wonderland.lit realworld.com Push notifications to recipients Architecture: federated client-server e.g. Alice updates her status protocol
[email_address] [email_address] wonderland.lit realworld.com Real-time notifications Architecture: federated client-server e.g. Alice updates her status protocol
[email_address] wonderland.lit realworld.com Request profile of bob@realworld.com Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
[email_address] wonderland.lit realworld.com Request is forwarded to Bob's domain on  [email_address]  behalf. Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
[email_address] wonderland.lit realworld.com Bob's provider replies with the profile data that alice is allowed to see. Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
[email_address] wonderland.lit realworld.com Result is sent back to the requesting client Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
An open source platform End to end platform server backend, client libraries for desktop and mobile Open source Apache 2 license http://github.com/onesocialweb Java 30% code reuse between components Web client written in GWT (Java compiled to Javascript) platform Already available. Easy to setup. Join our growing community to experiment with us and get involved via our mailing list !
A social network user experience web client (HTML + JS) Android client user experience This is just one implementation of a social networking experience. Keep in mind that Onesocialweb is a  platform  enabling any kind of social applications.
The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
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 XMPP
Architecture Web is a browser (thin client) – server architecture From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit web server realworld.com web server browser XMPP
Architecture Email is client – server with multi-hop federation From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit email server realworld.com email server email client [email_address] between.org email server email client [email_address] XMPP
Architecture XMPP is a client – server with single hop federation From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit xmpp server realworld.com xmpp server xmpp client [email_address] xmpp client [email_address] XMPP
Similar to email Addressing User    Domain alice @ wonderland.lit Bare JID (Jabber ID) From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
Similar to email – with an added resource Addressing User    Domain   Resource alice @ wonderland.lit / rabbithole Full JID (Jabber ID) From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
Streaming XML  <stream: stream> <presence/> <iq type=&quot;get&quot;> <query xmlns=&quot;jabber:iq:roster&quot;/> </iq> <iq type=&quot;result&quot;> <query xmlns=&quot;jabber:iq:roster&quot;> <item jid=&quot;alice@wonderland.lit&quot;/> <item jid=&quot;madhatter@wonderland.lit&quot;/> <item jid=&quot;whiterabbit@wonderland.lit&quot;/> </query> </iq> <message from=&quot;queen@wonderland.lit&quot; to=&quot;madhatter@wonderland.lit&quot;> <body>Off with his head!</body> </message> <message from=&quot; [email_address] &quot; to=&quot;party@conference.wonderland.lit&quot;> <body>You are all pardoned.</body> </message> <presence type=&quot;unavailable&quot;/> </stream: stream> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
Communication based on three “stanzas” <message /> <presence /> <iq /> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
Message stanza <message from=&quot;queen@wonderland.lit&quot;    to=&quot;madhatter@wonderland.lit&quot;> <body>Off with his head!</body> </message> One to one messaging (from & to addresses) Different types of messages (chat, headline, error, …) Basic payload of subject and body From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
Presence stanza <presence from=&quot;alice@wonderland.lit&quot;> <show>xa</show> <status>down the rabbit hole !</status> </presence> Advertise network availability Rich presence (away, available for chat...) Rich status (a free text entry) Typically used for rosters in IM use cases From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
IQ stanza <iq type=&quot;get&quot;> <query xmlns=&quot;jabber:iq:roster&quot;/> </iq> <iq type=&quot;result&quot;> <query xmlns=&quot;jabber:iq:roster&quot;> <item jid=&quot;alice@wonderland.lit&quot;/> <item jid=&quot;madhatter@wonderland.lit&quot;/> <item jid=&quot;whiterabbit@wonderland.lit&quot;/> </query> </iq> Request/response Enable querying and editing of resources Similar to HTTP GET & HTTP POST From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
e X tensible  MPP Any child XML element can be used as a payload, using XML namespaces to manage scope <message from=&quot;queen@wonderland.lit&quot;    to=&quot;madhatter@wonderland.lit&quot;> <body>Off with his head!</body> < entry  xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <published>2010-01-13T12:40:51.292Z</published> <author> <name>The Queen</name> </author> <title>Message from the Queen</title> <content type='html'> Off with his <b>head</b>! </content> </message> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
Long-lived connection & asynchronous Web world is synchronous - send request - wait for answer - receive response XMPP is  a synchronous - long lived connections - event based messaging From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
Why XMPP for Onesocialweb ? Only technology to achieve such a federation seamlessly: ,[object Object]
Security (TLS and S2S with dialback)
Discovery (XMPP Disco)
Useful extensions (Roster, PubSub, …) Doing the same in the web world requires to assemble: ,[object Object]
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
References http://activitystrea.ms The Open and Social Web Chris Messina Google I/O 2010 http://code.google.com/events/io/2010/sessions/open-and-social-web.html Activitystreams
The need for machine readable data 1999 – Introduction of RSS <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <rss version=&quot;2.0&quot;> <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=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <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=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <feed  xmlns= &quot;http://www.w3.org/2005/Atom&quot;  xmlns:activity= &quot;http://activitystrea.ms/spec/1.0/&quot; > <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=&quot; http://jabber.org/protocol/pubsub &quot;> <publish node=”urn:xmpp:microblog:0”> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;  xmlns:activity=&quot;http://activitystrea.ms/spec/1.0/&quot;  xmlns:osw=&quot;http://onesocialweb.org/spec/1.0/&quot;> <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=&quot;http://onesocialweb.org/spec/1.0/acl/permission/grant&quot;> 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=&quot; http://jabber.org/protocol/pubsub &quot;> <publish node=”urn:xmpp:microblog:0”> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;  xmlns:activity=&quot;http://activitystrea.ms/spec/1.0/&quot;  xmlns:osw=&quot;http://onesocialweb.org/spec/1.0/&quot;> <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=&quot;http://onesocialweb.org/spec/1.0/acl/permission/grant&quot;> 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 >

Contenu connexe

Similaire à Build real-time social applications platform overview

XMPP For Cloud Computing
XMPP For Cloud ComputingXMPP For Cloud Computing
XMPP For Cloud ComputingBluendo
 
Jaimin chp-7 - application layer- 2011 batch
Jaimin   chp-7 - application layer- 2011 batchJaimin   chp-7 - application layer- 2011 batch
Jaimin chp-7 - application layer- 2011 batchJaimin Jani
 
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWebSeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWebProcessOne
 
Os Saintandre
Os SaintandreOs Saintandre
Os Saintandreoscon2007
 
Secure Communications with Jabber
Secure Communications with JabberSecure Communications with Jabber
Secure Communications with Jabberstpeter
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPGenora Infotech
 
Introduction to the Internet
Introduction to the InternetIntroduction to the Internet
Introduction to the Internetcoastalgraphics
 
Browser APIs for data exchange: types and application
Browser APIs for data exchange: types and applicationBrowser APIs for data exchange: types and application
Browser APIs for data exchange: types and applicationPavel Klimiankou
 
Computer network network edge and network
Computer network network edge and networkComputer network network edge and network
Computer network network edge and networkrjnavallasca
 
Jabber 101
Jabber 101Jabber 101
Jabber 101stpeter
 
Computer network (10)
Computer network (10)Computer network (10)
Computer network (10)NYversity
 
บทที่ 2 โพรโตคอล (protocol)
บทที่  2 โพรโตคอล (protocol)บทที่  2 โพรโตคอล (protocol)
บทที่ 2 โพรโตคอล (protocol)chrisman77
 
INTERNET APPLICATION AND EMAIL:
INTERNET APPLICATION AND EMAIL:INTERNET APPLICATION AND EMAIL:
INTERNET APPLICATION AND EMAIL:shahzadebaujiti
 

Similaire à Build real-time social applications platform overview (20)

XMPP For Cloud Computing
XMPP For Cloud ComputingXMPP For Cloud Computing
XMPP For Cloud Computing
 
Xmpp and java
Xmpp and javaXmpp and java
Xmpp and java
 
Xmppforcloudcomputing
XmppforcloudcomputingXmppforcloudcomputing
Xmppforcloudcomputing
 
Jaimin chp-7 - application layer- 2011 batch
Jaimin   chp-7 - application layer- 2011 batchJaimin   chp-7 - application layer- 2011 batch
Jaimin chp-7 - application layer- 2011 batch
 
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWebSeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
SeaBeyond 2011 ProcessOne - Diana Cheng: OneSocialWeb
 
Os Saintandre
Os SaintandreOs Saintandre
Os Saintandre
 
Secure Communications with Jabber
Secure Communications with JabberSecure Communications with Jabber
Secure Communications with Jabber
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIP
 
Chapter_2_v8.1.pptx
Chapter_2_v8.1.pptxChapter_2_v8.1.pptx
Chapter_2_v8.1.pptx
 
soap toolkit
soap toolkitsoap toolkit
soap toolkit
 
Introduction to the Internet
Introduction to the InternetIntroduction to the Internet
Introduction to the Internet
 
Browser APIs for data exchange: types and application
Browser APIs for data exchange: types and applicationBrowser APIs for data exchange: types and application
Browser APIs for data exchange: types and application
 
Computer network network edge and network
Computer network network edge and networkComputer network network edge and network
Computer network network edge and network
 
Jabber 101
Jabber 101Jabber 101
Jabber 101
 
Computer network (10)
Computer network (10)Computer network (10)
Computer network (10)
 
บทที่ 2 โพรโตคอล (protocol)
บทที่  2 โพรโตคอล (protocol)บทที่  2 โพรโตคอล (protocol)
บทที่ 2 โพรโตคอล (protocol)
 
20CS2008 Computer Networks
20CS2008 Computer Networks 20CS2008 Computer Networks
20CS2008 Computer Networks
 
Communicating System
Communicating SystemCommunicating System
Communicating System
 
INTERNET APPLICATION AND EMAIL:
INTERNET APPLICATION AND EMAIL:INTERNET APPLICATION AND EMAIL:
INTERNET APPLICATION AND EMAIL:
 
Chapter_2_v8.3.pptx
Chapter_2_v8.3.pptxChapter_2_v8.3.pptx
Chapter_2_v8.3.pptx
 

Dernier

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Dernier (20)

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Build real-time social applications platform overview

  • 1. A platform to build real-time social applications Diana Cheng (formerly also: Laurent Eschenauer and Alard Weisscher) Over The Air - London, September 10, 2010
  • 2. Diana Cheng Vodafone Group R&D @daianacheng [email_address] [email_address]
  • 3.  
  • 4.  
  • 5.  
  • 6.  
  • 7.  
  • 8.  
  • 9.  
  • 10. Onesocialweb : a free, open and decentralized social networking platform
  • 11. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
  • 12. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
  • 13.
  • 14. One identity and yet multiple communities
  • 16. A lot of activities in this field... … but no such platform yet
  • 18. A protocol based on open standards Identity, discovery & communication Data model for social objects Data model for profiles Data model for relationships protocol XMPP Activitystreams VCard XFN
  • 19. [email_address] [email_address] wonderland.lit realworld.com Post a new item to her stream Architecture: federated client-server e.g. Alice updates her status protocol
  • 20. [email_address] [email_address] wonderland.lit realworld.com Push notifications to recipients Architecture: federated client-server e.g. Alice updates her status protocol
  • 21. [email_address] [email_address] wonderland.lit realworld.com Real-time notifications Architecture: federated client-server e.g. Alice updates her status protocol
  • 22. [email_address] wonderland.lit realworld.com Request profile of bob@realworld.com Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
  • 23. [email_address] wonderland.lit realworld.com Request is forwarded to Bob's domain on [email_address] behalf. Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
  • 24. [email_address] wonderland.lit realworld.com Bob's provider replies with the profile data that alice is allowed to see. Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
  • 25. [email_address] wonderland.lit realworld.com Result is sent back to the requesting client Architecture: federated client-server e.g. Alice looks up Bob's profile protocol
  • 26. An open source platform End to end platform server backend, client libraries for desktop and mobile Open source Apache 2 license http://github.com/onesocialweb Java 30% code reuse between components Web client written in GWT (Java compiled to Javascript) platform Already available. Easy to setup. Join our growing community to experiment with us and get involved via our mailing list !
  • 27. A social network user experience web client (HTML + JS) Android client user experience This is just one implementation of a social networking experience. Keep in mind that Onesocialweb is a platform enabling any kind of social applications.
  • 28. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
  • 29. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
  • 30. XMPP
  • 31. References XMPP: The definitive guide Peter Saint-Andre, Remko Troncon, Kevin Smith O'Reilly 1999 ISBN: 978-0-596-52126-4 XMPP 101 Peter Saint-Andre & Remko Troncon FOSDEM 2009 http://el-tramo.be/blog/xmpp-101-fosdem XMPP
  • 32. Architecture Web is a browser (thin client) – server architecture From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit web server realworld.com web server browser XMPP
  • 33. Architecture Email is client – server with multi-hop federation From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit email server realworld.com email server email client [email_address] between.org email server email client [email_address] XMPP
  • 34. Architecture XMPP is a client – server with single hop federation From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 wonderland.lit xmpp server realworld.com xmpp server xmpp client [email_address] xmpp client [email_address] XMPP
  • 35. Similar to email Addressing User Domain alice @ wonderland.lit Bare JID (Jabber ID) From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 36. Similar to email – with an added resource Addressing User Domain Resource alice @ wonderland.lit / rabbithole Full JID (Jabber ID) From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 37. Streaming XML <stream: stream> <presence/> <iq type=&quot;get&quot;> <query xmlns=&quot;jabber:iq:roster&quot;/> </iq> <iq type=&quot;result&quot;> <query xmlns=&quot;jabber:iq:roster&quot;> <item jid=&quot;alice@wonderland.lit&quot;/> <item jid=&quot;madhatter@wonderland.lit&quot;/> <item jid=&quot;whiterabbit@wonderland.lit&quot;/> </query> </iq> <message from=&quot;queen@wonderland.lit&quot; to=&quot;madhatter@wonderland.lit&quot;> <body>Off with his head!</body> </message> <message from=&quot; [email_address] &quot; to=&quot;party@conference.wonderland.lit&quot;> <body>You are all pardoned.</body> </message> <presence type=&quot;unavailable&quot;/> </stream: stream> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 38. Communication based on three “stanzas” <message /> <presence /> <iq /> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 39. Message stanza <message from=&quot;queen@wonderland.lit&quot; to=&quot;madhatter@wonderland.lit&quot;> <body>Off with his head!</body> </message> One to one messaging (from & to addresses) Different types of messages (chat, headline, error, …) Basic payload of subject and body From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 40. Presence stanza <presence from=&quot;alice@wonderland.lit&quot;> <show>xa</show> <status>down the rabbit hole !</status> </presence> Advertise network availability Rich presence (away, available for chat...) Rich status (a free text entry) Typically used for rosters in IM use cases From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 41. IQ stanza <iq type=&quot;get&quot;> <query xmlns=&quot;jabber:iq:roster&quot;/> </iq> <iq type=&quot;result&quot;> <query xmlns=&quot;jabber:iq:roster&quot;> <item jid=&quot;alice@wonderland.lit&quot;/> <item jid=&quot;madhatter@wonderland.lit&quot;/> <item jid=&quot;whiterabbit@wonderland.lit&quot;/> </query> </iq> Request/response Enable querying and editing of resources Similar to HTTP GET & HTTP POST From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 42. e X tensible MPP Any child XML element can be used as a payload, using XML namespaces to manage scope <message from=&quot;queen@wonderland.lit&quot; to=&quot;madhatter@wonderland.lit&quot;> <body>Off with his head!</body> < entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <published>2010-01-13T12:40:51.292Z</published> <author> <name>The Queen</name> </author> <title>Message from the Queen</title> <content type='html'> Off with his <b>head</b>! </content> </message> From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 43. Long-lived connection & asynchronous Web world is synchronous - send request - wait for answer - receive response XMPP is a synchronous - long lived connections - event based messaging From: XMPP 101 by Peter Saint-Andre and Remko Tronco, FOSDEM 2009 XMPP
  • 44.
  • 45. Security (TLS and S2S with dialback)
  • 47.
  • 48. Oauth (authentication and authorization)
  • 49. Webfinger (discovery and openid on en email)
  • 50. Pubsubhubbub (server to server push notifications)
  • 51. Salmon (messaging and commenting)
  • 52. … and to address a lot of other issues (e.g. Privacy, NAT clients)
  • 54. References http://activitystrea.ms The Open and Social Web Chris Messina Google I/O 2010 http://code.google.com/events/io/2010/sessions/open-and-social-web.html Activitystreams
  • 55. The need for machine readable data 1999 – Introduction of RSS <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <rss version=&quot;2.0&quot;> <channel> <item> <title>When Will Location-Based Coupons Take Off?</title> <link>http://bits.blogs.nytimes.com/2010/03/12/when-will- location-based-mobile-coupons-take-off/</link> <pubDate>Fri, 12 Mar 2010 21:38:26 +0000</pubDate> <creator>By CLAIRE CAIN MILLER</creator> <description> People want to receive location-based cellphone coupons, but most have not, according to a Web analytics firm. </description> </item> </channel> </rss> title + link + description From: The Open and Social web, Chris Messina , Google I/O 2010
  • 56. The need for machine readable data 2005 – Atom addresses some of the shortcomings <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <entry> <title>When Will Location-Based Coupons Take Off?</title> <link rel=”alternate”>http://bits.blogs.nytimes.com/2010/03/12/when-will- location-based-mobile-coupons-take-off/</link> <id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id> <updated>Fri, 12 Mar 2010 21:38:26 +0000</updated> <author> <name>By CLAIRE CAIN MILLER</name> </author> <summary> People want to receive location-based cellphone coupons, but most have not, according to a Web analytics firm. </summary> </entry> </feed> title + link + summary + author + id + updated From: The Open and Social web, Chris Messina , Google I/O 2010
  • 57. Yet, no common way to describe rich social interactions... leading to proprietary data models title + link + summary + author + id + updated
  • 58. Activitystreams provides a common language to describe social interactions... actor verb object target
  • 59. Activitystreams provides a common language to describe social interactions... eschnou posted a note
  • 60. Activitystreams provides a common language to describe social interactions... eschnou posted a picture to an album
  • 61. Activitystreams provides a common language to describe social interactions... eschnou liked a video
  • 62. … building upon existing Atom elements title + link + summary + author + id + updated + verb + object-type + target
  • 63. … building upon existing Atom elements <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <feed xmlns= &quot;http://www.w3.org/2005/Atom&quot; xmlns:activity= &quot;http://activitystrea.ms/spec/1.0/&quot; > <entry> <title> ... </title> <link rel=”alternate”> ... </link> <id> ... </id> <updated> ... </updated> <author> <activity:object-type> person </activity:object-type> <name> ... </name> </author> <activity:verb> post </activity:verb> <activity:object> <activity:object-type> note </activity:object-type> <content type= ”html” > ... </content> </activity:object> </entry> </feed> From: The Open and Social web, Chris Messina , Google I/O 2010
  • 64. Onesocialweb extends this further with context data and access control rules actor verb object target context access-control
  • 65. Onesocialweb extends it further with context data and access control rules eschnou took a picture in Barcelona , it can be seen visible by 'friends'
  • 66. Putting it all together
  • 67. Juliet updates her status “ O Romeo, Romeo, wherefore art thou Romeo ?”
  • 68. <iq type='set' from='juliet@capulet.lit/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns=&quot; http://jabber.org/protocol/pubsub &quot;> <publish node=”urn:xmpp:microblog:0”> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:activity=&quot;http://activitystrea.ms/spec/1.0/&quot; xmlns:osw=&quot;http://onesocialweb.org/spec/1.0/&quot;> <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=&quot;http://onesocialweb.org/spec/1.0/acl/permission/grant&quot;> 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 >
  • 69. <iq type='set' from='juliet@capulet.lit/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns=&quot; http://jabber.org/protocol/pubsub &quot;> <publish node=”urn:xmpp:microblog:0”> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:activity=&quot;http://activitystrea.ms/spec/1.0/&quot; xmlns:osw=&quot;http://onesocialweb.org/spec/1.0/&quot;> <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=&quot;http://onesocialweb.org/spec/1.0/acl/permission/grant&quot;> 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 >
  • 70. <iq type='set' from='juliet@capulet.lit/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns=&quot; http://jabber.org/protocol/pubsub &quot;> <publish node=”urn:xmpp:microblog:0”> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:activity=&quot;http://activitystrea.ms/spec/1.0/&quot; xmlns:osw=&quot;http://onesocialweb.org/spec/1.0/&quot;> <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=&quot;http://onesocialweb.org/spec/1.0/acl/permission/grant&quot;> 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 >
  • 71. <iq type='set' from='juliet@capulet.lit/mobile' to='capulet.lit' id='osw1'> <pubsub xmlns=&quot; http://jabber.org/protocol/pubsub &quot;> <publish node=”urn:xmpp:microblog:0”> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:activity=&quot;http://activitystrea.ms/spec/1.0/&quot; xmlns:osw=&quot;http://onesocialweb.org/spec/1.0/&quot;> <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=&quot;http://onesocialweb.org/spec/1.0/acl/permission/grant&quot;> 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 >
  • 72. The menu for today High level overview Demo Protocol and data models Hands on with the API Q&A
  • 73. e.g. Shopulator on Android Create shopping lists Share them with friends Collaborate on shopping items Receive real-time notifications How would you create a social shopping list application ?
  • 74.
  • 77. Data storage for the shopping list
  • 79.
  • 81. Comet (HTTP Long polling)
  • 82. SMS
  • 85. With Onesocialweb, you focus on your application and let the protocol do the rest Create a shopping list object and a user as a collaborator ShoppingList list = new ShoppingList(); list.setTitle( “BBQ on Sunday” ); list.addItem( “bread” ); list.addCollaborator ( “alice@betavine.net” );
  • 86. With Onesocialweb, you focus on your application and let the protocol do the rest Create a shopping list object and a user as a collaborator ShoppingList list = new ShoppingList(); list.setTitle( “BBQ on Sunday” ); list.addItem( “bread” ); list.addCollaborator ( “alice@betavine.net” ); Connect to the user account and post the new shopping list service.connect( “vodafonernd.com” , 5222, null); service.login( “eschnou” , “******” , “shoplist” ); service.post(list);
  • 87. With Onesocialweb, you focus on your application and let the protocol do the rest Create a shopping list object and a user as a collaborator ShoppingList list = new ShoppingList(); list.setTitle( “BBQ on Sunday” ); list.addItem( “bread” ); list.addCollaborator ( “alice@betavine.net” ); Connect to the user account and post the new shopping list service.connect( “vodafonernd.com” , 5222, null); service.login( “eschnou” , “******” , “shoplist” ); service.post(list); Listen to incoming social events and act on shopping list service.registerInboxEventHandler(new InboxEventHandler() { public void handleEvent(InboxEvent event) { if (event.getObjectType().equ als( “ http://acme.com/shoppinglist “ )) { notify(); }}});
  • 88. The power of having a common data model in a federated network [email_address] [email_address] [email_address] Facebook 360 MySpace Google Realtime picture sharing with friends and family, across networks, and without tight coupling of the social applications
  • 89. Get started: http://onesocialweb.org http://twitter.com/onesocialweb http://github.com/onesocialweb [email_address]