XMPP

XMPP

XMPP is an open chat protocols that has been around for more than 25 years and is still going string.

It has / had been used by many Cloud providers (Google, Facebook etc.) to develop their own proprietary chat services. Unfortunately after using XMPP as a quick start to suck in their user base almost zero of them contributed back, in fact most went opposite to its philosophy and cut off XMPP support to lock their user base in.

1. Competitive Protocols

Although much older, XMPP has been constantly evolving, enabling it to keep up with newer federated messaging protocols like Matrix (e.g. used by Element) and Activitypub (e.g. used by Mastodon).

Private Cyberspace works with ANY chat protocol e.g. Rockchat, some reasons why Matrix is not the default protocol:

  1. Matrix has only one stable server (e.g. Synapse) while XMPP has many stable servers (e.g. ejabberd, prosody, openfire etc.).
  2. Matrix was designed for synchronisation while XMPP has been designed for messaging.

2. End-to-End Encryption

XMPP OMEMO provides a credible alternative to previous XMPP end-to-end encryption schemes.

Increasing number of XMMP client now supports the OMEMO end-to-end encryption standard:

3. Multi-User Chat

XMPP's Multi-User Chat (MUC) is not federated, which can be a problem in certain applications.

MUC federation standard has been proposed, but have no been taken up by the XMPP community at this stage.

https://xmpp.org/extensions/xep-0289.html

XMPP Web Clients

Web browser based XMPP clients can be used without software installation on your device:

  1. movim xmpp client.
  2. converse.js xmpp client (has plugins).

All support end-to-end encryption using OMEMO (although might not cover all information exchanges e.g. encrypted text chat but not file sharing).

If you do not have a strong preference, converse.js is ALREADY bundled inside your Private Cyberspace while movim is quite interesting, since it has a blogging interface not found in most other XMPP clients.

Below we are comparing those 2 web clients with each other and with another popular but less active web client called jsxc which is available as an option inside Data Nodes under the Nextcloud module.

