Prosodical Thoughts

News, announcements and thoughts from the Prosody IM team

XMPP at the IETF

by The Prosody Team

We recently helped deploy a new XMPP service for the IETF. But before we go any further, some of you are probably asking - “what is the IETF?!” If you’ve been around the XMPP community for a while, or if you’ve been at all involved in internet development discussions, you’ll already have an idea of what the IETF is. But that leaves many people don’t know, so here goes…

The Internet Engineering Task Force is the organisation that has been behind many of the most widespread internet technologies in the past 30+ years. Even if you aren’t familiar with the IETF, there’s a chance you may have stumbled upon one of the documents they publish, known as RFCs (Request for Comments). Contained in the 8000+ RFCs that are currently published is a mass of knowledge about the design of the internet - past, present and future.

As well as XMPP’s own RFCs (RFC 6120 and RFC 6121), there are RFCs that describe the workings of IPv4 (RFC 791) and IPv6 (RFC 8200), email, including SMTP (RFC 5321 and RFC 5322) and IMAP (RFC 3501). Many other internet technologies are also standardized by the IETF - including for example, DNS, HTTP, TLS, LDAP, SSH and SIP.

Unlike many standards organizations, the IETF publishes its standards openly for the benefit of everyone developing internet-based technologies. Likewise, participation in the development work of the IETF is relatively straightforward and happens via mailing lists, online sessions and (usually) in-person meetings.

Standardizing XMPP

XMPP was officially published as an RFC (3920) in 2004 as a result of a lot of hard work performed by the community, and Peter Saint-Andre working as the document’s author. This document also marks “XMPP” taking over as the formal name of the protocol, rather than “Jabber” as it was originally known.

XMPP had a dedicated working group at the IETF, which went on to publish many other documents, including updates to the original RFCs.

Deploying XMPP

As well as standardizing the protocol itself, the IETF have long been users of XMPP to provide options for remote participation at meetings (along with e.g. live audio streams). Their service at jabber.ietf.org hosts chats for the various working groups, and provides a place for collaboration and discussions between meetings as well.

That said, the deployment is starting to show its age, and has not evolved much in its feature set since it was originally launched. Recently there has been some focus on the problems that people face when trying to access it for the first time.

Notably, people reported issues with installing software (e.g. on restricted company laptops), problems with firewalls, and difficulties finding and registering accounts on public XMPP servers.

In search of a more user-friendly solution, the IETF announced a temporary trial of Matrix and Zulip as potential alternatives, so they could gain operational experience and feedback from users.

Improving the XMPP deployment

Comparison between these alternatives and the existing XMPP deployment had a number of problems. For example, while jabber.ietf.org (by intention) didn’t allow account registration, the alternative services did. The other services also prominently feature (or even require) access via the web, yet there was no similar web access for jabber.ietf.org XMPP chats - an option which would solve the vast majority of problems that people face with the current setup.

Building on recent work we’ve done to improve and simplify web-based account sign-up in Prosody, we put together a demo server to show exactly how a user-friendly XMPP setup may be provided. The sign-up processes uses the new client-agnostic mod_invites_page, and the web client is served using mod_conversejs. The IETF infrastructure team were able to replicate the setup and it is now deployed at xmpp-trial1.ietf.org!

The trial of all the new services will be discontinued in January 2021, and the findings will be assessed before a decision is made about the future of real-time communication at the IETF.