Réflexions sur les protocoles de communication

Article complet initialement écrit pour mon blog, sous licence Creative Commons BY-SA 3.0

Réflexion sur les protocoles propriétaires et Libres

Voilà quelques temps que j’avais envie d’aborder la problématique de la (ma ?) communication sur Internet. Par communication je veux parler des protocoles. On peut en citer quelques-uns à titre d’exemple : ICQ, IRC, MSN, XMPP, etc. Vous connaissez sans doute MSN, peut-être moins les autres. Ces protocoles définissent tous un moyen de communiquer avec des personnes (contacts), c’est-à-dire la manière dont est envoyé les messages.

logo MSN

À une certaine époque, tous mes contacts étaient sur MSN. La question à la mode c’était « Tu peux me filer ton adresse MSN ? » (je vous parle d’une époque que les moins de 12 ans ne peuvent pas connaître). Au début j’étais plutôt réfractaire, je trouvais le programme lourd, pas pratique… puis surtout je n’avais pas vraiment besoin de communiquer via Internet : je trouvais que ça faisait gadget… Puis je m’y suis habitué, j’ai pris goût à cette communication numérique. Bref, tout allait pour le mieux dans le meilleur des mondes.
Un beau jour, j’ai reçu un mail : « Monsieur Bidochon est sur Facebook, rejoignez-le, retrouvez vos amis, et communiquez avec eux » (oui, le contenu n’était pas exactement le même, c’est un résumé). Ma première réaction a été « Mais j’ai déjà MSN pour discuter avec eux ! 😮 « . Et je n’avais pas tort, MSN me convenait parfaitement. Ceci dit, tout le monde n’a pas dû réagir comme moi vu que les mails d’invitation se sont multipliés. Et j’ai cédé. J’y ai jeté un coup d’oeil. Le temps a fait que je m’y suis habitué, tous les contacts que j’avais sur MSN se sont retrouvés sur Facebook, et je pouvais communiquer avec eux, comme avant.

Entre temps, j’ai découvert et j’ai pris goût à l’informatique, et notamment à tout ce qui a trait à l’esprit du Libre. Je ne m’étendrai pas ici sur ce qu’est un logiciel Libre, ni sur la philosophie / éthique sous-jacente. Mais l’idée globale est de redonner aux utilisateurs finaux (vous) le « pouvoir » sur les logiciels que vous utilisez.
Un logiciel Libre s’oppose à un logiciel propriétaire (ou privateur) dans le sens où personne n’en a réellement la possession… ou plutôt, tout le monde le possède. Un logiciel propriétaire est possédé uniquement par une personne / entreprise. Cette personne a en quelque sorte droit de vie ou de mort sur son logiciel. Si vous utilisez Windows, Microsoft a la propriété de votre système d’exploitation. Il a plus ou moins le droit de vous dire quoi faire sur votre ordinateur (et le cas est encore plus flagrant pour Apple). Mais arrêtons le troll ici, et extrapolons ces notions aux protocoles.
Microsoft est propriétaire de MSN. Facebook, Inc. est propriétaire de Facebook. Si ces deux entreprises décident du jour au lendemain de fermer leur service, ils le peuvent. Et personne n’y pourra rien. Cela s’explique par le fait que tout est fermé et centralisé chez eux.
« Mais c’est terrible ! 😮 Comment faire pour s’en prémunir ? » me direz-vous (ou pas). Premièrement, MSN et Facebook ne sont pas prêts d’être fermés, rassurez-vous. Deuxièmement, il existe des alternatives simples et presque tout aussi performantes, basées sur une notion de décentralisation (si un morceau tombe, le reste fonctionnera toujours). J’en détaillerai une seule ici : XMPP.

logo de XMPPXMPP est un protocole de communication Libre. Les spécifications sont détaillées et ouvertes au public. Cela signifie que tout le monde peut s’en emparer et créer un logiciel de messagerie basé sur ce protocole. Mais cela signifie aussi que tout le monde peut proposer des améliorations / extensions (que nous appellerons XEP). Ainsi, le protocole XMPP de base permet de s’échanger des messages textuels. Une certaine XEP quant à elle s’occupe de gérer la communication par webcam (appelons-la Jingle). Une autre va s’occuper de gérer un flux de micro-blogging (appelons-la PubSub). XMPP peut presque tout faire, il suffit de le spécifier, et de l’implémenter sous forme de code informatique.
Ainsi, ce protocole est tout à fait au niveau de MSN en terme de fonctionnalités. Pour ce qui est du réseautage social, des projets sont en marche. Nommons deux projets que je trouve intéressants / prometteurs (et surtout français, cocorico !) : Movim et Salut à Toi.
XMPP serait-il l’outil idéal pour communiquer sur Internet ? J’ai envie de dire oui, les fonctionnalités sont là. Petits exemples de l’intérêt que l’on peut porter à ce protocole ? Google Talk et le chat de Facebook sont basés sur XMPP (une version propriétaire néanmoins pour Facebook). Microsoft a ajouté dernièrement une compatibilité XMPP pour MSN. Skype utilise aussi ce protocole. Bref, tout un tas d’entreprises ont compris l’intérêt et saisi la puissance de celui-ci, mais l’ont détourné dans certains cas.

