Published: 2022-08-08 - Updated: 2022-08-08
XMPP is a protocol for instant messaging. 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).
It offers a few advantages over traditional protocol/applications, such as the following:
To be able to use XMPP, you need a client. Below, you can find a few popular choices for each platform. I personally use both Gajim and blabber.im, and haven't had too many problems with them.
Linux
Windows
Android
iOS
Now, you'll need to pick a server to sign up for. You can find a list of "fully compatiable" servers at compliance.conversations.im. Remember to also look at their privacy policy before signing up. A few popular options are trashserver.net and snopyta.org.
Registering an account may differ from server to server, some make you register through their website, but most let you register straight from your client. Once you've registered, you'll have a JID (Jabber ID), which could look something like this: username@server.example
. The JID will be your contact information.
XMPP supports end-to-end encryption (E2EE), meaning only you and your contact will be able to read the messages you send to each other. This can be achived through OMEMO, which is supported by all clients mentioned above.
OMEMO is relativly painless to use, you just enable it and aslongest the recipent supports it, it will just work. Currently most clients will automatically trust all fingerprints of new contacts, and then prompt you to trust them or not if they were to login with a new device (More info on the topic).
If you wish to provide some way of verifying yourself to your contact, you can give them your OMEMO fingerprints. Where your fingerprint can be found depends on your client.
Also depending on Linux distro, you may also need to install a secondary package gajim-omemo
for support of encryption in Gajim.
What if you want to send a message to someone who is offline, there's where MAM comes in. MAM allows messages to be stored/archived on the server for later retrieval.
How long they're stored depends on the server's policy. Note: MAM stores messages the way they were sent, so if you send a message without encryption it will be stored unencrypted. If you wish to configure MAM for whatever reason, it can be easily done in most clients.
Another great feature of XMPP is group chats (MUCs), there's both private and public. The difference being that, private allows you to use OMEMO (encryption) and is invite-only. Creation of rooms is done through your client.
Once you have created a room you should be able to invite your friends through your client, otherwise you could try giving them the address. It's also possible to create invite links in the following format: xmpp:test@muc.urof.net?join. You would of course replace the address with the ID of your room.
If you're looking for public rooms to join you can checkout this list which features tons of rooms with various topics.
Voice and video calling is quite the experimental feature in most clients, to use this feature your server also need to support it. As of currently, I've personally only been able to communicate between Android clients (Conversations/blabber.im).
Note: If you're using OMEMO with your contact, the call will also be encrypted.
Well, feel free to message me on XMPP. I'm avaliable under the following JID: urof@urof.net. If you wish to verify me, I have the following OMEMO fingerprint:
27B81A09 4727BBB8 806865B0 2501C237 4F6CD239 39A3A03B 2709475B 47D8E952