Difference between revisions of "XMPP"

From Organic Design wiki
(See also: XMPP is better with BOSH)
m
 
(22 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[w:Extensible Messaging and Presence Protocol|Extensible Messaging and Presence Protocol]] ('''XMPP''') is an open, [[w:XML|XML]]-based [[w:network protocol|protocol]] originally aimed at near-real-time, extensible instant messaging (IM) and [[w:presence information|presence information]] (e.g., buddy lists), but now expanded into the broader realm of [[w:message oriented middleware|message oriented middleware]]. It remains the core protocol of the Jabber Instant Messaging and Presence technology. Built to be extensible, the protocol has been extended with features such as [[w:Voice over Internet Protocol|VOIP]] and file transfer signaling.
+
The [[w:Extensible Messaging and Presence Protocol|Extensible Messaging and Presence Protocol]] (XMPP) is an [[open]] technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The [http://xmpp.org/about-xmpp/technology-overview/ xmpp.org technology pages] provide more information about the various XMPP “building blocks”. Several books about Jabber/XMPP technologies are available, as well.
  
Unlike most instant messaging protocols, XMPP is an [[w:open standard|open standard]]. Like e-mail, it is an [[w:open system (computing)|open system]] where anyone who has a domain name and a suitable Internet connection can run his own Jabber server and talk to users on other servers.  The standard server implementations and many clients are also [[w:free and open source software|free and open source software]].
+
The core technology behind XMPP was invented by [http://xmpp.org/about-xmpp/xsf/xsf-people/#bdfl Jeremie Miller] in 1998, refined in the Jabber open-source community in 1999 and 2000, and formalized by the [[w:IETF|IETF]] in 2002 and 2003, resulting in publication of the [http://xmpp.org/rfcs/ XMPP RFC]s in 2004 (see the history page for more details).
  
The [[w:Internet Engineering Task Force|Internet Engineering Task Force]] (IETF) formed an XMPP Working Group in 2002 to formalize the core protocols as an IETF instant messaging and presence technology. The XMPP WG produced four specifications which were approved by the [[w:IESG|IESG]] as Proposed Standards in 2004. RFC 3920 and RFC 3921 are now undergoing revisions in preparation for advancing them to Draft Standard within the Internet Standards Process. The [[w:XMPP Standards Foundation|XMPP Standards Foundation]] (formerly the Jabber Software Foundation) is active in developing open XMPP extensions. However, no technology correctly implements the RFCs in full.
+
Although the core technology is stable, the XMPP community continues to define various [http://xmpp.org/protocols/xmpp-extensions/ XMPP extensions] through an open standards process run by the XMPP Standards Foundation. There is also an active community of open-source and commercial developers, who produce a wide variety of XMPP-based software.
  
XMPP-based software is deployed on thousands of servers across the Internet and by 2003 was used by over ten million people worldwide, according to the XMPP Standards Foundation. Popular commercial servers include the [[w:Gizmo Project|Gizmo Project]], [[w:Nimbuzz|Nimbuzz]] and [[w:Google Talk|Google Talk]]. Popular client applications include the freeware clients offered by Google, Nimbuzz and the Gizmo Project, [[w:Multiprotocol instant messaging application|multi-protocol instant messengers]] such as [[w:iChat|iChat]] and [[w:Pidgin (software)|Pidgin]] (formerly Gaim), and free dedicated clients such as [[w:Psi (instant messaging client)|Psi]] and [[w:Gajim|Gajim]]. [[w:Google Talk|Google Talk]] provides XMPP gateways to its service. [[w:Google Wave|Google Wave]]'s federation protocol (GWFP) is an open extension to the XMPP protocol.
+
If you have any questions about the use or development of XMPP technologies, feel free to participate in one of the open [http://xmpp.org/participate/discuss-xmpp/ xmpp.org discussion venues] hosted by the [http://xmpp.org/about-xmpp/xsf/ XMPP Standards Foundation].
  
== Interesting XMPP extensions supported by jabberd2 ==
+
[[File:XMPPbook.jpg|right|350px|link=http://www.bookdepository.co.uk/XMPP-Definitive-Guide-Peter-Saint-Andre/9780596521264/?a_aid=od]]
*[http://xmpp.org/extensions/xep-0030.html XEP-0030: Service Discovery]
+
== Choices of XMPP server ==
*[http://xmpp.org/extensions/xep-0048.html XEP-0048: Bookmarks]
+
*[[Prosody]] ''- we use Prosody, a Lua based server with easy setup and small footprint''
*[http://xmpp.org/extensions/xep-0049.html XEP-0049: Private XML Storage]
+
*[https://metronome.im/ Metronome] ''- simpler to use fork of Prosody''
*[http://xmpp.org/extensions/xep-0072.html XEP-0072: SOAP Over XMPP] ''(not currently implemented by jabberd2)''
+
*[http://jabberd.org/ jabber2d]
*[http://xmpp.org/extensions/xep-0079.html XEP-0079: Advanced Message Processing]
+
*[http://www.ejabberd.im/ ejabberd]
*[http://xmpp.org/extensions/xep-0083.html XEP-0083: Nested Roster Groups]
+
*[http://code.stanziq.com/strophe Strophe] ''- a beautiful library for building XMPP applications in JavaScript''
*[http://xmpp.org/extensions/xep-0114.html XEP-0114: Jabber Component Protocol]
 
*[http://xmpp.org/extensions/xep-0138.html XEP-0138: Stream Compression]
 
*[http://xmpp.org/extensions/xep-0145.html XEP-0145: Annotations]
 
 
 
== Extensions we'd like to develop ==
 
*'''Workflow:''' define processes and sequences, both human and computer (adding current work tree to contexts)
 
*'''Schedule:''' this may already be done: adding a "booking" aspect to contexts
 
*'''P2P:''' A peer-to-peer storage layer
 
*'''Objects:''' this is basically RA: types & instances with search, create, view, edit contexts
 
*'''Nodes:''' nodal model's class/instance structure incorporating workflow, axes, install/remove
 
  
 
== XMPP & JavaScript ==
 
== XMPP & JavaScript ==
[http://code.stanziq.com/strophe Strophe] is a beautiful library for building XMPP applications in JavaScript. It has a lot of nice features to help you build stanzas and respond to various event stanzas. It is built on top of the DOM, and unfortunately, the DOM is not always fun to work with. Luckily, we have an excellent DOM slicer and dicer that we can use alongside Strophe, the [http://jquery.com/ jQuery] library.
+
[http://code.stanziq.com/strophe Strophe] is a beautiful library for building XMPP applications in JavaScript (also available as a C library). It has a lot of nice features to help you build stanzas and respond to various event stanzas. It is built on top of the DOM, and unfortunately, the DOM is not always fun to work with. Luckily, we have an excellent DOM slicer and dicer that we can use alongside Strophe, the [http://jquery.com/ jQuery] library.
*complete article at [http://metajack.im/2009/03/13/jquery-and-strophe-made-for-each-other/ metajack.im]
+
*[http://metajack.im/2009/03/13/jquery-and-strophe-made-for-each-other/ MetaJack] ''- complete article''
*[http://metajack.im/2009/03/12/awesome-demo-of-real-time-xmpp-powered-app/ drop.io's new real-time web-app] powered by Strophe
+
*[http://metajack.im/2009/03/12/awesome-demo-of-real-time-xmpp-powered-app/ drop.io's new real-time web-app] ''- powered by Strophe''
 
*[http://metajack.im/2009/01/20/learn-to-make-xmpp-powered-web-apps-at-jsconf-2009/ Learn to Make XMPP Powered Web Apps at JSConf 2009]
 
*[http://metajack.im/2009/01/20/learn-to-make-xmpp-powered-web-apps-at-jsconf-2009/ Learn to Make XMPP Powered Web Apps at JSConf 2009]
  
 
== See also ==
 
== See also ==
*[[Wave]] ''- our high level document about integrating this technology into our direction''
+
*[https://xmpp.org XMPP.org]
 
*[http://xmpp.org/extensions/ XMPP extensions]
 
*[http://xmpp.org/extensions/ XMPP extensions]
 +
*[[Prosody]] ''- the XMPP server we use''
 +
*[https://movim.eu/ MOVIM] ''- a new social network built on XMPP''
 +
*[[Google Wave]] ''- an XMPP-based Google project that got shelved''
 +
*[[Wikipedia:Message-oriented middleware]]
 
*[http://codex.xiaoka.com/wiki/jabberd2:start jabberd2] ''- the most complete implementation of the XMPP protocol and extensions written in C''
 
*[http://codex.xiaoka.com/wiki/jabberd2:start jabberd2] ''- the most complete implementation of the XMPP protocol and extensions written in C''
*[[w:Internet Protocol Suite|Internet Protocol Suite]]
 
 
*[http://metajack.im/2008/11/21/chesspark-design-details-part-1-why-xmpp/ Chesspark Design Details] ''- chesspark.com extends XMPP''
 
*[http://metajack.im/2008/11/21/chesspark-design-details-part-1-why-xmpp/ Chesspark Design Details] ''- chesspark.com extends XMPP''
 
*[http://metajack.im/2009/03/09/xmpp-complexity-versus-sophistication/ XMPP: Complexity vs Sophistication] ''- metajack article''
 
*[http://metajack.im/2009/03/09/xmpp-complexity-versus-sophistication/ XMPP: Complexity vs Sophistication] ''- metajack article''
 
*[http://metajack.wordpress.com/2008/07/02/xmpp-is-better-with-bosh/ XMPP is better with BOSH] ''- metajack article''
 
*[http://metajack.wordpress.com/2008/07/02/xmpp-is-better-with-bosh/ XMPP is better with BOSH] ''- metajack article''
 
+
[[Category:Web3.0]]
== MetaJack - XMPP related blog ==
 
<rss number=15 text>http://feeds.feedburner.com/metajack</rss>
 

Latest revision as of 23:53, 14 May 2020

The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The xmpp.org technology pages provide more information about the various XMPP “building blocks”. Several books about Jabber/XMPP technologies are available, as well.

The core technology behind XMPP was invented by Jeremie Miller in 1998, refined in the Jabber open-source community in 1999 and 2000, and formalized by the IETF in 2002 and 2003, resulting in publication of the XMPP RFCs in 2004 (see the history page for more details).

Although the core technology is stable, the XMPP community continues to define various XMPP extensions through an open standards process run by the XMPP Standards Foundation. There is also an active community of open-source and commercial developers, who produce a wide variety of XMPP-based software.

If you have any questions about the use or development of XMPP technologies, feel free to participate in one of the open xmpp.org discussion venues hosted by the XMPP Standards Foundation.

XMPPbook.jpg

Choices of XMPP server

  • Prosody - we use Prosody, a Lua based server with easy setup and small footprint
  • Metronome - simpler to use fork of Prosody
  • jabber2d
  • ejabberd
  • Strophe - a beautiful library for building XMPP applications in JavaScript

XMPP & JavaScript

Strophe is a beautiful library for building XMPP applications in JavaScript (also available as a C library). It has a lot of nice features to help you build stanzas and respond to various event stanzas. It is built on top of the DOM, and unfortunately, the DOM is not always fun to work with. Luckily, we have an excellent DOM slicer and dicer that we can use alongside Strophe, the jQuery library.

See also