close
  • Li chevron_right

    XMPP en 2021

    pubsub.eckmul.net / linuxfr · Saturday, 9 January - 18:36 · 12 minutes

<h2 class="sommaire">Sommaire</h2> <ul class="toc"> <li> <ul> <li><a href="#toc-multim%C3%A9dia">Multimédia</a></li> <li><a href="#toc-le-multi-plateformes">Le multi-plateformes</a></li> <li><a href="#toc-chiffrement">Chiffrement</a></li> <li><a href="#toc-marketing">Marketing</a></li> <li><a href="#toc-attractivit%C3%A9">Attractivité</a></li> <li><a href="#toc-c%C3%B4t%C3%A9-administration">Côté administration</a></li> <li><a href="#toc-passerelles">Passerelles</a></li> <li><a href="#toc-%C3%80-venir">À venir</a></li> </ul> </li> </ul> <p>Salut nal,</p> <p>Je profite de l’occasion de <a href="//linuxfr.org/users/groumph/journaux/whatsapp-et-facebook-quels-sont-mes-droits">Whatsapp qui va bientôt tout partager à Facebook</a> pour écrire ce petit journal sur XMPP, l’état des lieux, et ce qui est à venir pour 2021.</p> <p>Tout d’abord je me présente, j’utilise XMPP depuis plus de 10 ans, je développe des trucs liés à XMPP depuis environ 10 ans (je suis notamment un des développeurs de <a href="https://poez.io">Poezio</a> et de <a href="https://slixmpp.readthedocs.org">Slixmpp</a>), et je suis également un des administrateurs du serveur <a href="https://jabberfr.org">JabberFR</a>.</p> <h3 id="toc-multimédia">Multimédia</h3> <p>Ça fait un bon paquet d’années qu’on peut partager des fichiers, quelques-unes de moins pour que ça marche à tous les coups (<a href="https://xmpp.org/extensions/xep-0363.html">XEP-0363</a>: Envoi de fichiers via HTTP). C’est maintenant pris en charge dans virtuellement tous les clients (non, Pidgin ne compte pas).</p> <p>Un peu de la même façon, on peut théoriquement passer des appels audio/vidéo via XMPP depuis belle lurette, mais en pratique ça n’aboutissait pas trop, la faute à beaucoup de facteurs différents. Et puis depuis le milieu de l’année dernière environ, on peut passer des appels audio et vidéo depuis l’application Conversations, ainsi que Movim ou Siskin.</p> <p>Les discussion en audio/vidéo font d’ailleurs partie des <a href="https://xmpp.org/extensions/xep-0443.html">Compliance Suites 2021 (XEP-0443)</a> qui servent de feuille de route aux développeurs pour savoir quoi implémenter.</p> <p>À noter que la solution libre de visioconférence <a href="https://meet.jit.si">Jitsi Meet</a> se base aussi sur XMPP, mais n’est pour l’instant pas compatible avec d’autres clients (une conversation multimédia à plus de 2 personnes est toujours complexe à mettre en place).</p> <h3 id="toc-le-multi-plateformes">Le multi-plateformes</h3> <p>Des clients prenant en charge toutes les fonctionnalités majeures sont disponibles sur chaque plate-forme. L’exception notable est iOS, qui empêche toute utilisation en arrière-plan de TCP, ce qui n’incite pas tellement les développeurs à viser cette plate-forme pour un client XMPP. Mais les choses bougent, notamment avec les clients <a href="https://monal.im/">Monal</a> ou <a href="https://siskin.im/">Siskin</a> qui, s’ils n’ont pas atteint la maturité de <a href="https://conversations.im">Conversations</a>, reçoivent un développement actif.</p> <p>Si je devais recommander des clients par plate-forme majeure :</p> <ul> <li>Linux : <a href="https://dino.im">Dino</a>, ou <a href="https://gajim.org">Gajim</a> </li> <li>Windows : <a href="https://gajim.org">Gajim</a> </li> <li>Android : <a href="https://conversations.im">Conversations</a> </li> <li>iOS : <a href="https://siskin.im">Siskin</a>, Snikket iOS (voir plus bas) recherrche par ailleurs des beta-testeurs capables de fournir des rapports de bug en anglais</li> <li>Mac OS : <a href="https://beagle.im">Beagle IM</a> </li> <li>Web (mais aussi n’importe quelle plateforme) : <a href="https://movim.eu">Movim</a> </li> <li>Interface terminal : <a href="https://poez.io">Poezio</a> (un certain conflit d’intérêts sur cette dernière entrée)</li> </ul> <p>À titre personnel, j’utilise quasi exclusivement Poezio et Conversations, et de temps en temps Dino.</p> <h3 id="toc-chiffrement">Chiffrement</h3> <p>Depuis 2014, année où la communauté <a href="https://github.com/stpeter/manifesto/blob/master/manifesto.txt">a décidé</a> de se débarasser de GMail qui empêchait de forcer l’utilisation de TLS en toutes circonstances, toutes les interactions XMPP sont chiffrées point-à-point (c’est-à-dire que la communication est chiffrée via TLS entre tous les acteurs du réseau).</p> <p>Très tôt, XMPP a mis en place une forme de chiffrement bout-en-bout (communément appelé E2EE), par exemple avec la <a href="https://xmpp.org/extensions/xep-0027.html">XEP-0027</a> qui utilise OpenPGP (attention, cette extension est actuellement obsolète, c’était juste un exemple). <a href="https://otr.cypherpunks.ca/">OTR</a>, étant indépendant de la couche de transport, a toujours pu fonctionner également.</p> <p>Mais depuis une petite quinzaine d’années, les choses évoluent (par exemple avec l’existence de smartphones), et dans ce contexte OTR dans sa version 3 n’était plus suffisant, tout comme l’extension définissant l’utilisation de GPG. Sont donc arrivées les extensions <a href="https://xmpp.org/extensions/xep-0384.html">XEP-0384</a>: OMEMO, et <a href="https://xmpp.org/extensions/xep-0374.html">XEP-0374</a>: OpenPGP pour la messagerie XMPP (OX).</p> <p>La grande majorité des clients activement développés implémentent désormais OMEMO, et certains implémentent également OX (comme Gajim). Ces deux modes de chiffrement n’ont pas du tout les mêmes propriétés cryptographiques, et sont donc destinées à des publics différents.</p> <h3 id="toc-marketing">Marketing</h3> <p>XMPP (pour eXtensible Messaging and Presence Protocol) n’est pas tout à fait agréable à entendre pour les non-habitués, c’est pourquoi il existe une initiative menée par plusieurs personnes de la communauté, appelée <a href="https://snikket.org/">Snikket</a>. Le but de Snikket est de mettre « sous le tapis » toute mention à XMPP et de mettre en avant la fédération, en incitant à monter des serveurs nécessitant des invitations, mais fédérés, pour une famille ou une communauté. Ils proposent également un service d’hébergement (payant) de serveurs Snikket, actuellement en beta limitée.</p> <p>Le but final (l’initiative est jeune) étant de fournir à la fois un package clef en main aux administrateurs pour pouvoir installer et gérer leur serveur XMPP (basé sur <a href="https://prosody.im">Prosody</a>) et les services qui en dépendant, mais également des applications unifiées pour toutes les plate-formes, ce qui manque cruellement aujourd’hui. L’application Android est déjà disponible et se base logiquement sur Conversations, l’application iOS est prévue pour cette année et <a href="https://github.com/snikket-im/snikket-ios">se basera sur Siskin</a>.</p> <p>Le projet Snikket a notamment réussi à obtenir une donation pour financer le développement du chiffrement de groupes de discussions dans Siskin.</p> <p>P. S. : Si vous avez un domaine et que vous voulez un service XMPP dessus sans pour autant le faire tourner vous-mêmes, à <a href="https://jabberfr.org/h%C3%A9bergement/">JabberFR</a> on propose également ce genre de services, il nous suffit d’une demande et d’un CNAME qui pointe vers nous (mais merci de nous prévenir si vous décidez de le retirer, parce que ça fait foirer nos renouvellements letsencrypt après).</p> <h3 id="toc-attractivité">Attractivité</h3> <p>À cause de l’<a href="https://fr.wikipedia.org/wiki/Effet_de_r%C3%A9seau">effet de réseau</a>, il est toujours difficile de faire venir de nouveaux utilisateurs sur des réseaux alternatifs aux monopoles des GAFAM. Une des façons de simplifier la transition pour les utilisateurs qui n’ont pas un bagage technique suffisant pour pouvoir choisir un nom d’utilisateur, un mot de passe, ou un serveur (pour un réseau fédéré), est de leur proposer une première expérience qui ressemble à ce qu’ils connaissent en termes d’inscription.</p> <p><a href="https://gultsch.de/">Daniel Gultsch</a>, l’auteur de Conversations, a donc développé <a href="https://quicksy.im">Quicksy</a>, un fork de Conversations qui ne propose plus le traditionnel choix "nom d’utilisateur/serveur/mot de passe". À la place il crée un compte sur <a href="https://quicksy.im">quicksy.im</a> en utilisant le numéro de téléphone et une validation SMS.</p> <p>Contrairement à Conversations, Quicksy est gratuit sur le Play Store, et le modèle de rémunération se base sur l’annuaire interne de quicksy.im. En effet, une des idées de Quicksy est d’utiliser la liste de contacts pour découvrir d’autres utilisateurs de Quicksy (ou XMPP) et de les ajouter à la liste de contacts XMPP. Si on a un compte XMPP pré-existant et qu’on veut faire passer ses proches à Quicksy, il faut donc soit payer pour lier son numéro de téléphone à son adresse dans l’annuaire, soit faire soi-même les demandes d’ajout de contact. Bien entendu, les utilisateurs de Quicksy eux-mêmes n’ont pas besoin de payer pour être ajoutés à l’annuaire.</p> <p>Quicksy étant un fork de Conversations maintenu par le même auteur, il a exactement les mêmes fonctionnalités, comme les appels audio/vidéo, le chiffrement OMEMO ou le partage de fichiers.</p> <h3 id="toc-côté-administration">Côté administration</h3> <p>Historiquement, j’ai utilisé <a href="https://www.ejabberd.im/">ejabberd</a> quelques années avant de passer à Prosody pour des raisons de mémoire vive limitée, et depuis ça tourne. Rien à dire, l’entretien est vraiment minime, mais il faut penser à se tenir informé des nouveautés, par exemple la visio requiert en général un <a href="https://prosody.im/doc/coturn">serveur STUN/TURN</a>, certaines extensions modernes ont besoin de nouveaux plugins, etc…</p> <p>À noter les modules "<a href="https://modules.prosody.im/type_measure.html">mod_measure_</a>" pour Prosody qui ne sont pas si vieux qui permettent de facilement remonter des informations à <a href="https://prometheus.io">Prometheus</a>, comme on le fait sur <a href="https://stats.jabberfr.org">JabberFR</a>.</p> <h3 id="toc-passerelles">Passerelles</h3> <p>J’utilise une seule passerelle, <a href="https://biboumi.louiz.org/">Biboumi</a>, afin de me connecter à IRC de façon entièrement transparente, avec un bouncer et un historique intégré à mon client XMPP (avec la <a href="https://xmpp.org/extensions/xep-0313.html">XEP-0313</a>: Gestion de l’archivage des messages). La dernière version a rajouté la prise en charge de SASL, qui était la seule chose qui me pénalisait un peu.</p> <p>Je n’en utilise pas d’autres, mais je sais que beaucoup fonctionnent via <a href="https://spectrum.im/">Spectrum</a>, et j’ai connaissance de <a href="https://git.theta.eu.org/eta/whatsxmpp">celle-ci</a> pour Whatsapp.</p> <h3 id="toc-À-venir">À venir</h3> <ul> <li>Gajim vient de sortir une version <a href="https://gajim.org/fr/post/2021-01-01-gajim-1.3.0-beta-released/">1.3 beta</a> avec un nombre significatif d’amélioration pour l’expérience utilisateur et la stabilité</li> <li>Beaucoup d’extensions intéressantes ont été publiées l’an dernier et sont en cours d’implémentation ou déjà implémentées dans des clients (lire à ce sujet les excellentes dépêches de la Lettre d’informations XMPP mensuelle) : <ul> <li>Les stickers</li> <li>Les réactions (emojis) à des messages</li> <li>L’effacement de messages qu’on envoie</li> <li>La modération avec suppression de messages (sur des groupes de discussion)</li> <li>Une interface simplifiée pour les interactions avec les bots</li> </ul> </li> </ul> <p>Et bien d’autres choses encore, certaines un peu trop techniques qui rendraient ce journal encore plus long, d’autres plus mineures, mais on peut en discuter dans les commentaires bien sûr !</p> <div><a href="https://linuxfr.org/users/mathieui/journaux/xmpp-en-2021.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122879/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/mathieui/journaux/xmpp-en-2021#comments">ouvrir dans le navigateur</a> </p>