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
firstname.lastname@example.org. You can choose between thousands of server, but we'd be happy if you joined our server.
If you want to use our server, you'll have the register an account. This can be done through the qwik account manager (qam). Once you've registred your JID would become
email@example.com (assuming you used our server). Your friends will
use this address to contact you.
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.
Tor and I2P
You can use the following hostnames to connect over a darknet: