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 (duh?), sending images/videos/other files, chatrooms (group chats), and even calling (both voice and video). It also supports another great thing: encryption.
The biggest problem with XMPP is that many of the clients (apps/programs you use to chat with people) could be better. To some extent, all clients lack features or are buggy or even poorly designed - although, for the most part, it will be fine.
To use XMPP you will need a client. Below you can see our recommendations of clients for different platforms.
- Gajim (Website)
There might be other XMPP clients that we have missed, but this covers the main ones we know about. We primarily use gajim and blabber.im.
* F-Droid is a repository containing free and open source Android apps.
To register you would need a server to register on. Kind of in the same way you can register an email at different domains.
(@gmail.com, @outlook.com, @protonmail.com, etc.) XMPP works in a similar manner where your JID (Jabber ID) is formatted as
email@example.com. You can choose between thousands of server, but we'd be happy if you joined our server.
Most, if not all, clients allow you to register an account directly in the app, but if you have problems to register through the
app then you can use this page. If you want to register at our server use the server address
qwik.space. Once you've registred your JID would become
firstname.lastname@example.org (assuming you used our server). Your friends will
use this address to contact you.
When you've registered on our server you should get a welcome message kind of like this:
Welcome to qwik.space! You can find more information at https://qwik.space/articles/xmpp/intro
If you have any questions regarding the server, send a message on XMPP to email@example.com
XMPP supports two types of encryption: OMEMO and OTR. We personally recommend using OMEMO as it is the easiest to use and all previously mentioned clients support it*. Even though OTR is supported by some clients, we don't recommend using it as it doesn't support support encryption of calls or MUCs.
If you are more of an "advanced" user, we recommend turning of blind trusting in your client and manually trust OMEMO fingerprints.
* If you are using gajim on linux you might need to install an external package to get support for OMEMO:
Chat rooms (group chats)
XMPP allows you to create chat rooms with multiple participants, they are called MUCs (Multi-User Chats). You can create one
through most clients. If you are prompted for a room address when creating a room, simply input
name is the name of the chat room.
You might be prompted to choose between a public and a private room. The difference is that private rooms supports encryption and you must be invited to enter it. Public rooms, on the other hand, only requires you to know the address to join, although you can also be invited to a public room. Public rooms do not support encryption.
Once you have created a room you should be able to invite your friends through the client, otherwise you could try giving them
the address. You can also create invite links with the following format: xmpp:firstname.lastname@example.org?join.
You would replace
qwik with the name of your room.
To use calls (audio or video) your client must support it. Not all clients support calls, but if your client supports calls you should see a call-button somewhere on the screen. For your recipient to recieve the call their client must also support calls. The last requirement is that the server must support calls as well (our server does support calls).
If you use OMEMO, the calls will be encrypted.
You can also connect using Tor, use the following information: