Rudiments de XMPP

Cette page répond aux questions les plus courantes que pourrait se poser une personne qui utilise XMPP pour la première fois.
Si vous ne trouvez pas ici la réponse à votre question, venez nous en parler sur le salon Chapril, nous compléterons éventuellement cette page.

Les usages courants

XMPP permet globalement les mêmes usages que les SMS, MMS, whatsapp.

Voici quelques exemples :
 je suis à l’heure au rendez-vous mais j’attends toujours : je lui envoie "T où ?"
 on fête l’anniversaire du petit dernier mais tante Ada ne pouvait pas être parmi nous : je fais une photo de groupe et je lui envoie
 on prépare à plusieurs une fête surprise pour les 40 ans de Dominique (qui évidemment ne se doute de rien) : je créé un salon privé sur lequel j’invite les quelques personnes qui sont de connivence pour organiser la surprise, discuter d’un cadeau commun, etc.
 je fais la connaissance d’un groupe de personnes qui organisent régulièrement des randonnées à vélo dans ma région : on échange nos identifiants XMPP respectifs pour garder le contact et éventuellement se revoir bientôt sur des vélos
 mamie habite à l’autre bout du monde, alors pour voir quand même grandir ses petits-enfants, elle passe un appel en visio de temps en temps

Vocabulaire

"Horreur, mon application XMPP utilise des termes que je ne comprends pas. Parfois des mots en anglais même ! Et ce ne sont pas les mêmes termes dans d’autres applications XMPP..."

Hé oui...
XMPP existe depuis 1999 et a beaucoup évolué depuis. Pendant tout ce temps, de nombreuses applications supportant XMPP ont été conçues par différentes personnes, à destinations de différentes plateformes, traduites par d’autres personnes encore... Cette ancienneté et cette diversité font qu’aujourd’hui le vocabulaire employé n’est pas vraiment homogène, même si des efforts sont faits pour harmoniser tout ça.

Bref, XMPP est une langue vivante :)

Donc selon que vous vous adresserez à un vieux de la vieille ou à une personne fraîchement arrivée dans la communauté XMPP, ce ne sont pas les mêmes termes qu’il faut employer pour se faire comprendre.
Voici un dictionnaire de survie faisant la correspondance entre l’argot des anciens et le jargon des d’jeuns.

Jabber / XMPP

À ses tout débuts, XMPP s’appelait Jabber. C’était un nom bien plus chouette et bien plus facile à prononcer, que beaucoup de personnes continuent d’employer. Le nom XMPP est arrivé lorsque le protocole a été normalisé par l’IETF, l’organisme qui normalise la plupart des protocoles qui font fonctionner Internet, notamment le protocole TCP/IP.

JID / JabberID / Identifiant Jabber / Identifiant XMPP / Adresse XMPP

Tous ces termes sont synonymes, mais "adresse XMPP" est peut-être l’appellation la plus intuitive, par analogie avec "adresse Email".

Si vous vous créez un compte chez le fournisseur trucmuche.net, vous aurez une adresse XMPP de la forme votrepseudo@trucmuche.net. C’est l’adresse que vous devrez alors communiquer à vos proches pour qu’il puissent vous joindre via XMPP.

Notez tout de même que les adresses XMPP ne sont pas réservées seulement aux comptes utilisateurs. Par exemple, chaque salon de discussion possède également sa propre adresse XMPP.
Et d’autres composants techniques peuvent avoir leur propre adresse XMPP également. Par exemple le fournisseur bidule.fr pourrait mettre en place une passerelle vers IRC, de sorte que les salons IRC seraient joignables à adresses XMPP de la forme #salon_irc@irc.bidule.fr.

Roster / Liste de contacts

C’est un peu l’équivalent d’un carnet d’adresse. C’est la liste des personnes avec lesquelles vous discutez souvent.
La différence avec un simple carnet d’adresse c’est que les personnes qui sont dans votre liste de contacts sont abonnées à votre présence, et à priori vous êtes abonné à leur présences (voir la notion de présence décrite plus loin).

