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 à Onesocialweb Presentation at OTA10

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 à Onesocialweb Presentation at OTA10 (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

Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringWSO2
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseWSO2
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuidePixlogix Infotech
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....rightmanforbloodline
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...FIDO Alliance
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceIES VE
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Paige Cruz
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...SOFTTECHHUB
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxFIDO Alliance
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaWSO2
 

Dernier (20)

Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 

Onesocialweb Presentation at OTA10

  • 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]