Les protocoles propriétaires ne passeront pas

Je disais donc que j’avais retrouvé sur Facebook quasiment tous les contacts que j’avais sur MSN. À mon sens, Facebook a tué MSN. Et après un rapide sondage beaucoup de mes contacts semblent dire la même chose (ce « sondage » vaut ce qu’il vaut sachant que je l’ai fait sur Facebook même). Tout le monde semble garder un compte MSN, mais personne n’y parle, donc, ne l’utilise.

Le plus drôle là-dedans ? Je lisais un article de Ploum qui disait

Lorsqu’on parle de l’époque, pas si ancienne, où seul ICQ existait et paraissait révolutionnaire, on passe pour un vieux con, ce que je suis sans doute devenu. Rendez-vous compte, c’était il y’a 5 ans, autant dire 5 siècles, à l’époque des dinosaures. Et puis est arrivé MSN, je m’en souviens encore très bien, avec un produit techniquement bien inférieur […]. Résultat : quelques années plus tard, on ne parle plus que de MSN.

C’était en 2004… 5 ans plus tard Facebook commençait à apparaître sur toutes les bouches. MSN déclinait.

Tout ça pour dire qu’en informatique, rien n’est durable. Surtout pas ce qui est propriétaire. Un logiciel propriétaire essaye d’enfermer l’utilisateur dans un carcan. Il lui impose des contraintes qui ne lui sont pas nécessaires / utiles, tout ça car l’entreprise doit faire du profit (ce que je ne critique pas en soit).
L’avantage qu’a le Libre bien souvent est qu’il ne cherche pas à faire de l’argent. Bien souvent, c’est une association à but non lucratif qui se tient derrière. Les coûts éventuels peuvent être alors amortis d’une façon ou d’une autre (dons, vente de « gadgets », etc.). De plus, le processus de fork permet de se libérer d’un carcan que pourrait imposer un développeur. L’orientation du projet ne vous plaît pas ? Alors prenez le code source, copiez-le, et adaptez-le à vos besoins / envies. Voyez comment ça marche, regardez du côté de Open/Libre Office, regardez les forks des distributions Gnu/Linux. Les exemples de forks sont légions.
Mais dans le propriétaire, cela est impossible de par la nature fermée des sources. Il n’y a pas moyen de se libérer des choix des développeurs.

J’aimerais que XMPP soit le futur des réseaux sociaux, ou tout autre protocole de communication Libre. Un HTTP de la communication, l’email du réseau social (vu dans l’antre du geek). Une norme qui s’impose, permettant une modularité complète, une ouverture totale. Tout cela est possible, tout cela pourrait déjà exister depuis plusieurs années, les outils sont en place. En attendant, des MSN, des Facebook, des Google+ et même des Diaspora* cherchent à réinventer la roue à chaque fois, demandant de l’énergie supplémentaire de leur part, et des autres développeurs qui s’alignent sur eux.

XMPP à tout faire

XMPP, de part son caractère extensible, est presque bon à tout faire. Le système de XEP offre des possibilités presque infinies. Je vais vous livrer ici quelques idées que j’ai eu, ou qui sont déjà dans les cartons de quelques projets.

Premier point à garder en mémoire. Pour toutes les idées que je vais émettre ci-dessous : un compte unique serait nécessaire et suffisant pour accéder à chacune des applications. Pas besoin de retenir de multiples identifiants de ce fait. Cela peut donc aussi être vu comme un problème de sécurité : si vous vous faites voler vos identifiants, tous vos comptes seront mis à nus ! D’où l’importance de choisir un mot de passe robuste et de passer par des serveurs sécurisés (en https).
Deuxième point à noter, les idées que je vais énoncer ici se basent sur des fonctionnalités qui existent déjà. Le travail est donc déjà à moitié fait. Sachant que les fonctionnalités principales que je retiens sont :

  • le système de messagerie instantanée incluant la gestion des contacts, l’échange de messages (entre deux utilisateurs ou dans un salon) et la gestion de la présence (présent, occupé, absent, déconnecté, etc.)
  • l’échange de fichiers
  • gestion de la vidéo / audio (Jingle)
  • gestion d’un profil (humeur, activité, géolocalisation, musique en cours d’écoute, nom, prénom, pseudo, site web, etc. la liste est longue)
  • le mécanisme de publication-souscription (PubSub) permettant de gérer (diffuser et stocker) des informations : articles, abonnements, marque-pages, notification d’évènements, etc.
  • les passerelles qui permettent de dialoguer avec des personnes utilisant d’autres protocoles. Par exemple, il existe une passerelle vers MSN, ce qui vous permet donc de dialoguer avec vos contacts MSN via votre compte XMPP. Il existe plusieurs passerelles pour différents type de protocoles comme IRC, Yahoo! Messenger, etc. Mais vous pouvez aussi grâce à elle, recevoir ou envoyer des sms, des e-mail ou des flux rss (en revanche, je n’ai jamais essayé tout ça)

