owned this note
owned this note
Published
Linked with GitHub
# elixi.re XMPP document
XMPP is our recommended federated chat platform. It's stable, battle-tested, full of features and supports decent encryption through OMEMO.
We tried Matrix but had major issues with stability and other stuff, even on our own Homeserver (and no, we didn't attempt to federate with matrix.org).
Contributions to this document are welcome. Contact Ave with what you want to add, and she'll add it here.
---
## XMPP Glossary
- **XMPP:** XMPP is a federated, extensible messaging standard that first started in 1999, but saw significant improvements over the years thanks to its extensible nature through various XEPs. Feature-wise it's pretty close to most mobile chat apps (Whatsapp, Telegram, Signal), security-wise it's a little better than Signal and Whatsapp (it uses same encryption, but it exposes more stuff that allow you to be more secure), and is better than Telegram and Discord.
- **Federation:** Federation is a complicated concept to understand at first, but you can think of it like the difference between email and whatsapp. You can email someone regardless of their provider (gmail, hotmail, protonmail etc), but you can't message someone on Telegram through WhatsApp. Similarly, you can message someone on a3.pm on XMPP even if you're not on a3.pm, but on a whole other server, like creep.im for example.
- **Jabber:** Jabber was the original working title of XMPP. While XMPP is the current name, a lot of terminology and software still refers to it as Jabber.
- **JID:** JID stands for JabberID. JabberIDs look like email addresses, for example they may look like `a@a3.pm`. People can add you and chat with you using your JID.
- **XEP:** XEP stands for XMPP Extension Protocol. It allows anyone to propose features to XMPP, thereby keeping XMPP up to date to modern requirements for a chat platform.
- **XSF:** Quoting their Github description: "XMPP Standards Foundation is the foundation in charge of the standardization of the protocol extensions of XMPP, the open standard of instant messaging and presence of the IETF." (IETF: Internet Engineering Task Force)
- **OMEMO:** #TODO, TL;DR a rather secure encryption system, using same algorithm as Signal and Whatsapp ([Axolotl/Double Ratchet](https://en.wikipedia.org/wiki/Double_Ratchet_Algorithm))
- **MUC:** MUC stands for Multi User Conference, TL;DR: It's a group chat.
---
## Recommended XMPP applications
#### Android: Conversations
Conversations is widely regarded as the best XMPP software out there, and honestly, it is.
[F-Droid](https://f-droid.org/en/packages/eu.siacs.conversations/) (Free)
[Google Play](https://play.google.com/store/apps/details?id=eu.siacs.conversations&hl=en_US) (Paid, ~$5)
[Github](https://github.com/siacs/Conversations) (Source code, GPL3 licensed, Libre)
The Google Play version supports the Push Notification XEP while it's disabled on F-Droid version. This is done because it relies on a third party server and google's services. You can compile it yourself with your own API key and such if you want that functionality. The github README has more info on this.
Note: The F-Droid version *does* have push notifications, just not through the XEP (and it therefore consumes just a bit more battery).
#### iOS: ChatSecure
Not much to say about this. It's not too great, but it supports some stuff and is the best XMPP client for iOS.
[App Store](https://itunes.apple.com/us/app/chatsecure-messenger/id464200063) (Free)
[Github](https://github.com/ChatSecure/ChatSecure-iOS) (Source code, GPL3 licensed, Libre)
#### Linux/Windows: Gajim
One of the best XMPP clients. A lot less polished than Conversations etc, though.
[Downloads / Install Instructions](https://gajim.org/downloads.php?lang=en)
Note: Once you install it, you'll have to go to `Gajim -> Plugins`, into `Available` tab and install `OMEMO` (and optionally `Url image preview`). You'll have to go to Installed tab and activate them once that's done. You may need to install additional dependencies, it should tell you what it needs.
PS: Gajim doesn't enable OMEMO by default. Make sure to enable it the first time you start chatting with someone, like this:

(keep in mind that MUCs don't support OMEMO)
#### Linux/Windows: Gajimbo
Ave (me, haihai!) maintains a version of Gajim called Gajimbo that has some feature changes to Gajim that might help if you're moving from discord or conversations to gajim, such as the way underlines are handled or the lack of emoji completions. There's more changes, and they're all listed on the README.md file on the repo.
Note: If you move from Gajim to Gajimbo (or vice versa), all your data will stay.
Currently you need to compile it yourself (unless you want to use AUR), but it's as simple as `pip3 install .`.
AUR: [`gajimbo-git`](https://aur.archlinux.org/packages/gajimbo-git/)
Windows builds by Cyn: [installer](https://cdn.discordapp.com/attachments/458063291822899212/544253965978697758/Gajimbo-b3e6e667.exe), [portable installer](https://cdn.discordapp.com/attachments/458063291822899212/544253968700801024/Gajimbo-b3e6e667-Portable.exe)
[Gitlab](https://gitlab.com/ao/gajimbo) (Source Code, GPL3, Libre)
#### Linux: Dino.im
Still under heavy development, quite buggy and lacking in features, also rather insecure for now (trusts all OMEMO keys blindly), but still worth checking out.
[Downloads / Install Instructions](https://github.com/dino/dino/wiki/Distribution-Packages)
[Github](https://github.com/dino/dino) (Source code, GPL3 licensed, Libre)
#### macOS: Adium
[Adium](https://www.adium.im/) is an open source XMPP (and others) chat client for macOS.
OTR encryption support is included out of the box, but you don't want this. Install the [Lurch Xtra](https://github.com/shtrom/Lurch4Adium) for OMEMO support and Message Carbons.
To show your fingerprint, run `/lurch show fp own` in a chat window.
Use `/carbons on` to enable Message Carbons.
**Note:** Lurch will not prompt you to trust OMEMO keys. It will trust all blindly. Use `/lurch show fp conv` to show all fingerprints of all chat participants.
OMEMO will work automatically in one-to-one chats.
[Github](https://github.com/adium/adium) (Source code, GPL2, Libre)
#### Linux/Windows/macOS: Pidgin
Pidgin is eh for XMPP but they do have an OMEMO plugin.
It's not really recommended, but if you really need to use smth and other options here somehow don't work for you, pidgin is acceptable.
On most linux distros you can just install pidgin through your package manager.
On macOS, it's on Homebrew, Fink and Macports. [More info here](https://pidgin.im/download/mac/).
[You can download it here for Windows](https://pidgin.im/download/)
[Bitbucket](https://bitbucket.org/pidgin/main/src) (Source code, GPL2+, Libre)
---
## Recommended XMPP servers
Note: In-band means that you can register directly through your client.
Please don't all use the same server, that defeats the point of federation.
- kode.im | in-band | https://kode.im/
- lightwitch.org | https://lightwitch.org/xmpp/register
- a3.pm | in-band | Note: This server is owned by Ave and Luna.
- creep.im | in-band | https://creep.im/
- fysh.in | https://fysh.in/register
- disroot.org | https://user.disroot.org/pwm-disroot/public/newuser | Note: Doesn't support `XEP-0357: Push Notifications`.
- jabber.ccc.de | in-band | Note: Does not support the `XEP-0363: HTTP File Upload`, sending files may be tricky.
- conversations.im | in-band | Note: Paid, 6eur/yr.
We do not recommend the following XMPP servers:
- member.fsf.org | Reason: Very poor XEP support, ancient ejabberd, paid ($5/mo minimum).
- xmpp.jp | Reason: Bad XEP set
- cock.li and all of their sites | Reason: 1) [holy fucking shit extremely bad XEP set](https://elixi.re/i/m6l4.png) 1.1) they somehow managed to be worse than fsf in terms of xeps 1.2) there's even a cert mismatch 1.3) [compliancetester doesn't even work](https://elixi.re/i/rk2p.png) 2) recommends otr in 2018 3) shitty owner, shitty culture
Want to host your own? We recommend ejabberd **without docker**.
Here's the config we use for a3.pm: https://gitlab.com/lavatech/a3.pm
Want to have someone else host it for you? Conversations.im offers a service for that starts at 12eur/yr (with 1 user limit, costlier plans offer higher user limits). [linky](https://account.conversations.im/domain/).
---
## Staff JIDs and our MUC
You can reach our staff members at the following JIDs:
- Ave: a@a3.pm
- Luna: l@a3.pm
- Mary: m@a3.pm
- Slice: slice@a3.pm
You can drop by our MUC at `elixire@conference.a3.pm`.
# FAQ
## How to join a MUC
##### On Gajim/Gajimbo
Open accounts dropdown menu -> Route your mouse through the account you want to join with -> "Join Group Chat" -> "Join Group Chat"
##### On Conversations
Green round chat button near bottom right on main page -> "Group Chats" -> Menu button (3 dots on top of each other) near top right -> "Join group chat"
## How to Change Password
Your server needs to support inline registration XEP for this. They may disable registration and this will still work, but if they disable XEP it won't.
##### On Gajim/Gajimbo
Go on Gajim/bo dropdown menu -> "Accounts" -> (The account you want to change password on) -> "Login" -> "Change Password"
##### On Conversations
Tap menu button (3 dots on top of each other) near top right, on main page -> "Manage accounts" -> (account) -> tap menu button again -> "Change password"
If the change password thing isn't in list, then your server doesn't support it. Contact your server's owner.
##### On Adium
Open Preferences with CMD+, then right click on the account and hit Change Password.
## How to edit a message
You can only edit your last message, and you can't delete messages. Hopefully there'll be XEPs that improve both of these limitations in the future.
##### On Gajim/Gajimbo
Press Ctrl+Alt+Up -> edit your message as you wish -> press Enter
##### On Conversations
Tap and hold the latest message -> "Correct message" -> edit message -> tap send icon
## How to disable rich content in messages
If you're bored of this then you're at the right place:

##### On Gajim/Gajimbo
Go on Gajim/bo dropdown menu -> "Preferences" -> tick "Ignore rich content in incoming messages".
Note: As of 2018-07-25, all new installations of gajimbo have rich content disabled by default (if you installed Gajim or Gajimbo before this date, it'll be enabled for you). You can untick to enable them if you wish.