• Save
XMPP 101
Upcoming SlideShare
Loading in...5
×
 

XMPP 101

on

  • 16,532 views

A fast-paced introduction to XMPP.

A fast-paced introduction to XMPP.

Statistics

Views

Total Views
16,532
Views on SlideShare
14,655
Embed Views
1,877

Actions

Likes
78
Downloads
1
Comments
2

22 Embeds 1,877

http://facemain.com 792
http://el-tramo.be 271
http://leejava.wordpress.com 227
http://blog.xmpp.org 221
http://raveen.in 151
http://xmpp.org 92
http://www.slideshare.net 84
http://www.techgig.com 6
http://isoc-ny.org 5
http://edit.optimizely.com 4
http://translate.googleusercontent.com 3
http://localhost 3
url_unknown 3
http://webcache.googleusercontent.com 3
http://www.linkedin.com 2
http://stage.el-tramo.be 2
http://replay.waybackmachine.org 2
http://wildfire.gigya.com 2
http://www.isoc-ny.org 1
http://static.slidesharecdn.com 1
https://si0.twimg.com 1
https://leejava.wordpress.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />

XMPP 101 XMPP 101 Presentation Transcript

  • XMPP 101 Remko Tronçon Peter Saint-Andre Tuesday, March 3, 2009
  • Overview Introduction XMPP Basics Example code Extensions State of the bulb Conclusion 2 Tuesday, March 3, 2009
  • Introduction Tuesday, March 3, 2009
  • About Us 4 Tuesday, March 3, 2009
  • About Us Peter: Documentation guy and specification author 4 Tuesday, March 3, 2009
  • About Us Peter: Documentation guy and specification author Remko: Developer for Psi client and other projects 4 Tuesday, March 3, 2009
  • About Us Peter: Documentation guy and specification author Remko: Developer for Psi client and other projects Co-authors (with Kevin Smith) of XMPP: The Definitive Guide (O'Reilly, 2009) 4 Tuesday, March 3, 2009
  • About You 5 Tuesday, March 3, 2009
  • About You Why are you here? 5 Tuesday, March 3, 2009
  • About You Why are you here? What do you want to build? 5 Tuesday, March 3, 2009
  • About You Why are you here? What do you want to build? What is your background? (web, client-server, ...) 5 Tuesday, March 3, 2009
  • What is XMPP? 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit server server Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit server server Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit server server <message to=’sister@rlworld.lit’> <body>Hi there!</body> </message> Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit server server <message to=’sister@rlworld.lit’> <body>Hi there!</body> </message> Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit ... server server <message to=’sister@rlworld.lit’> <body>Hi there!</body> </message> Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit ... server server <message to=’sister@rlworld.lit’> <message from=’alice@wland.lit’> <body>Hi there!</body> <body>Hi there!</body> </message> </message> Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • What can you do with XMPP? 7 Tuesday, March 3, 2009
  • What can you do with XMPP? Instant Messaging 7 Tuesday, March 3, 2009
  • What can you do with XMPP? Real-time Social Networking 8 Tuesday, March 3, 2009
  • What can you do with XMPP? Gaming 9 Tuesday, March 3, 2009
  • What can you do with XMPP? Voice & Video 10 Tuesday, March 3, 2009
  • What can you do with XMPP? Mobile apps / Geolocation 11 Tuesday, March 3, 2009
  • What can you do with XMPP? <insert your idea here> 12 Tuesday, March 3, 2009
  • XMPP ... 13 Tuesday, March 3, 2009
  • XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) 13 Tuesday, March 3, 2009
  • XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) 13 Tuesday, March 3, 2009
  • XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) ... has strong security (TLS) 13 Tuesday, March 3, 2009
  • XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) ... has strong security (TLS) ... has lots of open-source projects (but other licensing allowed) 13 Tuesday, March 3, 2009
  • XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) ... has strong security (TLS) ... has lots of open-source projects (but other licensing allowed) ... has an active, open community 13 Tuesday, March 3, 2009
  • What does XMPP provide? 14 Tuesday, March 3, 2009
  • What does XMPP provide? Channel encryption and authentication 14 Tuesday, March 3, 2009
  • What does XMPP provide? Channel encryption and authentication Presence and contact lists 14 Tuesday, March 3, 2009
  • What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging 14 Tuesday, March 3, 2009
  • What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) 14 Tuesday, March 3, 2009
  • What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) Service discovery and device capabilities 14 Tuesday, March 3, 2009
  • What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) Service discovery and device capabilities Peer-to-peer media sessions (Jingle) 14 Tuesday, March 3, 2009
  • What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) Service discovery and device capabilities Peer-to-peer media sessions (Jingle) Data forms and remote commands 14 Tuesday, March 3, 2009
  • What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) Service discovery and device capabilities Peer-to-peer media sessions (Jingle) Data forms and remote commands And more (lots of extensions) 14 Tuesday, March 3, 2009
  • History 15 Tuesday, March 3, 2009
  • History Invented by Jeremie Miller as Jabber (1998) 15 Tuesday, March 3, 2009
  • History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) 15 Tuesday, March 3, 2009
  • History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) 15 Tuesday, March 3, 2009
  • History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) Core standardization in IETF as XMPP (2002-2004) 15 Tuesday, March 3, 2009
  • History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) Core standardization in IETF as XMPP (2002-2004) Development of extensions (2002+) 15 Tuesday, March 3, 2009
  • History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) Core standardization in IETF as XMPP (2002-2004) Development of extensions (2002+) Serious adoption by Apple, Google, LiveJournal, Nokia, Cisco, etc. (2005+) 15 Tuesday, March 3, 2009
  • History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) Core standardization in IETF as XMPP (2002-2004) Development of extensions (2002+) Serious adoption by Apple, Google, LiveJournal, Nokia, Cisco, etc. (2005+) Continuing work on improved security and more application types 15 Tuesday, March 3, 2009
  • Basics Tuesday, March 3, 2009
  • Architecture Web architecture 17 Tuesday, March 3, 2009
  • Architecture Web architecture Browser 17 Tuesday, March 3, 2009
  • Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • Architecture E-Mail architecture 18 Tuesday, March 3, 2009
  • Architecture E-Mail architecture E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • Architecture XMPP Architecture realworld.lit wonderland.lit server server XMPP client XMPP client sister@realworld.lit alice@wonderland.lit 19 Tuesday, March 3, 2009
  • Architecture XMPP Architecture realworld.lit wonderland.lit server server XMPP client XMPP client sister@realworld.lit alice@wonderland.lit 19 Tuesday, March 3, 2009
  • Architecture XMPP Architecture realworld.lit wonderland.lit server server XMPP client XMPP client sister@realworld.lit alice@wonderland.lit 19 Tuesday, March 3, 2009
  • Architecture XMPP Architecture realworld.lit wonderland.lit server server XMPP client XMPP client sister@realworld.lit alice@wonderland.lit 19 Tuesday, March 3, 2009
  • Architecture 20 Tuesday, March 3, 2009
  • Architecture Client-server 20 Tuesday, March 3, 2009
  • Architecture Client-server Client developers can focus on user experience 20 Tuesday, March 3, 2009
  • Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability 20 Tuesday, March 3, 2009
  • Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized 20 Tuesday, March 3, 2009
  • Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized Robust (no single point of failure) 20 Tuesday, March 3, 2009
  • Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized Robust (no single point of failure) Easier to manage 20 Tuesday, March 3, 2009
  • Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized Robust (no single point of failure) Easier to manage No multiple hops 20 Tuesday, March 3, 2009
  • Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized Robust (no single point of failure) Easier to manage No multiple hops Harder to spoof 20 Tuesday, March 3, 2009
  • Addresses Jabber ID (JID) 21 Tuesday, March 3, 2009
  • Addresses Jabber ID (JID) Domain wonderland.lit 21 Tuesday, March 3, 2009
  • Addresses Jabber ID (JID) User Domain alice@ wonderland.lit 21 Tuesday, March 3, 2009
  • Addresses Jabber ID (JID) User Domain alice@ wonderland.lit Bare JID 21 Tuesday, March 3, 2009
  • Addresses Jabber ID (JID) User Domain alice@ wonderland.lit 21 Tuesday, March 3, 2009
  • Addresses Jabber ID (JID) User Domain Resource alice@ wonderland.lit /TeaParty 21 Tuesday, March 3, 2009
  • Addresses Jabber ID (JID) User Domain Resource alice@ wonderland.lit /TeaParty Full JID 21 Tuesday, March 3, 2009
  • Streaming XML 22 Tuesday, March 3, 2009
  • Streaming XML <stream:stream> 22 Tuesday, March 3, 2009
  • Streaming XML <stream:stream> <presence/> 22 Tuesday, March 3, 2009
  • Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 22 Tuesday, March 3, 2009
  • Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> 22 Tuesday, March 3, 2009
  • Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;> <body>Off with his head!</body> </message> 22 Tuesday, March 3, 2009
  • Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;> <body>Off with his head!</body> </message> <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;> <body>You are all pardoned.</body> </message> 22 Tuesday, March 3, 2009
  • Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;> <body>Off with his head!</body> </message> <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;> <body>You are all pardoned.</body> </message> <presence type=quot;unavailablequot;/> 22 Tuesday, March 3, 2009
  • Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;> <body>Off with his head!</body> </message> <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;> <body>You are all pardoned.</body> </message> <presence type=quot;unavailablequot;/> </stream:stream> 22 Tuesday, March 3, 2009
  • Communication Primitives Stanzas: 23 Tuesday, March 3, 2009
  • Communication Primitives Stanzas: <message/> 23 Tuesday, March 3, 2009
  • Communication Primitives Stanzas: <message/> <presence/> 23 Tuesday, March 3, 2009
  • Communication Primitives Stanzas: <message/> <presence/> <iq/> 23 Tuesday, March 3, 2009
  • Message Stanzas 24 Tuesday, March 3, 2009
  • Message Stanzas <message from=quot;madhatter@wonderland.lit/fooquot; to=quot;alice@wonderland.litquot; type=quot;chatquot;> <body>Who are you?</body> <subject>Query</subject> </message> 24 Tuesday, March 3, 2009
  • Message Stanzas <message from=quot;madhatter@wonderland.lit/fooquot; to=quot;alice@wonderland.litquot; type=quot;chatquot;> <body>Who are you?</body> <subject>Query</subject> </message> From, To 24 Tuesday, March 3, 2009
  • Message Stanzas <message from=quot;madhatter@wonderland.lit/fooquot; to=quot;alice@wonderland.litquot; type=quot;chatquot;> <body>Who are you?</body> <subject>Query</subject> </message> From, To Types: normal, chat, groupchat, headline, error 24 Tuesday, March 3, 2009
  • Message Stanzas <message from=quot;madhatter@wonderland.lit/fooquot; to=quot;alice@wonderland.litquot; type=quot;chatquot;> <body>Who are you?</body> <subject>Query</subject> </message> From, To Types: normal, chat, groupchat, headline, error Payloads: Body, Subject 24 Tuesday, March 3, 2009
  • Presence Stanzas 25 Tuesday, March 3, 2009
  • Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> 25 Tuesday, March 3, 2009
  • Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) 25 Tuesday, March 3, 2009
  • Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat 25 Tuesday, March 3, 2009
  • Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat Status messages 25 Tuesday, March 3, 2009
  • Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat Status messages Typically used for contact lists/rosters 25 Tuesday, March 3, 2009
  • Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat Status messages Typically used for contact lists/rosters 25 Tuesday, March 3, 2009
  • Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat Status messages Typically used for contact lists/rosters Presence subscriptions 25 Tuesday, March 3, 2009
  • IQ Stanzas 26 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 26 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> 26 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> Request/Response 26 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> Request/Response Workflows, execute commands, query information 26 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> Request/Response Workflows, execute commands, query information Similar to HTTP GET, POST, PUT 26 Tuesday, March 3, 2009
  • IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
  • IQ Stanzas IQ-get Sender Receiver 27 Tuesday, March 3, 2009
  • IQ Stanzas Sender Receiver IQ-result 27 Tuesday, March 3, 2009
  • IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
  • IQ Stanzas IQ-set Sender Receiver 27 Tuesday, March 3, 2009
  • IQ Stanzas Sender Receiver IQ-result 27 Tuesday, March 3, 2009
  • IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
  • IQ Stanzas 28 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 28 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: 28 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: get: Ask for information (HTTP GET) 28 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: get: Ask for information (HTTP GET) set: Provide information (HTTP POST/PUT) 28 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: get: Ask for information (HTTP GET) set: Provide information (HTTP POST/PUT) result: Returns requested information / acknowledge set 28 Tuesday, March 3, 2009
  • IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: get: Ask for information (HTTP GET) set: Provide information (HTTP POST/PUT) result: Returns requested information / acknowledge set error 28 Tuesday, March 3, 2009
  • Extensibility 29 Tuesday, March 3, 2009
  • Extensibility Any XML child element can be used as a payload 29 Tuesday, March 3, 2009
  • Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... 29 Tuesday, March 3, 2009
  • Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... Namespaces to scope payloads <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 29 Tuesday, March 3, 2009
  • Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... Namespaces to scope payloads <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Extensions typically developed @ XMPP Standards Foundation's 29 Tuesday, March 3, 2009
  • Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... Namespaces to scope payloads <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Extensions typically developed @ XMPP Standards Foundation's Open, developer-friendly standards process 29 Tuesday, March 3, 2009
  • Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... Namespaces to scope payloads <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Extensions typically developed @ XMPP Standards Foundation's Open, developer-friendly standards process Can write your own quot;privatequot; extensions for custom functionality 29 Tuesday, March 3, 2009
  • Asynchronicity 30 Tuesday, March 3, 2009
  • Asynchronicity Web 30 Tuesday, March 3, 2009
  • Asynchronicity Web Send request to server 30 Tuesday, March 3, 2009
  • Asynchronicity Web Send request to server Wait for response 30 Tuesday, March 3, 2009
  • Asynchronicity Web Send request to server Wait for response Short-lived connections 30 Tuesday, March 3, 2009
  • Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber 30 Tuesday, March 3, 2009
  • Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber Long lived connection 30 Tuesday, March 3, 2009
  • Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber Long lived connection Events are sent out / come in asynchronously 30 Tuesday, March 3, 2009
  • Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber Long lived connection Events are sent out / come in asynchronously Different mindsets! 30 Tuesday, March 3, 2009
  • Code Example Tuesday, March 3, 2009
  • Echo bot 32 Tuesday, March 3, 2009
  • Echo bot Bots 32 Tuesday, March 3, 2009
  • Echo bot Bots Unmanned clients 32 Tuesday, March 3, 2009
  • Echo bot Bots Unmanned clients Connect to an XMPP server, and wait for commands / send events 32 Tuesday, March 3, 2009
  • Echo bot Bots Unmanned clients Connect to an XMPP server, and wait for commands / send events Echo bot 32 Tuesday, March 3, 2009
  • Echo bot Bots Unmanned clients Connect to an XMPP server, and wait for commands / send events Echo bot Echoes back every message that it receives 32 Tuesday, March 3, 2009
  • Tuesday, March 3, 2009
  • Writing the Echo Bot 34 Tuesday, March 3, 2009
  • Writing the Echo Bot Select a language to work in 34 Tuesday, March 3, 2009
  • Writing the Echo Bot Select a language to work in e.g. Python 34 Tuesday, March 3, 2009
  • Writing the Echo Bot Select a language to work in e.g. Python Select an XMPP library to do the low-level XMPP work 34 Tuesday, March 3, 2009
  • Writing the Echo Bot Select a language to work in e.g. Python Select an XMPP library to do the low-level XMPP work e.g. SleekXMPP 34 Tuesday, March 3, 2009
  • Writing the Echo Bot Select a language to work in e.g. Python Select an XMPP library to do the low-level XMPP work e.g. SleekXMPP Start coding 34 Tuesday, March 3, 2009
  • SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • Extensions Tuesday, March 3, 2009
  • Multi-User Chat 37 Tuesday, March 3, 2009
  • Multi-User Chat 38 Tuesday, March 3, 2009
  • Multi-User Chat Conversation with multiple users 38 Tuesday, March 3, 2009
  • Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) 38 Tuesday, March 3, 2009
  • Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) Crowd control 38 Tuesday, March 3, 2009
  • Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) Crowd control Privacy 38 Tuesday, March 3, 2009
  • Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) Crowd control Privacy Configurable 38 Tuesday, March 3, 2009
  • Multi-User Chat Configuration 39 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Result 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service No Result 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Result 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub Subscribe HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Publish 40 Tuesday, March 3, 2009
  • PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • PubSub 41 Tuesday, March 3, 2009
  • PubSub Protocol to subscribe and publish any kind of information 41 Tuesday, March 3, 2009
  • PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information 41 Tuesday, March 3, 2009
  • PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information Doesn’t scale with the number of users / requests 41 Tuesday, March 3, 2009
  • PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information Doesn’t scale with the number of users / requests Extensible: Payload can be any type 41 Tuesday, March 3, 2009
  • PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information Doesn’t scale with the number of users / requests Extensible: Payload can be any type Configurable 41 Tuesday, March 3, 2009
  • PubSub: Subscribing <iq from=quot;alice@wonderland.lit/rabbitholequot; id=quot;gh921nx3quot; to=quot;notify.wonderland.litquot; type=quot;setquot;> <pubsub xmlns=quot;http://jabber.org/protocol/pubsubquot;> <subscribe node=quot;queenly_proclamationsquot; jid=quot;alice@wonderland.litquot;/> </pubsub> </iq> 42 Tuesday, March 3, 2009
  • PubSub: Publishing events <iq from=quot;queen@wonderland.lit/croquetlawnquot; id=quot;ma019r58quot; to=quot;notify.wonderland.litquot; type=quot;setquot;> <pubsub xmlns=quot;http://jabber.org/protocol/pubsubquot;> <publish node=quot;queenly_proclamationsquot;> <item> <entry xmlns=quot;http://www.w3.org/2005/Atomquot;> <title>A new thought</title> <summary>Off with their heads!</summary> <link rel=quot;alternatequot; type=quot;text/htmlquot; href=quot;http://wonderland.lit/1865/quot;/> <id>tag:wonderland.lit,1865:entry-42</id> <published>1865-12-13T18:30:02Z</published> <updated>1865-12-13T18:30:02Z</updated> </entry> </item> </publish> </pubsub> </iq> 43 Tuesday, March 3, 2009
  • PubSub: Receiving events <message from=quot;notify.wonderland.litquot; to=quot;alice@wonderland.litquot;> <body>A new thought: off with their heads!</body> <event xmlns=quot;http://jabber.org/protocol/pubsub#eventquot;> <items node=quot;queenly_proclamationsquot; id=quot;bl38pahu98hquot;> <item id=quot;zi2ba967quot;> <entry xmlns=quot;http://www.w3.org/2005/Atomquot;> <title>A new thought</title> <summary>Off with their heads!</summary> <link rel=quot;alternatequot; type=quot;text/htmlquot; h ref=quot;http://wonderland.lit/1865/quot;/> <id>tag:wonderland.lit,1865:entry-42</id> <published>1865-12-13T18:30:02Z</published> <updated>1865-12-13T18:30:02Z</updated> </entry> </item> </items> </event> </message> 44 Tuesday, March 3, 2009
  • Extended Presence 45 Tuesday, March 3, 2009
  • Extended Presence Publish extra information about yourself 45 Tuesday, March 3, 2009
  • Extended Presence Publish extra information about yourself What music are you currently listening to? 45 Tuesday, March 3, 2009
  • Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? 45 Tuesday, March 3, 2009
  • Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? 45 Tuesday, March 3, 2009
  • Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? Used to be added to regular presence 45 Tuesday, March 3, 2009
  • Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? Used to be added to regular presence Doesn’t scale 45 Tuesday, March 3, 2009
  • Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? Used to be added to regular presence Doesn’t scale ‘Spams’ people with unwanted information 45 Tuesday, March 3, 2009
  • Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? Used to be added to regular presence Doesn’t scale ‘Spams’ people with unwanted information Implemented on top of PubSub 45 Tuesday, March 3, 2009
  • Extended Presence 46 Tuesday, March 3, 2009
  • Extended presence 47 Tuesday, March 3, 2009
  • Jingle 48 Tuesday, March 3, 2009
  • Jingle Voice, Video, Multimedia, P2P 48 Tuesday, March 3, 2009
  • Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams 48 Tuesday, March 3, 2009
  • Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points 48 Tuesday, March 3, 2009
  • Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it 48 Tuesday, March 3, 2009
  • Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it Use streaming protocols (RTP,...) to stream the data over the negotiated direct connection 48 Tuesday, March 3, 2009
  • Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it Use streaming protocols (RTP,...) to stream the data over the negotiated direct connection (Renegotiation during data session) 48 Tuesday, March 3, 2009
  • Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it Use streaming protocols (RTP,...) to stream the data over the negotiated direct connection (Renegotiation during data session) NAT traversal using standard technologies 48 Tuesday, March 3, 2009
  • Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it Use streaming protocols (RTP,...) to stream the data over the negotiated direct connection (Renegotiation during data session) NAT traversal using standard technologies TURN, STUN, ICE 48 Tuesday, March 3, 2009
  • File Transfer 49 Tuesday, March 3, 2009
  • File Transfer Various ways of transferring files 49 Tuesday, March 3, 2009
  • File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza 49 Tuesday, March 3, 2009
  • File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas 49 Tuesday, March 3, 2009
  • File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas Larger pieces of data are sent out of band 49 Tuesday, March 3, 2009
  • File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas Larger pieces of data are sent out of band Using SOCKS5 49 Tuesday, March 3, 2009
  • File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas Larger pieces of data are sent out of band Using SOCKS5 Using older Jingle-like protocol 49 Tuesday, March 3, 2009
  • File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas Larger pieces of data are sent out of band Using SOCKS5 Using older Jingle-like protocol Being extended to use Jingle 49 Tuesday, March 3, 2009
  • BOSH 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity Bidirectional streams Over Synchronous HTTP 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity Bidirectional streams Over Synchronous HTTP XMPP over HTTP 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity Bidirectional streams Over Synchronous HTTP XMPP over HTTP Cunning mechanism of not having to poll for new messages 50 Tuesday, March 3, 2009
  • BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity Bidirectional streams Over Synchronous HTTP XMPP over HTTP Cunning mechanism of not having to poll for new messages Piggyback incoming messages on HTTP response 50 Tuesday, March 3, 2009
  • BOSH POST /webclient HTTP/1.1 Host: bosh.wonderland.lit Content-Type: text/xml; charset=utf-8 Content-Length: 205 <body rid=quot;90029205quot; sid=quot;3m1ts1htd1squot; xmlns=quot;http://jabber.org/protocol/httpbindquot;> <message to=quot;sister@realworld.litquot; xmlns=quot;jabber:clientquot;> <body>Help, I fell down the rabbit hole!</body> </message> </body> 51 Tuesday, March 3, 2009
  • Serverless Messaging 52 Tuesday, March 3, 2009
  • Serverless Messaging Sometimes, a server is not available 52 Tuesday, March 3, 2009
  • Serverless Messaging Sometimes, a server is not available Remote location without internet 52 Tuesday, March 3, 2009
  • Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit 52 Tuesday, March 3, 2009
  • Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging 52 Tuesday, March 3, 2009
  • Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging Uses zero-configuration (Apple) to discover entities on the local network 52 Tuesday, March 3, 2009
  • Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging Uses zero-configuration (Apple) to discover entities on the local network mDNS, DNS-SD 52 Tuesday, March 3, 2009
  • Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging Uses zero-configuration (Apple) to discover entities on the local network mDNS, DNS-SD Open connection directly to other connection, and send XMPP over that connection 52 Tuesday, March 3, 2009
  • Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging Uses zero-configuration (Apple) to discover entities on the local network mDNS, DNS-SD Open connection directly to other connection, and send XMPP over that connection iChat’s Rendez-vous/Bonjour 52 Tuesday, March 3, 2009
  • State of the bulb Tuesday, March 3, 2009
  • What is the XSF working on? 54 Tuesday, March 3, 2009
  • What is the XSF working on? E2E security 54 Tuesday, March 3, 2009
  • What is the XSF working on? E2E security Whiteboarding 54 Tuesday, March 3, 2009
  • What is the XSF working on? E2E security Whiteboarding File sharing / personal media networks 54 Tuesday, March 3, 2009
  • What is the XSF working on? E2E security Whiteboarding File sharing / personal media networks World domination 54 Tuesday, March 3, 2009
  • Conclusion Tuesday, March 3, 2009
  • Join the conversation http://xmpp.org/ mailto:jdev@jabber.org xmpp:jdev@conference.jabber.org [mailto:|xmpp:]stpeter@jabber.org [mailto:|xmpp:]remko@el-tramo.be Jabber/XMPP booth @ FOSDEM XMPP Summit on Monday 56 Tuesday, March 3, 2009
  • Conclusion 57 Tuesday, March 3, 2009
  • Conclusion The real-time Internet is coming 57 Tuesday, March 3, 2009
  • Conclusion The real-time Internet is coming Build competitive advantage using open technologies 57 Tuesday, March 3, 2009
  • Conclusion The real-time Internet is coming Build competitive advantage using open technologies What problems can you solve with XMPP? 57 Tuesday, March 3, 2009
  • Conclusion The real-time Internet is coming Build competitive advantage using open technologies What problems can you solve with XMPP? Join the conversation 57 Tuesday, March 3, 2009
  • Conclusion The real-time Internet is coming Build competitive advantage using open technologies What problems can you solve with XMPP? Join the conversation Happy Jabbering! 57 Tuesday, March 3, 2009
  • Conclusion The real-time Internet is coming Build competitive advantage using open technologies What problems can you solve with XMPP? Join the conversation Happy Jabbering! More info inside 57 Tuesday, March 3, 2009