Connectivity & Infrastructure · Field guide
Jabber and XMPP: Open Messaging Explained
A practical look at Jabber and XMPP: how the open XML protocol works, who runs federated servers, and where to verify the standards.

Jabber, now standardized as XMPP, is an open messaging protocol built on XML streams and defined through RFCs, which means no single company owns the conversation layer. Anyone can run a server, and any two servers can federate, so a message can travel from one organization to another without passing through a central broker. That design is why XMPP still matters for teams that want messaging they can inspect, host, and audit.
What Is Jabber, and How Does It Relate to XMPP?
Jabber is the original name of the open messaging protocol that began in 1999, and XMPP is the name it took when the IETF standardized it in 2004. The two words describe the same technology: an XML-based system for presence, messaging, and request-response exchanges between clients and servers. The protocol's core is small. A client opens a TCP connection, negotiates TLS, authenticates, and then binds a resource to a JID, which is the address format that looks like a username at a domain. Once connected, the client sends and receives three kinds of stanzas: message, presence, and IQ. Message carries chat content, presence announces availability and status, and IQ handles structured request-response pairs such as roster queries or version checks. That trio is the whole vocabulary of the base protocol, and everything else, including file transfer, group chat, and encryption, is layered on top through extensions. A reader who wants the protocol details, the history, and the server setup notes in one place can start with the Jabber and XMPP reference, which collects the session flow, the stanza model, and the standards timeline. The same material is useful whether the goal is writing a client, debugging a server, or simply understanding what happens between two accounts on different domains.
How Does Federation Actually Work Between Servers?
Federation is the property that lets two XMPP servers exchange stanzas directly, without a central service in the middle. Each server is identified by its domain, and when a user at one domain addresses a user at another, the sending server opens a server-to-server connection to the receiving one. That connection is authenticated with TLS and, in most deployments, with dialback or SASL EXTERNAL to confirm the domain identity. The practical consequence is that a small team can run its own server and still talk to users on other domains. The tradeoff is operational: federation depends on DNS records, reachable ports, and valid certificates. A misconfigured SRV record or an expired certificate will break server-to-server delivery even when both servers are otherwise healthy. Administrators who treat XMPP like email, with the same attention to DNS and TLS, tend to have fewer surprises.
Which Servers and Clients Fit a Small Team?
On the server side, three implementations come up often. ejabberd is written in Erlang and is known for handling many concurrent connections. Prosody is written in Lua and is favored for its small footprint and readable configuration. Openfire is Java-based and ships with an administrative interface that many teams find approachable. All three support the core protocol, TLS, and the common extensions for group chat and file transfer. Client choice depends more on the user's device than on the server. Desktop clients tend to offer the fullest feature set, while mobile clients face constraints around background connections, battery use, and push notifications. A team that standardizes on one client for desktop and another for mobile should verify that both support the same encryption extension, otherwise messages may fall back to plaintext or fail to decrypt.
What Do the Standards and Extensions Cover?
The base protocol is defined in RFC 6120 for core messaging and RFC 6121 for instant messaging and presence, both published in 2011 and building on the earlier 2004 RFCs. Beyond that, the XMPP Standards Foundation publishes XEPs, which are the extension documents that cover everything from multi-user chat to encryption. XEPs move through a process of proposed, experimental, draft, and final states, so a feature's maturity can be checked by its state in the registry. Two extensions matter for most deployments. MUC, the multi-user chat extension, provides the classic group chat room model. MIX, the newer mediated information exchange, reworks group communication around a different architecture. OMEMO provides end-to-end encryption and is the extension most users ask about when comparing XMPP to closed messaging apps. Support for these varies by client and server, so checking the extension list before committing to a stack is worth the time.
How Do You Verify a Technical Detail in the Reference Texts?
Verification usually means going to the primary document rather than a blog summary. The RFCs are stable and citable, and the XEP registry records the state and author of each extension. For a specific behavior, such as how a server handles a presence subscription request or how a JID is parsed, the answer is in the relevant RFC section or XEP, not in a client's user interface. A useful habit is to keep the stanza types in mind while reading. If a question concerns availability, it is a presence issue. If it concerns a request with a response, it is an IQ issue. If it concerns chat content, it is a message issue. That mapping narrows the search quickly and keeps troubleshooting grounded in the protocol rather than in guesswork about a particular implementation.
Why Does the Open Model Still Matter?
Open messaging means the address is portable and the server is replaceable. A user can move from one provider to another and keep the same JID format, and a team can migrate between ejabberd, Prosody, and Openfire without changing how its users are addressed. That portability is the main argument for XMPP in environments where lock-in is a concern. The tradeoff is that openness shifts responsibility to the operator. Federation, encryption, and extension support are configuration decisions, not defaults that a vendor manages. Teams that accept that responsibility get a messaging layer they can inspect and control. Teams that do not may find the setup work heavier than a hosted alternative, which is a fair reason to choose something else. For readers who want to go deeper, the protocol's documentation is public and the reference material is maintained in the open. The starting point is the same whether the interest is historical, technical, or operational: read the stanzas, check the extensions, and test federation between two domains before trusting it in production.
Primary references: rfc-editor.org · xmpp.org