Cela dit, vous pouvez très bien échanger des messages avec une personne qui n’est pas dans votre liste de contacts, du moment que vous connaissez son identifiant XMPP.

Sur les applications "desktop", cette liste de contacts est en général affichée de façon omniprésente, et chaque contact est affublé d’une icône indiquant son statut actuel (connecté, occupé, ne pas déranger, ...).
En revanche, dans les applications modernes, notamment sur mobile, la liste de contacts n’est pas affichée d’emblée. Probablement parce que ça correspond aux nouveaux usages qu’on retrouve dans les solutions de messagerie instantanée actuelles.

Statut / Status / Présence / S’abonner à la présence de quelqu’un

La notion de présence est au cœur du protocole XMPP depuis le début. D’ailleurs pour information (ou pour rappel) XMPP signifie eXtensible Messaging and Presence Protocol.

Lorsqu’on ajoute une personne à sa liste de contact, cette personne reçoit une demande d’autorisation pour vous "abonner à sa présence". De même, si cette personne accepte votre demande, vous verrez probablement arriver une demande d’autorisation en retour. Certaines applications XMPP acceptent automatiquement ces demandes donc il se peut que vous ne voyiez rien de particulier.

Aujourd’hui cette notion de présence est de moins en moins utile car de plus en plus de monde est connecté en permanence. Cette information pouvait être utile à l’époque où on n’allait sur Internet que de façon épisodique.

Donc pour ces raisons historiques certaines applications XMPP vous permettront de connaître l’état de vos correspondants ("En ligne", "Hors-ligne", "Absent", "Occupé", "Ne pas déranger"). Parfois même vos correspondants auront en plus un message d’état qui donne plus de précisions, par exemple "Ne pas déranger - je suis en réunion".

Comme on n’a pas forcément envie que n’importe qui puisse savoir quand on est en réunion ou au cinéma, seules les personnes qui sont abonnées à notre présence peuvent connaître notre statut actuel.
C’est pourquoi on n’ajoute généralement dans sa liste de contacts que des personnes qu’on connaît bien ou avec qui on échange souvent.

MUC / Salon de discussion / Canal / Channel / Chan / Groupe de discussion

Lorsqu’on a besoin de discuter avec plus d’une seule personne à la fois, on créé un salon de discussion et on invite les personnes concernées à le rejoindre. Cette fonctionnalité de discussion en groupe était originellement appelée MUC, pour Multi-User Chat, ou salon de discussion. Aujourd’hui on parle plutôt de canal ou de groupe de discussion.

Techniquement, lorsqu’on créé un salon de discussion, on peut régler de nombreux paramètres. En particulier les informations "visibles" : titre, description, langue parlée, etc. Mais aussi des paramètres concernant les permissions ou la confidentialité : salon réservé aux membres, salon caché ou bien listé publiquement, salon modéré ou non, etc.
Manipuler tous ces réglages n’est pas forcément chose aisée si on ne connaît pas leurs rôles respectifs et leurs conséquences. C’est pourquoi les applications modernes ne proposent pas de paramétrer finement ces réglages. Elles proposent plutôt de choisir un type de salon avec des paramétrages pré-établis :

 Canal : salon de discussion public
 Groupe : salon de discussion privé

Fournisseur / Hébergeur

Un compte XMPP est toujours associé à un serveur XMPP. La personne ou l’entité qui met ce serveur à disposition est parfois appelé fournisseur de service XMPP, ou tout simplement fournisseur ou encore hébergeur.

Petite parenthèse, ce fournisseur de service, ça peut très bien être vous-même. Du moment que vous avez une connexion Internet, un ordinateur, même un tout petit, allumé en permanence, et un nom de domaine. Renseignez-vous.

FAQ

Cette section est en état de construction perpétuel, comme toute bonne FAQ qui se respecte :)

Comment rejoindre un salon de discussion existant ?

Le plus simple est de demander à quelqu’un que vous connaissez et qui est déjà présent dans ce salon de vous y inviter. Vous recevrez alors une notification qu’il vous suffira d’accepter.

