Extensible Messaging and Presence Protocol (XMPP) is an open, XML-based protocol originally aimed at near-real-time, extensible instant messaging (IM) and presence information (e.g., buddy lists), but now expanded into the broader realm of 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 VOIP and file transfer signaling.
Unlike most instant messaging protocols, XMPP is an open standard. Like e-mail, it is an 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 free and open source software.
The 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 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 XMPP Standards Foundation (formerly the Jabber Software Foundation) is active in developing open XMPP extensions. However, no technology correctly implements the RFCs in full.
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 Gizmo Project, Nimbuzz and Google Talk. Popular client applications include the freeware clients offered by Google, Nimbuzz and the Gizmo Project, multi-protocol instant messengers such as iChat and Pidgin (formerly Gaim), and free dedicated clients such as Psi and Gajim. Google Talk provides XMPP gateways to its service. Google Wave's federation protocol (GWFP) is an open extension to the XMPP protocol.
Choice of XMPP server
Interesting XMPP extensions supported by jabberd2
- XEP-0030: Service Discovery
- XEP-0048: Bookmarks
- XEP-0049: Private XML Storage
- XEP-0072: SOAP Over XMPP (not currently implemented by jabberd2)
- XEP-0079: Advanced Message Processing
- XEP-0083: Nested Roster Groups
- XEP-0114: Jabber Component Protocol
- XEP-0138: Stream Compression
- 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
- complete article at metajack.im
- drop.io's new real-time web-app powered by Strophe
- Learn to Make XMPP Powered Web Apps at JSConf 2009
- Wave - our high level document about integrating this technology into our direction
- XMPP extensions
- jabberd2 - the most complete implementation of the XMPP protocol and extensions written in C
- Internet Protocol Suite
- Chesspark Design Details - chesspark.com extends XMPP
- XMPP: Complexity vs Sophistication - metajack article
- XMPP is better with BOSH - metajack article