Top ~10 solutions de messagerie instantanée : panoramas et analyse des protocoles (la dernière va vous surprendre)

Internet adore les yoyos technologiques, alternants l’enthousiasme d’un pionnier bricolant un produit attirant du monde, avec des clones, puis de la normalisation, qui seront adoptés par les suiveurs, et le contexte évoluant, nouveau produit, nouveau yoyo.
Dans cet article, nous vous présentons ces solutions. Okay, il n’y a pas 10 exemples et le dernier est moins surprenant qu’enthousiasmant. C’est le 1er avril il faut nous excuser pour le titre piège à clics.
Discuter
talk est plus vieux qu’UNIX, mais il traine encore sur les Linux et OS X contemporains, et permet à plusieurs utilisateurs d’une même machine de discuter ensemble.

talk

✅ 1 à 1

❌ groupe

❌ serveur

Plus tard, en 1988, apparaitra irc, pour discuter depuis des machines distantes, en se connectant à un serveur. Il existe des passerelles web comme Kiwiirc, et il vous faudra rapidement un bouncer comme ZNC pour ne pas perdre le fil des discussions.

irc

✅ 1 à 1

✅ groupe

✅ serveur

✅ commandes

❌ authentification

❌ présence

❌ hors ligne

Pour accompagner la démocratisation d’Internet et l’arrivée fracassante du web, icq est apparu en 1996. Premier arrivée d’une longue lignée de service de tchat propriétaire et exclusif, avec des vagues successives, avec parfois des rachats, mais toujours une grosse fascination pour isoler les communautés entre elles.

icq

✅ 1 à 1

✅ groupe

✅ serveur

✅ présence

✅ hors ligne

✅ écrit…

❌ protocole public

❌ passerelles

❌ web

Le Minitel, les SMS et les pagers, ça ne compte pas : ce n’est pas Internet, mais clairement, ils ont servi d’inspiration pour la suite.
Normaliser les protocoles
Une première tentative de rapprochement des réseaux se fait avec des clients multi-protocoles, se basant par exemple sur libpurple.
Louable effort permettant de limiter le nombre de logiciels à lancer pour discuter avec des personnes dispersées sur différents réseaux, ça ne résout en rien les groupes de discussions, et pas grand-chose pour le chiffrage de bout en bout.
Pour résoudre le problème d’interopérabilité entre différents services, bah, il suffit d’écrire un nouveau protocole qui fait mieux que tout le monde, et de proposer des passerelles vers les vieux services.
XMPP
XMPP proposa en 1998 d’écrire des tonnes de spécifications (les XEPs), pour faire mieux que tout ce qui existait actuellement. XMPP amène la notion de syndication, qui permet à un utilisateur sur un serveur de discuter avec un autre utilisateur sur un autre serveur, comme le propose le mail depuis toujours.
Collision de dates, XMPP rate l’arrivée du Web interactif, et surtout des smartphones.
Ils ont aussi raté l’arrivée des discussions chiffrées, des groupes de discussions, et de la fin de l’hégémonie du XML. Mais ils ont tout spécifié, tellement spécifiés qu’aucun client n’implémente suffisamment de fonctions parmi la pléthore de XEP, et c’est mission impossible pour trouver deux clients qui donnent envie, avec des fonctions qui se recoupent.
XMPP a des implémentations serveur correctes (le terrifiant Ejabberd ou le contemporain Prosody), mais les clients sont tous vieillissants, et le protocole n’est pas adapté aux connexions intermittentes des réseaux de téléphonie mobile.
XMPP a raté sa chance de devenir hégémonique, tout comme XHTML, XSLT, Atom et SOAP, mais ce n’est pas grave.
XMPP a un retour de visibilité avec WebRTC, qui a besoin d’établir des connexions entre utilisateurs en se gardant bien de préciser comment, et oui, XMPP est tout à fait adapté à ce genre d’usage. Jitsi, le boss de la visioconférence libre, s’appuie sur Prosody pour gérer les utilisateurs et les groupes de discussions, mais sans trop se soucier de la possibilité qu’un client autre que l’application web se connecte, ou même de la syndication de serveurs à serveurs.

xmpp

✅ 1 à 1

✅ groupe

✅ serveur

✅ présence

✅ hors ligne

✅ écrit…

❌ images/vidéos

❌ appel voix/vidéo

✅ protocole public

✅ passerelles

✅ web

✅ syndication de serveurs

❌ utilisateurs

❌ chiffrage bout en bout

❌ adapté smartphone