Voyons donc les possibilités qu’offre XMPP.

Un réseau social

J’en ai déjà cité deux plus haut dans l’article : Movim et Salut à Toi. Mais il en existe quelques-uns en plus. Tous ces réseaux sont en cours de développement, mais ils sont déjà tous potentiellement compatibles les uns avec les autres. C’est à dire que vous êtes censé pouvoir, à partir d’un identifiant unique, pouvoir vous y connecter et retrouver toutes vos informations (messages, liste de contacts, etc.)
De plus, il devrait être possible techniquement de récupérer sa liste de contacts Facebook pour discuter avec eux.
Les posts et commentaires pourraient alors être gérés grâce à la XEP PubSub.

Une plate-forme de partage de musiques

… légales évidemment. Je ne vous cache pas que c’est l’idée qui m’intéresse la plus pour le moment et que j’ai vraiment pas mal d’idées sur le sujet. J’imagine un mix de Deezer / Spotify / Jamendo / Last.fm, basé principalement sur XMPP pour l’aspect communication et P2P pour le partage de fichier (en attendant d’en savoir plus sur l’échange de fichiers XMPP).
L’aspect Libre de la chose permettrait à n’importe qui de pouvoir créer un client de n’importe quel type pour écouter la musique. C’est d’ailleurs l’un des plus gros reproches que je fais à Deezer (qui n’existe que sous forme web) et Spotify (qui n’existe que sous forme logiciel de bureau).

XMPP et le travail collaboratif

À mon avis cette idée est déjà dans les cartons. On peut mettre là-dedans la visio-conférence, mais aussi la gestion de fichiers à plusieurs, la gestion d’un tableau blanc entre collaborateurs, facilitant ainsi le travail en commun (gestion d’un blog à plusieurs par exemple). On pourrait donc imaginer l’aspect vraiment professionnel de la chose en l’utilisant dans les entreprises, ou éducatif pour écrire un TP entre binôme par exemple.

XMPP dans les jeux-vidéos

Il y a deux idées ici. La première est évoquée dans cet article et celui-ci (qui sont d’ailleurs deux articles très intéressants à lire complètement). Il s’agit donc d’envoyer un message XMPP (par exemple dans un jeu d’échecs) disant à une pièce de bouger d’une case à une autre. Je crois que le réseau Salut à Toi a implémenté ceci pour un jeu de tarot, mais je ne sais pas exactement comment cela est fait.
Une deuxième idée est de permettre la discussion instantanée au sein des jeux. Prenez un MMORPG, le chat fait partie intégrante du jeu. Ajoutez à ça la possibilité de discuter en audio, la possibilité d’indiquer « Monsieur Bidochon est en train de jouer à MegaRPG3000« , la possibilité de continuer de discuter avec vos contacts qui sont hors du jeu, la gestion d’un profil pour les scores, etc. Les possibilités sont énormes !

Remplacer les systèmes lourds existant

Les flux RSS, vous connaissez ? Les mails ? Ce sont deux technologies qui pourraient surement être remplacées par XMPP. La XEP dont je parle tout le temps, PubSub, fait exactement ce que fait RSS, mais en mieux : ce n’est pas un logiciel client qui se connecte à un serveur pour vérifier que de nouveaux articles ont été publiés, c’est le serveur qui indique aux clients « attention, un nouvel article a été publié« . Pour les mails, je vois bien la chose un peu de la même manière : PubSub qui s’occuperait de les gérer et de vous indiquer que vous avez un nouveau message.

Je crois que j’ai fait à peu près le tour de ce que j’avais à dire sur XMPP. J’essayerai un de ces jours de me pencher plus sur l’aspect technique, mais ça demandera encore plus de boulot !

{1} Thought on “Réflexions sur les protocoles de communication

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>