My experience with XMPP

Published: 2022-06-25 - Updated: 2022-06-26

Introduction

XMPP is a protocol for instant messaging. It stands for Extensible Messaging and Presence Protocol. It supports most things you'd expect from an instant messaging software, like: chat, sending images/videos/other files, chatrooms, and even calling (both voice and video).

After using XMPP and also hosting my own server for awhile, I've come to the following conclusions:

Clients

I've been using XMPP on Linux and Android. On Linux, I use Gajim and for Android, I use blabber.im. I have found these to be the best on their respective platform, but that doesn't mean they are any good. I've had quite horrible experiences with Gajim (v1.3.5), such as:

blabber.im on the other hand has been a way more pleasant experience, it's avaliable on F-Droid. It's a fork of Conversations, but with improved usabilty.

I've been using it for chats, groupchats, and even voice/video. I don't have any issues with this client other than that blind trust of OMEMO fingerprints is enabled by default, but it's easy to disable.

Encryption

Most newer clients use OMEMO for client-side encryption. It's quite versatile, supporting a quite range of situtations:

The protocol itself

XMPP is built upon XEPs (extensions), this means that XMPP without extensions is very barebones. But, most of XEPs are either useless or just doesn't make any sense in a instant messaging protocol.

I believe this makes the protocol confusing to implement, as their is no standard on what should and shouldn't be implemented in their client or server. This leads to cases where you only implement a few extensions, leading to your implementation appealing only for a group of users. Of course one could try implementing all XEPs, but good luck with that...

This probably also explains why most clients are utter garbage. It seems more of a complete package aimed for big corporations to take and implement themselfs and keeping it closed source and never contributing back.

Further reading:

Selfhosting

I've been also hosting my own XMPP servers mostly for friends, nothing big. The servers has been powered by ejabberd, it supports a wide range of extensions, customizablity and also great tutorials/documentation.

I have alot of issues with how some distros package ejabberd though. Fedora's package is pretty much broken, I had to come up with hacked togheter solutions to get it up and running. Debian used to package an ancient version in their stable branch, but have since been updated to a relativly newer version.

If you looking to test your XMPP server, you could use something like XMPP Compliance Tester.

Questions or comments? contact me!