La discussion d’entreprise
Slack a un peu surpris tout le monde, en proposant un tchat web, en ciblant les entreprises. Techniquement, ça ne fait que reprendre la notion des forums, mais avec plus de temps réel, une vraie UX, des CSS décentes.
Slack est conçu pour fonctionner dans un navigateur web (pas de soucis de logiciel à déployer et mettre à jour), avec du texte, mais en reprenant la notion de commandes d’irc (avec des lignes du type /command)
Slack propose un client lourd, qui est un peu ce que l’on peut faire de pire avec Electron. 2Go de RAM pour échanger du texte et des smileys, ce n’est pas raisonnable.
Slack est devenu un standard de fait, et permet au sein d’une entreprise (avec confidentialité et horaires) d’avoir des discussions en ligne.
Mattermost
Il existe un clone de qualité, Mattermost, qui reprends verbatim le même système de webhook que Slack, pour qu’une application puisse simplement envoyer des messages sur un chan.
On échappe au client lourd, mais il y a un client smartphone, et même un client curse, en mode texte, en haskell.
Mattermost propose une API REST complète, mais n’a pas vocation à être intégré dans un client multiplateforme, ni à faire partie d’une syndication.
Mattermost évolue maintenant pour proposer des workflows, comme les sondages, la résolution collaborative d’incidents ou les réunions standup.
Mattermost propose une intégration aux outils de visioconférence comme Jitsi.
Les tchats d’entreprise ne sont pas conçus pour chiffrer les discussions entre personnes, et ont même tendance à tout indexer, avec des volontés claires d’indiscrétion pour Slack. La connexion TLS protège juste des indiscrets de l’extérieur.

Mattermost

✅ 1 à 1

✅ groupe

✅ serveur

✅ présence

✅ hors ligne

✅ écrit…

✅ images/vidéos

✅ protocole public

✅ passerelles

✅ web

✅ commandes

❌ chiffrage bout en bout

❌ adapté smartphone

Discuter dans des groupes chiffrés
Whatsapp et Signal ont démontré qu’une application de discussions instantanées conçue initialement pour les smartphones, axée sur les groupes, les images, les vidéos et surtout du chiffrage de bout en bout, avait une efficacité redoutable.
Conçu pour smartphone, ces applications ont besoin de votre 06, et les versions desktop sont considérées comme secondaires et il faut les apairer avec son smartphone.

Signal

✅ 1 à 1

✅ groupe

✅ serveur

✅ présence

✅ hors ligne

✅ écrit…

✅ images/vidéos

✅ appel voix/vidéo

❌ protocole public

❌ passerelles

❌ web

❌ syndication de serveurs

✅ chiffrage bout en bout

✅ utilisateurs

✅ adapté smartphone

Sur un smartphone, pour ne pas manger toute la batterie, il ne faut pas qu’une application gère un flot descendant intermittent. Recevoir des évènements ("vous avez un nouveau message") qui vont arriver de temps en temps, n’importe quand, est le pire usage possible du réseau pour un smartphone. C’est pour ça que le smartphone va le gérer à votre place, en prenant en compte les stratégies de mise en veille de certains éléments du téléphone, ou des spécificités des protocoles utilisés en téléphonie. Ce système de notification s’appelle APNS chez iOS, et Notifications chez Android.
Avec les notifications natives, il est donc possible d’avoir une application qui ne mange pas toutes les piles, ce qui est un prérequis.
L’autre point important pour du tchat moderne est le chiffrage de bout en bout, pour rendre impossible la censure. Le chiffrage entre deux clients est maitrisé depuis longtemps, mais pour les groupes, il faut un truc un peu plus moderne : le double ratchet de Signal.
Telegram, clone russe de Signal, reprends les fonctions de son concurrent, en apportant un soin pour avoir un vrai client desktop, sans passer par Electron, et en proposant une API complète avec widget web, bot et de quoi coder un client.
Matrix
What is the matrix?

Matrix se positionne clairement comme un remplaçant libre de Whatsapp et Signal, avec de la syndication de serveur, et le smartphone comme première cible. La voip, grace à webrtc, en tête à tête fait partie des fonctions de base.

Pour faire ça proprement, Matrix a plein de specs.
Cette stratégie reprends celle de XMPP, mais sans le XML, et en gardant HTTP.
Matrix.org fournit un serveur en Python, Synapse qui est l’implémentation de référence, mais ils en ont aussi un second, en Golang Dendrite. Matrix.org fournit plein de SDK, mais pas de client de référence, pour ça, il faut aller voir Element.
Profitant de son statut de standard, de l’API REST et des SDKs, il commence à y avoir des projets qui intègre le protocole Matrix, comme Thunderbird ou même l’état français avec Tchap, qui est un fork de Riot, le prédécesseur de Element.
Oui, il existe un plugin weechat pour profiter de matrix dans votre terminal.
Pour les passerelles, Matrix est très agressif en proposant plein de bridges ciblant autant des produits propriétaires que libre.

Matrix

✅ 1 à 1

✅ groupe

✅ serveur

✅ présence

✅ hors ligne

✅ écrit…

✅ images/vidéos

✅ appel voix/vidéo

✅ protocole public

✅ passerelles

✅ web

✅ commandes

✅ syndication de serveurs

✅ chiffrage bout en bout

✅ adapté smartphone

❌ utilisateurs

Internet gagne toujours à suivre des normes pour avoir des outils interopérables, et laisser voguer la créativité des développeurs, plutôt que de subir des coups de GAFA sur le coin de la tête.
Matrix part sur de bonnes bases, mais, stable depuis 2 ans, avec seulement deux implémentations du serveur, il n’a pas encore subi le baptême du feu.
À suivre, donc.
Aller à la source
Author: Bearstech