Extensible messaging and presence protocol
<pageby nominor="false" comments="false"/>
Introduction
The Extensible Messaging and Presence Protocol (XMPP) also known as Jabber is an instant messaging 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 Voice over Internet Protocol 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 their own Jabber server and talk to users on other servers. The standard server implementations and many clients are also free and open source software.” (Wikipedia, retrieved 18:32, 3 September 2009 (UTC)).
XMPP have a multi-user chat (MUC) extension (XEP-0045)
From a user point view, XMPP services can be used for sophisticated chatrooms, for shoutboxes, for portable chatrooms, communication withinvirtual environments, micro blogging, i.e. all sorts of instant messaging applications.
Architecture
The Internet Engineering Task Force has formalized XMPP as an approved instant messaging and presence technology under the name of XMPP, and the XMPP specifications have been published as RFC 3920 and RFC 3921.
XMPP networks are server-based and anyone can run his/her own Jabber server. Each users has his unique Jabber Identification (JID). It has the form:
Username@domain.name
Furthermore, Jabber IDs may include a resource, i.e. identification of a particular client. These can be use to define various identities for various clients with a given priority, e.g.
Username@domain.name/mobile
Messages from one user (identified by Jabber IDs) to another is achieved through a chain of client a - server A - server B - client B chain. I.e. a user@domainA.org sending a message to user@domainB.org would first send the message to XMPP server domainA.org, which in turn forwards the message to domainB server (unless server B blocks serva A), which finally forwards the message to client B.
XMPP servers also may connect to other protocols like ICQ and also transport messages through HTTP to avoid Firewalls.
Wikipedia (retrieved 18:32, 3 September 2009 (UTC)) summarizes the most important XMPP RFCs:
- RFC 3920, Extensible Messaging and Presence Protocol (XMPP): Core which describes client-server messaging using two open-ended XML streams. XML streams consist of <presence/>, <message/> and <iq/> (info/query). A connection is authenticated with Simple Authentication and Security Layer (SASL) and encrypted with Transport Layer Security (TLS).
- RFC 3921, Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence describes instant messaging (IM), the most common application of XMPP.
- RFC 3922, Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM) relates XMPP and the Common Presence and Instant Messaging (CPIM) specifications.
- RFC 3923, End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP) describes end to end encryption of XMPP messages using S/MIME. Conflicting this proposal, many clients currently use GPG for encrypting messages.
XMPP extensions.
- XEP-0045: Multi-User Chat “defines an XMPP protocol extension for multi-user text chat, whereby multiple XMPP users can exchange messages in the context of a room or channel, similar to Internet Relay Chat (IRC). In addition to standard chatroom features such as room topics and invitations, the protocol defines a strong room control model, including the ability to kick and ban users, to name room moderators and administrators, to require membership or passwords in order to join the room, etc.” (retrieved 18:32, 3 September 2009 (UTC))
On of top of XMPP, various applications can be built. E.g. VPTN is a "virtual presence protocol" that can be embedded in multi-user virtual environments.
Technology
Servers
- Openfire, formerly called Wildfire “is a real time collaboration (RTC) server licensed under the Open Source GPL. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance.” (retrieved 18:32, 3 September 2009 (UTC)).
- ejabberd Free and Open Source distributed fault-tolerant Jabber server. (http://www.process-one.net/en/ejabberd/downloads/ download). This is included in Ubuntu's universe/net, i.e. easy to install.
- Claros Chat, a free system that runs in the Tomcat servlet container.
Clients
We don't endorse any of these clients, since we lack the experience - Daniel K. Schneider 18:32, 3 September 2009 (UTC).
- Indexes
- XMPP Software: Clients (list from XMPP.org)
- List of XMPP server software
- List of XMPP client software (Wikipedia)
- Comparison of instant messaging clients includes some Jabber or multi-protocol clients
- Stand-alone clients
- Gajim is a popular Jabber client for Linux (Also runs under Windows). Supports the MUC protocol and has some nice extra features like: tabbed chat, speller, support for multiple accounts, an XML console, etc.
- Pidgin (formerly Gaim) is probably the most popular multi-network, multi-OS client that supports all sorts of protocols like AIM, IRC, MSN in addition to XMPP-based systems.
- Psi aims to be a feature-rich Jabber/XMPP client for novice and experienced Jabber users. There are builds available for Windows, Linux, and MacOS X.
- Jabbear, a XMPP messenger client that also supports MSN, ICQ, Yahoo, and Gtalk.
- Web clients (you can download and install)
- Afflux (in french) develops several Jabber projects. (webclient download, 0.2 on June 2009). Uses embedabble widgets.
- ijab. An AJAX jabber client.
- JWChat is a full featured, web-based Jabber client written using AJAX technology. MUC capable. Uses popups.
- Jabbear. Web version of Jabbear messenger
- At LobserMonster.org one can find several interesting things done with XMPP, e.g. a web client.
- Browser extensions
- Sameplace for Firefox. Available also as addon 3633 (addons.mozilla.org). This extension is based on xmpp4moz which you also must install ! This extension also supports Twitter / ICQ and MSN.
- Web Widgets
- ?
- Shoutboxes as portalware modules
- Clients for particular servers
- Google Talk gadget (standalone client)
- Google Talk Gadget (web client, aka gmail chat)
- Google talk labs edition
Clients
According to Wikipedia, 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 is an open extension to the XMPP protocol.
Links
Overviews
- Extensible Messaging and Presence Protocol (Wikipedia)
Implementations
- Gizmo Project (Wikipedia)
- Nimbuzz (Wikipedia)
- Google Talk (Wikipedia)
Standards
- RFC 3920, RFC 3921, RFC 3922, RFC 3923, RFC 4622, RFC 4854, RFC 4979, RFC 5122
You also can find these at xmpp.org
Tutorials
Various
- The Next Level in Team Communications: Jabber Integration with Drupal by Jose Reyero, nov 2008. See also Messaging Framework of Drupal.
Bibliography
- Peter Saint-Andre (2009). XMPP - The Definitive Guide, First Edition, O'Reilly, ISBN 978-0-596-52126-4