Parlons XMPP - épisode 1 - les bases

goffi 9 years ago technique planet-libre parlons_xmpp jabber-xmpp Libre

Salut à Vous,
 
Bon, comme je trouve vraiment dommage que XMPP soit mal connu ou compris, j'ai décidé de commencer une série d'articles pour vous expliquer ce que c'est.
 
Ces articles sont destinés à un public averti, mais pas forcément de développeurs, et j'espère qu'il vous aidera à comprendre les intérêts de ce protocole et à mieux utiliser vos logiciels.
 
Étant développeur du projet Salut à Toi, je donnerai probablement souvent des exemples avec.
 
Donc commençons par les bases.
 
XMPP c'est quoi ? C'est un protocole de messagerie et de présence standard, et extensible (XMPP signifie « eXtensible Message and Presence Protocol », soit « protocole de présence et messagerie extensible »), c'est à dire qu'il est documenté et utilisé comme une référence (ici validée par un organisme de standardisation : l'IETF). Ceci permet à tous les logiciels qui l'utilisent de parler la même langue, et d'être interopérables. Il s'agit d'un protocole libre, c'est à dire que vous pouvez obtenir la documentation et l'utiliser gratuitement, sans restriction légale ou technique, et que vous pouvez l'améliorer ou le modifier (mais si vous déviez et que vous ne proposez pas vos modifications, vous risquez de perdre la compatibilité avec les autres logiciels).
 
XMPP est décentralisé et fédéré, c'est à dire que vous pouvez avoir des serveurs un peu partout, ils pourront (s'ils ne l'interdisent pas explicitement dans leur configuration) communiquer entre eux.
 
C'est un protocole populaire, de nombreux logiciels permettent de l'utiliser : en serveurs on peut citer Prosody, Ejabberd, Open Fire, Tigase, Mongoose.im, Metronome, etc. En client: Gajim, Poezio, Pidgin, Psi, Swift, Jappix, Movim, et bien sûr Libervia/Salut à Toi (je vous laisse chercher les sites officiels vous-même). Une liste plus complète (serveurs, clients et bibliothèques) est disponible ici: https://xmpp.org/xmpp-software/.
 
Si vous ne voulez pas installer un serveur chez vous, de nombreux serveurs publics sont disponibles: en France on peut citer ceux de l'APINC (jabber.fr, im.apinc.org, etc), de La quadrature de Net, etc. Une petite liste (la page n'est pas à jour, n'hésitez pas à contribuer !) est disponible ici en français, sinon vous pouvez regarder sur https://xmpp.net/directory.php ou http://www.jabberes.org/servers/ (oui il y en a beaucoup !). Mais je vous recommande très fortement d'installer votre propre serveur ou de vous approcher d'une association locale avec qui vous pouvez communiquer facilement : d'une part si vous installez vous-même, ça vous permet de mieux maîtriser vos données, et d'autre part si vous voulez une fonctionnalité en particulier, il vaut mieux pouvoir demander facilement aux administrateurs une mise à jour.
 
Bon maintenant qu'on sait tout ça, essayons de créer un compte.
 
Une fois un serveur installé ou un serveur public choisi, vous pouvez créer un compte. Vous aurez alors une adresse, un « jid » (pour Jabber ID, « Jabber » est l'ancien nom du procole, ce nom appartient désormais à une société privée, il est juste gardé ici pour des raisons historiques).
 
Cette adresse est de la forme nom_local@domaine.tld/ressource, ou en forme canonique (ce qu'on appelle le « bare jid ») nom_local@domaine.ext. Par exemple la mienne est goffi@jabber.fr . Celà ne vous rappelle rien ? Et oui ça ressemble beaucoup aux adresses de courrier électronique !
 
Mais alors c'est quoi la ressource ? La ressource est liée au logiciel client que vous utilisez pour vous connecter : XMPP a été pensé dès l'origine pour permettre à plusieurs clients de se connecter en même temps (il y a 10 ans, peu de protocoles de messagerie le permettaient, et se reconnecter ailleurs signifiait souvent la déconnexion du premier client), et cette ressource permet de les identifier. Autrement dit, vous n'avez une ressource que quand vous êtes connectés, et elle est différente pour chaque client que vous utilisez : si je me connecte avec Libervia, Gajim et Movim, j'aurais 3 ressources différentes.
 
Il y a eu plusieurs écoles pour nommer la ressource, parfois on s'en servait pour indiquer le lieu de connexion (« maison », « bureau »), les clients mettaient souvent leur nom par défaut (« gajim », « psi »). Aujourd'hui, il est admis qu'il vaut mieux avoir une ressource non prédictible, car sinon quelqu'un peut savoir si vous êtes connectés ou pas (même si vous ne souhaitez pas que ça se sache) en faisant une requête à cette ressource. Il vaut donc mieux laisser le serveur choisir la ressource pour nous.
 
Enfin, votre ressource est associée à une priorité: elle permet de déterminer, si plusieurs ressources sont connectées, laquelle va recevoir le message. Mais nous y reviendrons plus tard.
 
Dans le prochain épisode je vous parlerai des extensions et de la découverte de fonctionnalités.
 
Voilà, dites-moi si vous êtes intéressés par cette série, si cela vous semble trop technique, ou si vous avez des remarques ou des corrections à faire. Je publie la série en même temps sur DLFP, et le tout est sous licence CC By-SA, donc n'hésitez pas à réutiliser, diffuser ou modifier !

e-Jim 9 years ago

Intéressant comme série. Surtout sachant que ça vient de quelqu'un qui maîtrise le sujet sur le bout des doigts.
Je n'ai pas appris grand-chose cette fois-ci, mais j'attends impatiemment la suite...

godu 9 years ago

Ce sujet m'intéresse énormément, mais j'ai jamais eu l'occasion de développer avec. J'espère que la suite gagnera en profondeur.
Belle initiative.


author website

Stephanou 9 years ago

C'est très interessant, à titre personnel j'ai commencé à m'interesser à Jabber il y a peu en faisant des recherches sur d'éventuels subsituts à l'email.

Goffi 9 years ago

Oui sur les premières parties j'explique les bases, ceux qui connaissent ne vont pas apprendre grand chose. N'hésitez pas à demander si y'a des sujets en particulier qui vous intéressent.

Stephanou: je pense que XMPP a tout ce qu'il faut pour remplacer l'e-mail, j'avais d'ailleurs écrit un billet à ce sujet il y a longtemps: http://www.goffi.org/post/2011/01/1...


author website

raleur 9 years ago

Très bon article de présentation, c'est juste dommage de devoir lire ça sur un bloc de 474px de large ...
(je sais que c'est pas la faute de l'auteur, mais Dotclear ...)

Philippe 9 years ago

J'ai toujours voulu en savoir un peu plus sur XMPP sans jamais prendre le temps de lire (trop de chose a faire)

Je vais suivre cette serie en esperant comprendre de quoi il s'agit. Merci d'avance

Goffi 9 years ago

raleur: (j'en suis un aussi t'inquiuètes ;)) au pire tu as le flux RSS, ou j'ai mis une version sur DLFP ==> http://linuxfr.org/users/goffi/jour... Je pourrais changer le thème de dotclear, mais là je vais bientôt passer mon blog sur Libervia, donc ça vaut pas le coup de passer du temps dessus.


author website

Pazns 9 years ago

Très intéressant !
J'ai hâte de lire la suite.

Charpy 9 years ago

Pareil, très intéressé! Parce que je n'ai jamais capté exactement ce qui est possible de faire avec.

Je maitrise bien IRC, par contre. Que peut-on faire en plus / en moins avec XMPP ?

On pourrait avoir une capture d'écran pour voir de quoi ca a l'air?

Oui, j'en demande beaucoup :x

Goffi 9 years ago

Charpy: je vais faire un article sur les discussions de groupe (à la IRC) pour expliquer les différence, je pense l'épisode 4 ou 5.

Pour les captures, tu peux chercher des images sur les noms de clients que j'ai cité, ou regarder le notre: http://salut-a-toi.org/screenshots....


author website