Extensible messaging and presence protocol

The educational technology and digital learning wiki
Jump to navigation Jump to search

<pageby nominor="false" comments="false"/>

Draft

Introduction

The Extensible Messaging and Presence Protocol (XMPP) also known as Jabber is an instance 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.[1] 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 16:09, 3 September 2009 (UTC)).

Jabber can be used (with the XEP-0045 extension) as multi-user chat (MUC).

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 16:09, 3 September 2009 (UTC)) summarizes the most important XMPP RFCs:

  1. 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).
  2. RFC 3921, Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence describes instant messaging (IM), the most common application of XMPP.
  3. 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.
  4. 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 16:09, 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

Clients

We don't endorse any of these clients, since we lack the experience - Daniel K. Schneider 16:09, 3 September 2009 (UTC).

Indexes
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.
  • 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)
  • 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


Clients for particular servers

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

Implementations

Standards

  • RFC 3920, RFC 3921, RFC 3922, RFC 3923, RFC 4622, RFC 4854, RFC 4979