XMPP
XMPP est un protocole permettant de faire de la messagerie instantanée.
Un client XMPP est un logiciel de messagerie instantanée (tchat) qui utilise le protocole XMPP. Un serveur XMPP est un logiciel serveur qui implémente le protocole de communication XMPP.
Présentation
XMPP, aussi connu sous le nom de Jabber, est un protocole ouvert et standardisé dont le but premier est de répondre à des besoins de messagerie instantanée. Il est extensible à une variété d’usages.
Fonctionnalités
Dans les grandes lignes, XMPP propose :
- Un écosystème suffisamment mature pour être plutôt bien packagé dans nos distributions Linux. Cet écosystème est resté peu mouvant pendant plusieurs années, mais s'est redynamisé suite à l'émergence de sa concurrence (réseaux sociaux, solutions de tchat essentiellement basées sur du web, notamment Matrix).
- Des résultats pouvant être variables selon le client ou le serveur. Etant donnée la diversité des clients/serveurs, cela revient à consacrer un temps à tester et cibler afin d'éviter des écueils dûs aux implémentations disparates.
- L'audio/video semble hors de portée, mais ce n'est pas une fonctionnalité clé. Jingle est difficile à implémenter, et l'intégration de Jitsi n'a pas été anticipée.
- L'archivage des conversations côté serveur avec défilement infini côté client semble possible. Attention car il existe deux XEPs dont une obsolète (et donc Gajim s'est débarassé) sur certains serveurs.
- Une liste de serveurs publics, qui peut être complétée par un rapport des XEP gérées par les serveurs.
- Le spam est encore une question ouverte et n'est pas toujours finement gérée.
- La vie privée est prise au sérieux, on voit pas mal de réglages par défaut qui vont dans ce sens.
- Les chats groupés fonctionnent, mais ont des soucis liés aux JID masqués des intervenants sur le salon. Parler à la même personne, mais via le salon, ou via son roster, peuvent donc avoir des résultats différents.
- La gestion du chiffrement (OMEMO) est un peu complexe (défis communs du chiffrement de bout en bout).
- Voir la liste des clients gèrant OMEMO.
- Une empreinte par client (qui est encore différente dans le cas d'un MUC), cela peut donner lieu à des loupés.
- L'utilisation de plusieurs clients simultanément devient aussi plus périlleuse : le message est bien déchiffré sur l'un, pas sur l'autre, bien que les 2 clients soient censés pouvoir gérer le chiffrement. Ou diverses expériences de malchance selon la finesse dans la gestion des messages.
Clients
Ces clients répondent à des profils d'utilisateur différents. Plus ou moins rangés dans un ordre des clients à tester en premier pour se faire une idée de l'expérience usager de XMPP.
Gajim
… est un client complet, plutôt destiné aux environnements GTK/Gnome, attentif au suivi des nouvelles XEP.
- En l'utilisant un peu naïvement, rencontré un hic d'ergnomie pour rejoindre un salon. Quelques confusions possibles depuis le passage en GTK3 de l'interface.
- Les fonctions audio/video utilisent Gstreamer, le paquet Debian n'indique pas quels paquets de bibliothèques sont nécessaires pour le faire fonctionner. Note de Nov 2020: les dernières versions de développement de gajim se penchent sur l'audio/video, encore à l'essai, il n'est pas attendu qu'elles fonctionnent dans les anciennes versions.
- Un bug sur les permissions dans les salons (constaté sur le salon d'un serveur tiers). Lors de la promotion en tant que modo/admin, Gajim ne rafraichit pas les JID des participantes. Il ne peut donc agir pour ajuster leurs permissions. Il faut fermer Gajim et revenir pour résoudre le problème (peut-être qu'une déco/reco au serveur du salon suffit).
- La synchro d'historique ne se fait qu'avec la XEP 313, donc Gajim ne sait pas récupérer l'histo sur certains serveurs utilisant la XEP 136. Pour la 313, il y a une fonction de synchro de l'historique, qui peut récupérer plusieurs mois de discussion sur demande.
- L'option “ignorer les messages de personnes qui ne sont pas dans notre roster” est planquée dans les options de Confidentialité du compte XMPP, mais ont un impact fort car difficile alors de laisser entrer des sollicitations pourtant désirées.
Conversation / Quicksy / ...
… est le client plébiscité pour Android. Il est payant sur le Play-Store et gratuit sur F-Droid. La version F-Droid ne dispose pas de la fonctionnalité Push.
- Conversation et ses forks sont disponibles dans F-Droid.
- Conversation encourage l'usage de son propre serveur pour la création du compte, qui devient payant. Des forks sur fdroid songent à retirer cette anti-feature.
- Quicksy est une version simplifiée de Conversations avec découverte automatique des contacts (comme Signal). Les JIDs sont automatiquement créés d'après le numéro de téléphone, éliminant ainsi l'étape de création de compte. Quasi anti-feature.
- Blabber.im, fork de Conversations, communauté germanophone.
- Conv6ations, fork de Conversations, qui privilégie la connectivité IPv6.
Dino
- Agréable et intégré à gnome, son apparence est (peut-être trop) simpliste, il est néanmoins capable de gérer quelques fonctions avancées.
- Gestion de OMEMO
Converse JS
… est un client Web, qui s'éxécute dans le navigateur, avec lequel vous pouvez vous authentifier sur n'importe quel serveur XMPP.
- L'esthétique en mode fullscreen serait améliorable. Rectification: elle est personnalisable et peut être simple et assez classe, il faut sans doute la builder pour personnaliser.
- N'a pas pour but de couvrir l'ensemble des fonctions XMPP, il faut un “vrai” client pour…
- gérer les permissions sur les salons
- envoyer des fichiers
- configurer des choses (options du salon…)
- Utilise le CDN de conversejs, il faut rebuilder la bibliothèque js avec node.js (bien que 100% client-side) pour éliminer ce CDN de la route. On pourrait vaguement s'en sortir avec une regexp ciblant le CDN, mais d'autres appels vers conversejs.org sont inscrits dans la version JS minifiée, plus difficile à éliminer.
- Exemple de déploiement sans CDN sur JabberFR
Profanity
Site : Profanity
- C'est un chouette client XMPP qui se lance dans un terminal.
- Gère OMEMO/OTR/PGP. Pour OMEMO, on constate que son activation peut amener à des messages illisibles pour le destinataire aux premiers essais. Résultats variables selon le client : fonctionne bien avec Gajim, mais mauvais résultats entre clients Profanity. Ces couacs de gestion peuvent dissuader d'employer OMEMO.
- La configuration via commandes est relativement cohérente mais pas aussi claire que ce que peut proposer Weechat.
- Pêche un peu sur le rangement des commandes en groupes.
- Les noms des commandes et leur description ne sont pas toujours très explicites.
- Ne permet pas de connaître la valeur d'un réglage (afficher la configuration actuelle mais sans la modifier).
Psi (kokwak) et Psi+
Psi et Psi+ sont développés en parallèle. Psi+ est la version de dévelpopement pour l'implémentation des nouvelles XEP.
- Si vous activez OMEMO avec Psi/Psi+, celui-ci est susceptible d'émettre des messages chiffrés en OMEMO vers des clients qui ne le gèrent pas. Ni vous, ni votre interlocuteur, ne saurez qu'aucun message n'a été transmis, et vous parlerez dans le vide sans le savoir. Dans cette même situation, d'autres clients XMPP (Gajim) avertissent via un message en clair1) au destinataire qu'il ne gère pas OMEMO.
- Les gens qui utilisent Psi voient des lunes bleues.
- Bug Debian: Psi+, Profanity et OMEMO
- Bug Debian (plutôt de SSL que de psi-plus ?), aussi rencontré avec pidgin : jabber/XMPP connection fails with "SSL Handshake failed"
Poezio
- Interface pas aussi réussie que celle de Weechat, mais ça va
- Usage assez guidé, ergonomie plutôt intuitive, petits couacs de (re)prise en main.
- Pas assez testé pour évaluer son degré de complétude de fonctions.
Weechat + Bitlbee
- Fait le job pour un usage de base : le roster est disponible, on peut ajouter des salons en autojoin.
- Version 3.5.1-1.3, tous les pseudos sont assignés d'après les JID, il semble pourtant savoir gérer un renommage local. Peut créer des fuites de vie privée.
- Pas d'OMEMO. OTR est dispo mais n'est plus le chiffrement plebiscité par la communauté XMPP.
- Problème de taille : si une personne essaie de vous écrire en OMEMO (car oui, certains clients le font même si votre client n'est pas identifié comme gérant OMEMO), aucun indicateur ne permettra de se rendre compte que les messages n'ont pas été reçus.
- Récupère l'historique (gestion de la vieille XEP, pas certain qu'il gère la plus récente).
- On peut approuver les nouveaux contacts (qlist, puis yes). Risque de louper ces requêtes car elles sont discrètes.
- Un test de transfert de fichier a échoué (il fait mine de démarrer, et aboutit à un fail), sans doute lié au NAT.
Autres clients
- SàT (Salut à Toi) : une constellation de clients, expérimentation technique au premier plan, esthétique au second plan. Voir paquets Debian : sat-xmpp-jp et sat-xmpp-primitivus.
- Pidgin : fait sans doute le job mais pas un client XMPP à part entière donc pas recommandé.
- Spark : client chaperonné par une entreprise, conçu pour répondre à des besoins d'entreprises et s'agencer avec le serveur Openfire. Dans le même genre, Cisco a aussi son client de messagerie propriétaire basé sur XMPP.
- Kaidan, affinitaire à KDE mais pas exclusivement, en construction, multi-plateformes
- JSXC, client web, disponible en version packagée intégrée à NextCloud.
- MonalIM, client Mac OS/iOS.
- ChatSecure, client Mac OS/iOS
- UWPX pour les fans de Windows 10.
- Yaxim : client Androïd léger.
- Chatty : apparu dans les dépots Debian, un projet porté par Purism pour son smartphone. Réutilise libpurple, et censé gérer XMPP et OMEMO. Peu d'infos outre cela.
- Movim : Client web, orienté réseau social.
- Coy.im : Client avancé, multiplateforme.
Serveur
Outils
- https://xmpp.net : tester les certificats SSL du serveur
- https://compliance.conversations.im : tester le niveau de compatibilité d'un service XMPP avec les standards recommandés pour l'appli Conversations
Logiciels
Prosody
Site : https://www.prosody.im
Prosody est un projet 100% communautaire, et activement maintenu. Il sert notamment de socle pour le projet Snikket.
- Assez simple à configurer (syntaxe en Lua) et documentation claire.
- En développement actif.
- Des modules activables (intégrés, ou communautaires) pour gérer certaines XEPs.
ejabberd
Site : https://ejabberd.im
ejabberd fait office de gros steak, du moins dans ses ambitions (modularité, clustering/passage à l'échelle). Il est chapeauté par l'entreprise ProcessOne, basée sur Paris.
- Assez simple à configurer (syntaxe en YAML) et documentation claire.
- Écrit en erlang
- Intègre un broker MQTT (petites communications entre hôtes reliées par IP, satisfait aux conditions de l'IoT mais pas que).
- Décliné en 2 versions : communautaire et business.
Openfire
Site : http://www.igniterealtime.org/projects/openfire/
Openfire, développé par la société Ignite Realtime, est un peu gourmand en ressources par rapport à prosody et ejabberd, mais offre une interface Web d'administration très riche qui peut s'avérer intéressante pour les personnes peu habituées à la ligne de commande.
- Très simple à administrer via la WebUI
- Les fonctionnalités sont plutôt pensées pour des besoin d'entreprise
- Écrit en Java
- De nombreux plugins
Metronome
Site : https://metronome.im
- Il s'agit d'un fork amical de Prosody
- N'est pas packagé dans Debian
- Documentation minimaliste
- Maintenu par une seule personne
Son usage par Yunohost Distribution linux dont l'objet est de faciliter la mise en place d'un serveur était motivé à l'époque pour faire tourner certains clients demandeurs (Movim/Jappix) gèrant la «persistance» pour Pubsub. Le projet aurait connu une periode creuse en 2017, mais semble avoir repris et maintenir un cap en 2020.
MongooseIM
Site : https://mongooseim.readthedocs.io
MongooseIM, écrit en erlang, est un fork d'ejabberd.
Quelles différences entre MangooseIM et ejabberd ? Citation et réponse officielle par là.
The main reason why I chose MongooseIM is that there is no "commercial edition". Things aren't really "held back" in the interest of selling another version. Also, MongooseIM provides unit tests which makes it much easier to modify if necessary. Another good reason would be that MongooseIM provides WebSocket support out of the box.
Autres logiciels serveur
- Liste non exhausive sur xmpp.org
- Sur Wikipedia EN : Comparison_of_XMPP_server_software
Instances
Il ne s'agit pas de proposer une liste exhaustive car il est difficile d'avoir connaissance de toutes les instances déployées. Si vous êtes administrateur d'une instance et qu'elle n'est pas encore recensée, n'hésitez pas à l'ajouter. L'usage de cette liste est à la discrétion de toutes les personnes y ayant accès. Nous ne garantissons pas la qualité du service fourni par les liens ci-dessous.
Chez les CHATONS
- JabberFR : https://jabberfr.org/
- Chapril : https://www.chapril.org/XMPP
- Bastet : https://bastet.parinux.org
- Automario : https://www.automario.eu/xmpp/
Chapril
Test de compatibilité des XEPs importantes pour Conversations : Ejabberd : 100%
JabberFR / Jabber.fr
Test de compatibilité des XEPs importantes pour Conversations : Prosody hg:8a29e7206917 :95%
Les salons de ce serveur disposent d'une fonction d'archivage (désactivable). Par défaut, 20 lignes de l'historique sont conservées.
Ailleurs
De nombreux serveurs ouverts à l'inscription sont recensés et notés sur XMPP Compliance Tester. Pour aider à choisir un “bon” serveur, la page d'accueil affiche de façon aléatoire 5 serveurs XMPP ayant une note de 100%.
LQDN
Test de compatibilité des XEPs importantes pour Conversations : Prosody 0.11.5 : 61%
Les salons n'ont pas d'option d'archivage activable. Certains clients à l'ancienne parviennent toutefois à récupérer un bout de l'historique si celui-ci est activé sur le salon.
RiseUp.net
Test de compatibilité des XEPs importantes pour Conversations : ? : 47%
Il manque un compte pour rafraîchir les résultats du test. Absence de MAM.
Tutoriels d'installation du service
- Tutoriel pour installer un serveur XMPP sous Prosody et Debian 10 : https://www.automario.eu/doc/xmppserver/installation/