XMPP is a libre decentralized collection of technologies, alternative to closed communication services. I’ve started self hosting my own xmpp server, and begun moving people from my close circle there. This is a summary of my collection of notes that I made for XMPP thus far, published as a short article. If you are interested in learning more on XMPP I recommend reading their official website.

What is XMPP?

XMPP stands for eXtensible Messaging and Presence Protocol, it’s a set of libre technologies that can be used for communication services, such as instant messaging, voice & video calls as well as file transfers. This is done by routing XML data.

XMPP operates similarly to HTTP, with the client initiating a communication socket to an XMPP server and maintaining it open for the entirety of the client’s active session.

XMPP was originally developed in the Jabber community to provide an open decentralized alternative to closed messaging services.

XMPP is used by a few popular platforms, these include WhatsApp, Facebook Messenger & Jitsi.

Why should you use XMPP?

For me, the primary appeal of XMPP lies in its interoperability, versatility, and extensibility. Via transports or gateways, XMPP enables a seamless connection with communities across various platforms including IRC, Matrix, WhatsApp, Telegram all from a single client.

Furthermore, the decentralized nature of XMPP is designed for self hosting, with minimal resources. This gives me the freedom to establish and manage my own server, creating an ecosystem that provides me with freedom & respects my rights, to which I can bring my family and friends.

How to communicate with IRC & Matrix using XMPP?

You can use a gateway that connects to your desired platform/protocol. For example, for IRC you’d use biboumi or btifrost for Matrix.

There are publicly available gateways, for example you can use the the biboumi gateway from jabberfr.org to connect to the emacs IRC channel in libera.chat like this #emacs%[email protected]

Self hosting an XMPP server

If you are not interested in self hosting an XMPP server, refer to this list to find servers to register to.

ejabberd

I opted to use ejabberd server for my setup, which I found really simple to setup with voice & video calls.

Setting up an ejabberd server is that simple that it does not really require instructions. I’d recommend you use their RUN Installer or if you are on debian/fedora to check out their releases for an rpm/deb package.

Other server & client options can be found here.

XMPP clients

All in all, XMPP offers user friendly clients in all platforms, that everyone can use, as always refer here for up-to-date recommendations.

This is what I personally have been using this past week with XMPP & recommend.

Mobile

  • For android, I’d recommend to use cheogram, it’s based on conversations with a few visual tweaks and additional features.
  • For iOS, I’ve installed Monal to my friends & family. I’m not sure if it’s the best one available since the iOS ecosystem is foreign to me, but the people I’ve installed it on found it pleasant to use.

Desktop

  • I’d recommend Dino, it’s been really easy to use with full support of most xmpp features (OMEMO encryption etc.)
  • There is also emacs-jabber, an emacs jabber extension, that unfortunately does not support any kind of encryption. It’s decent for public unencrypted channels.