From LibrePlanet
Jump to: navigation, search

XMPP en en

What is it?

It's an open standard for federated instant communications which by default allows people to send text messages, but has extensions to do things such as: video/audio conferences, group chats, end-to-end encryption, group chat history and news services. It also allows people to to have "bridges" between XMPP and some instant communications techniques.

Why should you use it?

Simple arguments

Jump to: How to use it?

"open standard" 
basically, means:
  • there is more than one group of people who define how it works;
  • the decisions can be read by anyone because everything is documented;
  • chances are that even you can join given group and influence the decisions.
everyone can communicate and interact fully with each other that has a contact point/address which complies with the XMPP standard.

In other words, you can create a XMPP account with any provider that offers such service and from there on you can be sure that you will be able to contact other people who use XMPP provided you respect the service provider's agreement.

Socially, federated (and also the distributed) open standards change the "reference point" of society's way of expressing their methods of communication[1]. Exactly like email, while in email you don't ask if someone has a ExampleA.com account and instead ask if they have an email, for XMPP you also don't ask if said person has a ExampleB.com account. Also, just like email, if you don't like the service made by the provider, you can change providers and continue communicating with your contacts after telling them about it, and they don't need to make yet another account.

If you have the interest and skills, you can also act as a XMPP service provider, either for yourself, your family, a given group of people, payers (all of these types are closed registration) and for the general public with or without limitations (open registration).
Humans are social beings, but some people misuse this need 
the vague, closed, non-standardized and centralized nature of some popular communication technologies make socialization harder for other people.
Various client software 
XMPP has various software that can be used as clients. Browse the Free Software Directory[2] for a partial list of client and server software for general computers and F-Droid[3] for a list of client software for mobile devices.
Various service providers 
some with additional features and extensions. This guide won't give recommendations of service providers because doing so in federated communications isn't good[4].
While the basic feature of text messaging is always available for online users, the XMPP standard has extensions (abbreviated as "XEP", plural: "XEPs"). With extensions, it's possible to: chat in groups, have end-to-end encrypted messages, participate in client-to-client video or audio calls, recover chat history even after being absent from a group, receive important news and share files directly with someone or relying on the service provider to store the file temporarily (and automatically give a link to it).

Each extension has an official number or an official friendly name. Some extensions only need to be supported and enabled in the client software, while other extensions need both client software and service provider to enable them, there are also those which only need service provider intervention.

Here is a list of some common XEPs and what they allow the server or client to do:
  • XEP-0077 (In-Band Registration): Allows for making an account using the client software itself.
  • XEP-0215 (External Service Discovery, STUN/TURN): Helps make audio/video calls by simplifying communication.
  • XEP-0045 (Multi-User Chat): To connect to most chat rooms.
  • XEP-0191 (Blocking Command): Blocks unwanted contacts.
  • XEP-0313 (Message Archive Management): Synchronize messages that you received when you were not online, with all your applications/clientes, not just one.
  • XEP-0280 (Message Carbons): Synchronize outgoing messages.
  • XEP-0363 (HTTP File Upload): Use the server to send any type of file, as long as it is within the maximum size allowed by the service provider, which will be available for a server-specified amount of time.
  • XEP-0384 (OMEMO Encryption): End-to-end encryption.
  • XEP-0352 (Client State Indication): Optimeze power consumption when an application/client is not online.
  • XEP-0357 (Push Notifications): Deliver information efficiently even for applications/clients on mobile devices.
  • XEP-0048 (Bookmark Storage): Store favorite chat rooms and allows you to give them short names and configure if your clients should automatically connect to these when you get online.
  • XEP-0163 (Personal Eventing Protocol): Needed for storing your favorite chat rooms and for general OMEMO encryption.


  • WhatsApp uses a variant of XMPP, called FunXMPP. However, no known "bridge" exists between real XMPP and WhatsApp. Morever, it must be noted that no further evaluation was made on possible legal issues of implementing such "bridge" or if the communication can happen without having to make another XMPP account. In all cases, indirect usage of WhatsApp and FunXMPP makes more people use non-free/non-libre software, even if one tells people to do so "but make sure to do X...", because people won't remember.

Advanced arguments

Jump to: How to use it?


  • In the contemporary economic studies, it has been proven[5][6] that "public goods" made from knowledge and information, and which are put under control structures made for non-public goods, result in a "gridlock" effect where people who want to join in are afraid to because of a possible litigation, and those which are already in are afraid of leaving due to the possibility of losing the progress made.
    • "public good" 
      in economics sense, not public management. Things which are non-rivalrous and non-excludable.


  • The main goal of such gridlocks and centralization seems to be tied with tracking[4], behavior collection and psychological manipulation[7]. With only a few big centralizers and with more people being discouraged from self-hosting or self-providing services either to particular people or to the general public, it becomes very easy to do the things described in start of this paragraph. But with more players, and no standard for interaction between people affected by the players, then communication becomes almost impossible without having to make various accounts.