Si vous avez pas cette possibilité, alors vous devrez indiquer dans votre application l’identifiant du salon que vous souhaitez rejoindre (que ce soit un salon public ou privé). L’identifiant d’un salon est de la forme nom_du_salon@sous.domaine.tld.

Comment distinguer un identifiant utilisateur d’un identifiant de salon ?

Vous aurez remarqué que dans les deux cas, ça ressemble furieusement à une adresse email. À gauche du caractère @ c’est le nom court du compte utilisateur ou du salon, à droite c’est le nom de domaine qui héberge le compte utilisateur ou le salon.

Le nom de domaine pour un salon est forcément différent du nom de domaine pour un compte utilisateur. Et en général, le nom de domaine pour les salons est un sous-domaine de l’autre. Par exemple, un compte utilisateur dominique@machin.fr pourra créer un salon public nommé poterie@muc.machin.fr et y inviter tous les membres de son club de poterie.

C’est l’hébergeur du service qui décide du sous-domaine assigné aux salons. Il n’y a pas vraiment de convention bien établie à ce sujet, mais on trouve souvent des choses comme conference.domain.tld, muc.domain.tld, chat.domain.tld, salons.domain.tld, ...
Vous n’êtes pas obligé de connaître le sous-domaine choisi pour votre hébergeur, votre application est normalement capable de le découvrir automatiquement.

Est-ce que je peux créer un groupe privé ?
Est-ce que je peux créer un canal public ?
Est-ce que je peux créer un salon de discussion ?

Ces 3 questions sont en réalité une seule et même question, puisque les mots groupe, canal et salon sont presque synonymes. Voir le glossaire plus haut sur cette page.

Oui, dans la plupart des cas.

En réalité, ça dépend du paramétrage du serveur sur lequel vous souhaitez créer le salon de discussion. Mais en règle générale, les fournisseurs XMPP autorisent la création de salons pour les personnes ayant un compte sur le même serveur, et certains fournisseurs l’autorisent à tout le monde (mais c’est assez rare).

Est-ce que je peux discuter avec quelqu’un qui a un compte sur trucmuche.net alors que j’ai un compte sur machin.fr ?

Oui. C’est pour ça qu’on dit que XMPP est un protocole fédéré.

Est-ce que je peux rejoindre un salon hébergé sur un autre serveur ?

Oui. Car XMPP est un protocole fédéré.

Est-ce que je peux partager des photos ou des vidéos ?

Oui, dans la plupart des cas.

La plupart des fournisseurs XMPP permettent le partage de fichiers de façon très simple. Lorsque c’est le cas, votre application affichera probablement un bouton en forme de trombone qu’il vous suffit de cliquer.
Si ce n’est pas le cas, alors c’est que le serveur ne prend pas en charge la fonctionnalité "HTTP File Upload". Vous avez alors la possibilité de partager des fichiers par d’autres moyens, moins simples, qui ne sont pas abordés dans le cadre de cette FAQ.

Est-ce que les échanges sont chiffrés de bout-en-bout ?

Pas forcément. C’est à vous et vos correspondants d’activer le chiffrement de bout-en-bout sur vos applications et appareils respectifs. En général vous trouverez dans votre application un bouton en forme de cadenas fermé ou ouvert, indiquant si la conversation actuelle est chiffrée ou non.

Les appels audio/vidéo quant à eux sont toujours chiffrés de bout-en-bout.

Comment activer le chiffrement de bout-en-bout ?

Il existe essentiellement 2 mécanismes de chiffrement de bout-en-bout à l’heure actuelle. Le plus simple à utiliser s’appelle OMEMO et est pris en charge dans la plupart des applications. Attention, le chiffrement de bout-en-bout ne peut pas être activé dans les salons publics. Il n’est utilisable que pour les discussions en tête à tête ou dans les salons privés.

L’autre mécanisme de chiffrement est basé sur OpenPGP. Celui-ci est moins répandu et moins simple d’utilisation.

Un ancien mécanisme de chiffrement dont vous entendrez peut-être parler également : OTR. Ne l’utilisez pas, ou bien renseignez-vous sur ses lacunes d’abord.