conversejs_web jsxc_web movim_web url note
RFC-7395 RFC 7395 - An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket
XEP-0004 XEP-0004 XEP-0004 XEP-0004: Data Forms
XEP-0012 XEP-0012: Last Activity
XEP-0030 XEP-0030 XEP-0030 XEP-0030: Service Discovery
XEP-0045 XEP-0045 XEP-0045 XEP-0045: Multi-User Chat
XEP-0048 XEP-0048 XEP-0048 XEP-0048: Bookmarks
XEP-0049 XEP-0049: Private XML Storage
XEP-0050 XEP-0050 XEP-0050: Ad-Hoc Commands
XEP-0054 XEP-0054 XEP-0054 XEP-0054: vcard-temp
XEP-0059 XEP-0059 XEP-0059: Result Set Management
XEP-0060 XEP-0060 XEP-0060 XEP-0060: Publish-Subscribe
XEP-0066 XEP-0066: Out of Band Data
XEP-0070 XEP-0070: Verifying HTTP Requests via XMPP
XEP-0071 XEP-0071: XHTML-IM
XEP-0077 XEP-0077 XEP-0077 XEP-0077: In-Band Registration
XEP-0080 XEP-0080: User Location
XEP-0084 XEP-0084: User Avatar
XEP-0085 XEP-0085 XEP-0085 XEP-0085: Chat State Notifications
XEP-0092 XEP-0092 XEP-0092: Software Version
XEP-0100 XEP-0100: Gateway Interaction
XEP-0106 XEP-0106: JID Escaping
XEP-0107 XEP-0107: User Mood
XEP-0108 XEP-0108: User Activity
XEP-0115 XEP-0115 XEP-0115 XEP-0115: Entity Capabilities
XEP-0118 XEP-0118: User Tune
XEP-0124 XEP-0124 XEP-0124 XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)
XEP-0144 XEP-0144: Roster Item Exchange
XEP-0147 XEP-0147: XMPP URI Scheme Query Components
XEP-0153 XEP-0153 XEP-0153: vCard-Based Avatars
XEP-0156 XEP-0156: Discovering Alternative XMPP Connection Methods
XEP-0157 XEP-0157: Contact Addresses for XMPP Services
XEP-0163 XEP-0163 XEP-0163: Personal Eventing Protocol
XEP-0166 XEP-0166: Jingle
XEP-0167 XEP-0167: Jingle RTP Sessions
XEP-0172 XEP-0172: User Nickname
XEP-0184 XEP-0184 XEP-0184 XEP-0184: Message Delivery Receipts
XEP-0198 XEP-0198: Stream Management
XEP-0199 XEP-0199 XEP-0199: XMPP Ping
XEP-0203 XEP-0203 XEP-0203: Delayed Delivery
XEP-0206 XEP-0206 XEP-0206 XEP-0206: XMPP Over BOSH
XEP-0224 XEP-0224: Attention
XEP-0231 XEP-0231: Bits of Binary
XEP-0234 XEP-0234: Jingle File Transfer
XEP-0245 XEP-0245 XEP-0245 XEP-0245: The /me Command
XEP-0249 XEP-0249 XEP-0249: Direct MUC Invitations
XEP-0256 XEP-0256: Last Activity in Presence
XEP-0277 XEP-0277: Microblogging over XMPP
XEP-0280 XEP-0280 XEP-0280 XEP-0280: Message Carbons
XEP-0292 XEP-0292: vCard4 Over XMPP
XEP-0297 XEP-0297 XEP-0297: Stanza Forwarding
XEP-0308 https://xmpp.org/extensions/xep-0308.html
XEP-0313 XEP-0313 XEP-0313 https://xmpp.org/extensions/xep-0313.html
XEP-0316 https://xmpp.org/extensions/xep-0316.html
XEP-0317 https://xmpp.org/extensions/xep-0317.html
XEP-0330 https://xmpp.org/extensions/xep-0330.html
XEP-0333 XEP-0333 https://xmpp.org/extensions/xep-0333.html
XEP-0334 https://xmpp.org/extensions/xep-0334.html
XEP-0352 https://xmpp.org/extensions/xep-0352.html
XEP-0357 https://xmpp.org/extensions/xep-0357.html
XEP-0359 https://xmpp.org/extensions/xep-0359.html
XEP-0363 XEP-0363 XEP-0363 https://xmpp.org/extensions/xep-0363.html
XEP-0372 https://xmpp.org/extensions/xep-0372.html
XEP-0382 https://xmpp.org/extensions/xep-0382.html
XEP-0384 XEP-0384 https://xmpp.org/extensions/xep-0384.html
XEP-0385 https://xmpp.org/extensions/xep-0385.html
XEP-0392 https://xmpp.org/extensions/xep-0392.html
XEP-0393 https://xmpp.org/extensions/xep-0393.html
XEP-0422 https://xmpp.org/extensions/xep-0422.html
XEP-0424 https://xmpp.org/extensions/xep-0424.html
XEP-0425 https://xmpp.org/extensions/xep-0425.html
XEP-0437 https://xmpp.org/extensions/xep-0437.html
XEP-0453 https://xmpp.org/extensions/xep-0453.html
XEP-0454 https://xmpp.org/extensions/xep-0454.html

All 3 software are actively being developed as of 2022 so the above XMPP feature table is for reference only and will be out of date almost immediately after it is published.

Some other interesting XMPP Web Clients we have yet to play with:

  1. https://salut-a-toi.org/

XMPP iOS Clients

1. Siskin

Source Code

Documentation

https://docs.tigase.net/projects/tigase-siskin-im/en/latest/

2. Monal IM

Source Code

3. ChatSecure

Note ChatSecure has NOT been updated for a while.

Source Code

XMPP Android Clients

There is currently no perfect XMMP client for Android.

  • Conversations can search by messages while aTalk cannot.
  • aTalk uses ZRTP to secure RTP streams while Conversations does not.

1. Conversations

Source Code

Download

2. aTalk

Source Code

Download

XMPP macOS Clients

1. Gajim

2. Monal IM

Source Code

3. Beagle IM

Source Code

XMPP Windows Clients

1. Pidgin

2. Gajim

XMPP Linux Clients

1. Dino

2. Gajim

3. go-sendxmpp

XMPP Bridges

Recommended Bridges

There are many XMPP bridges by nicoco:

Mastodon to XMPP Bridge:

Alternative XMPP Bridges