How to use it?

  1. Compare and select a service provider, either by looking at those from the city, state or country you live in or from worldwide, for all these cases, consider:
    • Don't expect for the perfect solution.
    • The language spoken by the administrators in order to make it easy for you to understand any messages sent from them.
    • If the administrator lives in the same country as you, so that you can help them with ease either with financial, technical resources or ease other people near you make the switch to XMPP.
    • Check the terms of service, so that they aren't bad for you or the others.
    • Important: Since XMPP is extensible, make sure that the provider has all the extensions you want enabled. To do that, check or contribute to https://compliance.conversations.im/, the collaborative catalog of tests made on how compliant a specific provider is regarding the most common XMPP extensions. This step is important since not all XMPP service providers enable all the commonly expected features.
  2. Register an account with the selected provider. Service providers that support XEP-0077 allow you to do so using the client software.
  3. Compare and select the client software. Use free/libre software:
    • Make sure that the software has all the extensions you want, and that you get them all enabled.
    • For user-friendliness, it's recommended to use Gajim 1.3 or greater either on the GNU operating system or on Windows, or Conversations (real name: eu.siacs.conversations) on Android/mobile, for this last case, it's recommended to install F-Droid[3] and from there install Conversations.
  4. Add your account to your client:
    • On Gajim:
      1. If the account configuration assistant doesn't appear, go to the main Gajim window, click "Edit", "Accounts", and then on "Add".
      2. Tell it whether you have a XMPP account already or not.
      3. Fill in your authentication details.
    • On Conversations:
      1. If the account configuration assistant doesn't appear, tap the vertical ellipsis, on "Manage accounts", and then on the icon of a person with plus symbol.
      2. Fill in your authentication details.
      3. Tell it whether you have a XMPP account already or not.
  5. If you want to join existing chat rooms:
    • On Gajim:
      1. Go to the main Gajim window, click "Actions", "Join Group Chat", and on "Join New Group chat".
      2. Fill the fields as follows:
        1. Nickname: Your nickname when inside the chat room. Can have spaces.
        2. Room: Part of the address that is to the left of the at sign.
        3. Server: Right of the at sign.
        4. Password: Generally left blank, except if a member of the room tells otherwise.
        5. Bookmark this room: Recommended to be checked, if you want to not be required to recall the exact address of the room every time you want to join it.
        6. Join this room automatically when I connect: Recommended to be checked, but contrary to WhatsApp, it is not a requirement because of the early option.
    • On Conversations:
      1. On the lower right corner, tap on the circle with a bubble, the circle with a plus, then on the icon next to "Join public channel" or similar text.
      2. Fill the fields as follows:
        1. Your account: Generally there will be just one account.
        2. XMPP address: The room address, in the form of room-name@server-of-the-room.
        3. Bookmark: Recommended to be checked, if you want to not be required to recall the exact address of the room every time you want to join it.
  6. If you want to join a room that you have bookmarked:
    • On Gajim:
      1. Go to the main Gajim window, click "Actions", "Join Group Chat", and select the room.
    • On Conversations:
      1. On the lower right corner, tap on the circle with a bubble, "Bookmarks", and on the desired room.
  7. Spread the importance of free/libre software and of XMPP! Invite other people! ;)

Why not recommend other XMPP non-compliant instant communication solutions?

  • From Moglen (2017)[8] one can draw the consideration that there is need for things that work in a reasonable basic level, which are stable, standardized and get the basic job done even in the most limited environment. From the same reference, there is no longer time to recommend an incomplete solution and say that it will get better as "we" thinker with it and that people should just "massively use it already". This is not to say that the development of other solutions must be abandoned. What should be done is instead to recommend already stable solutions to the general public, and leave the unstable ones to people who really get interested on helping out.


  1. NOCUN, Katharina. A new kid on the block: conditions for a successful market entry of decentralized social networks. 2015. CC BY 4.0.
  2. [1].
  3. 3.03.1 [2].
  4. 4.04.1 GERWITZ, Mike. The surreptitious assault on privacy, security, and freedom. 2017. CC BY-SA 4.0.
  5. DE ROSNAY, Melanie Dulong; DE MARTIN, Juan Carlos. The digital public domain: foundations for an open culture. 2012. CC BY 3.0.
  6. MANSELL, Robin; TREMBLAY, Gaëtan. Renewing the knowledge societies vision for peace and sustainable development. 2013. Informal license allowing use, adaptation and redistribution, with adaptations under similar terms.
  7. BENKLER, Yochai. Degrees of freedom, dimensions of power. 2017. CC BY-SA 3.0 US (proof).
  8. MOGLEN, Eben. The free software movement in the age of Trump. 2017. CC BY-SA 4.0.

Comparison of XMPP clients

Operating system support

Client Operating system
Windows macOS Linux Web Android iOS
Gajim Yes No Yes No No No
Jitsi Yes Yes Yes Yes Yes Yes
Kadu Yes Yes Yes No No No
MCabber No Yes Yes No No No
Pidgin Yes Yes Yes No No No
Psi Yes Yes Yes No No No
Client Operating system
Windows macOS Linux Web Android iOS


Client Transports File transfer
File transfer Voice calls Video calls OMEMO encryption
Adium Yes Yes Yes Yes No No No Partial
BitlBee Yes Yes Yes Yes No No No No
Bombus No Yes Yes No No No No No
climm No Yes No No No No No ?
Coccinella Yes Yes Yes No No Yes No ?
Telepathy-based No Yes Yes Yes Yes Yes Yes ?
Gajim[1] Yes Yes Yes Yes Yes Yes Yes Plug-in
Jitsi No Yes Yes Yes Yes Yes Yes No
Kadu No Yes No No No No No ?
Kopete Yes Yes Yes Yes No No No ?
MCabber No No Yes No Yes No No No
Pidgin Yes Yes Yes Yes No Except Windows Except Windows Plug-in
Psi Yes Yes Yes Yes Yes Yes No Plug-in
Spark ? Yes Yes ? ? Yes Yes No
Tkabber Yes Yes Yes No No No No No