The Extensible Messaging and Presence Protocol (XMPP) is the IETF’s formalization of the base XML streaming protocols for instant messaging and presence developed within the Jabber community starting in 1999. This page provides a brief chronology of Jabber/XMPP technologies from the perspective of standardization.
In January 1999, Jeremie Miller announced the existence of Jabber, an open technology for instant messaging and presence. Throughout 1999, development proceeded rapidly on an open-source server (jabberd), several open-source clients and code libraries, and open wire protocols for real-time XML streaming as well as basic instant messaging and presence extensions. These same base protocols have been in use (with various improvements and extensions) since 1999.
In August 1999, Jeremie submitted a statement pledging the Jabber community’s support for the IETF standards process. This statement was consistent with the founding mission of the Jabber project: to foster freedom of conversation and support open standards and interoperability in the real-time communications.
In February 2000, the IETF published the results of work by the Instant Messaging and Presence Protocol (IMPP) Working Group: a model for instant messaging and presence systems (RFC 2778) and a set of requirements for such systems (RFC 2779). However, because of a lack of consensus, the IMPP WG never produced any protocols, instead deferring to other working groups that might develop protocols to meet the requirements defined in RFC 2779.
In May 2000, version 1.0 of the jabberd server was released and the base Jabber protocols (XML streaming, messaging, presence, contact lists, etc.) were stabilized.
In June 2000, Jeremie and other members of the Jabber project submitted an Internet-Draft (text | HTML) to the Instant Messaging and Presence Protocol (IMPP) Working Group documenting the base Jabber protocols. Unfortunately, the Jabber community was not well organized at that time nor was it strongly focused on protocol development per se. Thus the initial Internet-Draft expired without the Jabber community following up or working closely with the IMPP WG.
In October 2000, jabberd 1.2 was released and the server dialback protocol was introduced to prevent address spoofing on the growing network of Jabber servers.
In August 2001, the Jabber Software Foundation (JSF) was formed to coordinate among the growing number of open-source projects and commercial entities building or using Jabber technologies. (Note: As described below, in January 2007 the Jabber Software Foundation changed its name to the XMPP Standards Foundation or XSF.) The primary mandate of the Foundation is to manage the XML protocols used within the Jabber/XMPP community by documenting existing protocols and developing protocol extensions through an open standards process (see XEP-0001).
In late 2001 and early 2002, prominent members of the Jabber community decided to once again submit the base Jabber protocols to the IETF, this time as an official submission by the JSF. The first submission was made in February 2002 as an informational Internet-Draft (text | HTML). Following on the success of this submission, it was decided to explore the possibility of forming an IETF Working Group devoted to formalization of the base Jabber protocols, under the neutral name of Extensible Messaging and Presence Protocol (XMPP). As a result, three interrelated Internet-Drafts were submitted on 2002-06-21.
On 2002-07-15, an XMPP Birds of a Feather session (BOF) was held at the 54th IETF meeting in Yokohama, Japan. Given the overall favorable reaction (captured in the minutes), it was decided to proceed further by submitting a proposed working group charter to the IESG.
On 2002-10-31, the formation of the XMPP Working Group was approved bythe Internet Engineering Steering Group (IESG). As a result, the Foundation formally contributed the base Jabber protocols to the Internet Standards Process (see RFC 2026) and ceded change control over those protocols to the IETF under the name Extensible Messaging and Presence Protocol (XMPP). On 2002-11-03, updated Internet-Drafts were submitted for “XMPP Core” and “XMPP IM”. On 2002-11-19, the first meeting of the XMPP WG was held at IETF 55 including presentations by Jeremie Miller, Joe Hildebrand, and Peter Saint-Andre.
In 2003, the XMPP WG essentially completed its work on formalizing the base Jabber protocols for adaptation as IETF-approved instant messaging and presence protocols that would fully meet the requirements of RFC 2779. Meetings of the XMPP WG were held on 2003-03-17 at IETF 56 and on 2003-07-18 at IETF 57 .
The revisions made to the base protocols mainly centered on improved security and internationalization. In the area of security, the XMPP Core document specifies:
- The use of standard Simple Authentication and Security Layer (RFC 4422) for authentication (as earlier proposed in XEP-0034) rather than the old protocol of hashed passwords (as described informationally in XEP-0078).
- The use of standard Transport Layer Security (RFC 4346) for channel encryption (as earlier proposed in XEP-0035) rather than the older method of using SSL on separate ports.
(In addition, the XMPP WG defined as an XMPP extension a protocol for end-to-end encryption using S/MIME and CPIM.)
In the area of internationalization, the XMPP Core document specifies profiles of stringprep (RFC 3454) for XMPP addresses (a.k.a. JIDs). In particular, XMPP uses Internationalized Domain Names (RFC 3490) for the domain portion of a JID and the XMPP-specific nodeprep and resourceprep profiles for the remaining portions of a JID. In addition, the XMPP Core document specifies the use of the ‘xml:lang’ attribute for proper localization of XMPP communications (as earlier proposed in XEP-0026).
In the area of user privacy, a protocol extension for block and allow lists was added to the XMPP IM specification, following up on the earlier proposal documented in XEP-0016.
The IESG approved the XMPP Core and XMPP IM specifications as Proposed Standards on 2004-01-29 and 2004-02-05, respectively, thus accepting XMPP 1.0 as an IETF Instant Messaging and Presence technology in conformance with the requirements of RFC 2779. The XMPP-CPIM Mapping specification was approved on 2004-05-19. The XMPP-E2E specification was approved on 2004-07-26.
In October 2004, these documents were published as the following RFCs:
- RFC 3920: Extensible Messaging and Presence Protocol (XMPP): Core
- RFC 3921: Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence
- RFC 3922: Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM)
- RFC 3923: End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP)
Other than continued publication and advancement of various XMPP extensions, no major standardization efforts were undertaken in 2005. However, implementation and deployment of large-scale XMPP-based services continued, highlighted by the launch of Google Talk in August 2005.
In July 2006, the IETF published RFC 4622 defining the XMPP URI scheme.
In July 2006, the first XMPP Summit was held in Portland, Oregon, USA.
In October 2006, the JSF renamed its “Jabber Enhancement Proposals” (JEPs) specification series to “XMPP Extension Protocols” (XEPs) and moved them to the xmpp.org website.
In October 2006, work began on revisions to RFC 3920 and RFC 3921 in order to incorporate experience gained through several years of widespread implementation and deployment of XMPP technologies. It is envisioned that these revisions will be completed in 2008. See the Internet-Drafts page for details.
In January 2007, the Jabber Software Foundation renamed itself to the XMPP Standards Foundation in order to more accurately describe its focus on developing open protocol extensions to the IETF’s base XMPP specifications (rather than open-source software).
In February 2007, the XSF held the second XMPP Summit in Brussels, Belgium.
In June 2007, the XSF approved XEP-0174: Link-Local Messaging, which formalizes the zero-configuration, serverless mode of XMPP communications pioneered in Apple’s Bonjour technology.
In July 2007, the XSF held the third XMPP Summit in Portland, Oregon, USA.
In February 2008, the XSF held the fourth XMPP Summit in Brussels, Belgium.
In September 2008, the XSF advanced XEP-0231: Bits of Binary and XEP-0158: CAPTCHA Forms to a status of Draft. It also completed significant revisions to XEP-0060: Publish-Subscribe and related specifications, plus published its second series of compliance specifications (XEP-0242: XMPP Client Compliance 2009 and XEP-0243: XMPP Server Compliance 2009).
In January 2009, the XSF approved XEP-0205: Best Practices to Discourage Denial of Service Attacks as an Informational specification.
In February 2009, the XSF held the sixth XMPP Summit in Brussels, Belgium.
In July 2009, the XSF held the seventh XMPP Summit in San Jose, California, USA.
In February 2010, the XSF held the eighth XMPP Summit in Brussels, Belgium.
In July 2010, the XSF completed major revisions to the XMPP publish-subscribe extension (XEP-0060).
In July 2010, the XSF held the ninth XMPP Summit in Portland, Oregon, USA.
The IETF’s XMPP Working Group met at IETF 77 (March 2010) and IETF 78 (July 2010).
In February 2011, the XSF held the tenth XMPP Summit in Brussels, Belgium, co-located with an interim meeting of the IETF’s XMPP Working Group, with a special focus on internationalization.
In March 2011, the IETF published RFC 6120 and RFC 6121 to replace RFC 3920 and RFC 3921 as the defining specifications for XMPP, along with RFC 6122 as an interim specification of the XMPP address format pending further work on internationalization at the IETF’s PRECIS Working Group.
Throughout 2011, the XMPP Council advanced several specifications to a status of Draft: Use of ZRTP in Jingle RTP Sessions, Jingle SOCKS5 Bytestreams Transport Method, Jingle In-Band Bytestreams Transport Method, and Security Labels in XMPP.
The IETF’s XMPP Working Group met at IETF 80 (March/April 2011) and IETF 81 (July 2011).
In February 2012, the XSF held the eleventh XMPP Summit in Brussels, Belgium.
Also in February, the XSF completed significant revisions to the XMPP multi-user chat extension (XEP-0045).
In June 2012, the XMPP Council advanced the In-Band Bytestreams specification to Final.
The IETF’s XMPP Working Group met at IETF 83 (March 2012) and IETF 84 (July/August 2012).