Jabber

Javatar Presence

9 July 2008 - 22:04PEP : La publication d’informations inutiles donc indispensables

Ça fait un petit moment qu’on parle de PEP et de Pubsub dans le monde de jabber, ça commence gentillement à arriver, c’est donc le moment de faire un petit point sur ce que sont ces deux technologies et ce qu’elles permettent de faire.

Pubsub : comme RSS, mais en différent

Le principe de Pubsub est extrèmement simple (comme beaucoup de technologies géniales), une personne (ou un logiciel d’ailleurs) peut s’inscrire pour recevoir les messages que poste un autre utilisateur, on a donc un utilisateur qui publie (publish) et un qui souscrit (subscribe) d’où le nom Pubsub (publish-subscribe). Ok ça n’a pas vraiment grand chose de révolutionnaire à première vue, ça ressemble grandement à ce que fait RSS.

En effet RSS et Pubsub sont assez proches mais se distinguent par une grosse différences. Pour RSS la personne qui a souscrit doit activement récupérer le fil RSS pour savoir si il y’a eu des nouveaux items, pour pubsub c’est le serveur pubsub qui va pousser les nouveautés vers les personnes qui ont souscrits. Ça a deux gros avantages : on n’utilise que la bande passante nécessaire (pas besoin de télécharger 50 fois le fil pour n’avoir qu’une fois des nouveautés) et en plus c’est instantanée, les notifications arrivent en temps réel chez les personnes qui ont souscrits.

Cependant tout n’est pas rose dans le monde de pubsub, le protocole est assez compliqué, en fait il est prévu pour plein de cas de figures particuliers, ce qui rend son implémentation à la fois dans les serveurs et dans les clients Jabber compliquée. Un autre de ses inconvénients c’est qu’il faut connaitre l’adresse des nœuds (c’est la terminologie pubsub pour les endroits où des items sont publiés) auxquels on veut souscrire. Pour simplifier tout ça PEP a été inventé.

PEP : Une utilisation concrète de la puissance de Pubsub

PEP signifie Personnal Eventing via Pubsub, ce n’est pas simple à traduire mais en gros ça veut dire publication d’évènements personnels par Pubsub. Ça ne nous avance pas beaucoup plus. En fait PEP est une version simplifiée de Pubsub qui permet de diffuser des informations personnels du genre la musique en cours d’écoute ou son humeur. Je vous vois déjà objecter qu’on dispose déjà du message d’état dans lequel on peut mettre ces informations. Certes on peut, mais ce n’est pas idéal parce que dans ce cas là on ne laisse pas le choix à ses correspondant de recevoir ou non ces informations.

Prenons un exemple simple, supposons que je sois connecté sur Jabber en passant par un téléphone portable, je paie en fonction du débit, je souhaite donc avoir le moins de débit possible, je ne souhaite donc pas recevoir toutes les 3 minutes un changement d’état de la part de mes correspondants pour voir la musique qu’ils écoutent (ce qui en plus ne m’intéresse pas particulièrement). Si mes correspondants mettent la musique en cours dans leur message d’état, et bien je n’ai aucun moyen de filtrer ça, alors que si ils font ça avec la bonne méthode (c’est à dire avec PEP), et bien mon client ne va pas dire que ces informations l’intéresse, et le serveur ne les lui enverra pas.

PEP et Pubsub, c’est quoi les différences ?

Cette partie est un peu plus technique et demande certaines connaissances du protocole XMPP, désolé pour ceux qui ne comprennent pas tout.

Mais revenons à nos moutons, j’ai dit que PEP était une version simplifiée de Pubsub, en fait c’est un sous ensemble des fonctionnalités de Pubsub permettant une utilisation plus facile. Comme je l’ai dit un des problèmes de pubsub est la difficulté de connaître les nœuds où souscrire, avec PEP c’est facile, chaque identifiant Jabber est un serveur PEP, par exemple omega@im.apinc.org est un serveur PEP sur lequel je peux poster, je suis d’ailleurs le seul qui puisse poster dessus. Sur ce serveur les nœuds PEP correspondent aux namespace XML des extensions qui utilisent PEP. Par exemple pour la musique le nœud à utiliser est http://jabber.org/protocol/tune.

Cela simplifie donc déjà grandement le travail du client qui va publier, vu qu’il sait déjà où publier. Pour le client qui veut souscrire au nœud c’est encore plus simple, il n’a quasiment rien à faire, il faut qu’il soit autorisé à voir la présence de l’autre personne, et il doit en plus mettre dans ses capacités (c’est la liste d’informations renvoyées par disco#info, associé à un hash de ces informations qui sera placé dans les paquets de présence) qu’il supporte par exemple pour la musique : http://jabber.org/protocol/tune+notify (il faut donc rajouter +notify au namespace du protocole), et voila c’est tout, il recevra ensuite les notifications PEP pour ce protocole.

Et concrètement ça donne quoi

Dans les clients supportant PEP il est possible de mettre son humeur, la musique qu’on écoute, etc. (ça dépend de ce que supporte le client). Et après vos contacts verrons quelques choses du genre :

En plus omnipresence supporte déjà quelques profiles de PEP, ça permet par exemple d’afficher son humeur sur son blog, comme je l’ai fait dans ma boîte « Jabber ».

Pour la publication de la musique en cours d’écoute certains clients musicaux le permettent déjà, c’est par exemple le cas de Bluemindo, où c’est possible en natif. Pour ceux que ça intéresse j’ai aussi un petit bot pour MPD.

J’espère que ce petit article aura permis de clarifier un peu ce qu’est PEP et à quoi ça peut bien servir.

14 Comments | Tags: Jabber-fr, Planet libre

Comments:

  1. Moi je dis qu’il rocks ton billet, encore 3 comme ça et t’auras clos ton quota de la journée. Te décourage pas, tu seras bientôt un bloggeur-influent-topblogroll-respecté ;-)

    Sinon ouais, et pour le traditionnel screenshot qui-sert-pas-à-grand-chose-mais-qui-permet-d’intéresser-le-type-qui-lit- pas-mais-qui-regarde-les-images : http://xbright.codingteam.net/dotclear/public/debiensbellesimages/bluemindo-gajim-pep.png

  2. Merci xbright pour ton encouragement, je sais que ma prose n’est pas encore parfaite, je pense que j’écris trop de texte et que je ne mets pas assez de screenshots, mais ce n’est pas simple de passer de bloggueur de seconde classe à vrai bloggueur, mais je pense que je progresse.

  3. Yes! faudrait que je re-découvre jabber et que je voie çà d’un peu plus près car çà a l’air intéressant!

    Concernant les billets, t’inquiête: si tu voyais les miens, il m’arrive d’écrire tout un gros machin d’une traite, avec même pas un pixel d’image dedans ;-)
    Bon, je me soigne, mais pas assez!

  4. Il est très bien cet article intéressant et tout, c’est bien qu’il y ai des gens qui commencent à parler de ces technologies sur le planet-libre :-D .

  5. Sympa l’article! Avant je pensais que RSS, PubSub, PEP étaient 3 technos concurrentes et plus ou moins équivalentes, maintenant j’y vois plus clair!

    Par contre, j’ai une question de néophyte (suis pas vraiment informaticien): si j’ai bien compris, l’implémentation côté serveur implique d’avoir un serveur par id jabber pour le PEP.
    Ce sont vraiment autant de process à rajouter pour chaque id?
    Ca ne représente pas une grosse charge supplémentaire côté serveur?

  6. si j’ai bien compris, l’implémentation côté serveur implique d’avoir un serveur par id jabber pour le PEP.
    Ce sont vraiment autant de process à rajouter pour chaque id?

    Quand j’ai dit que chaque identifiant Jabber avait son propre serveur PEP, c’est plus une façon de parler, ça veut dire qu’il pourra poster à l’adresse de son identifiant jabber comme si c’était un serveur Pubsub, mais en fait derrière il n’y a qu’un seul serveur qui va gérer tout ça, en général d’ailleurs PEP est géré directement par le serveur Jabber.

  7. Cool article Omega, bravo et merci ! ;-)
    Je l’ai microbloggué : http://nyconyco.jaiku.com/presence/39644048

    Sur PEP, je dis souvent que ce sont des infos personnelles qui se situent dynamiquement quelque part entre d’un côté le statut et son message d’état, et de l’autre côté des publications telles que le blog, les photos, les vidéos, etc. On va appeler ça de la méta-information ? Ou bien de la présence étendue ?

    Y’aura une suite à l’article ? Suggestions : quels serveurs et client implémentent PEP/PubSub ? Un petit howto en 10 lignes sur Coccinella, Gajim et Psi ? Quelles applications pour PubSub ? Mimir et plus généralement le microblogging ?

    On avait écrit ça de manière collaborative, mais ça mérite un gros coup de révision :
    http://wiki.jabberfr.org/PubSub
    http://wiki.jabberfr.org/PEP

    Perso, je m’étais contenté de traduire un article de Gaston Dombiak et Matt Tucker, de Jive Software : http://nyco.wordpress.com/2007/08/13/tout-sur-pubsub/

  8. Nÿco: désolé pour le retard, ton commentaire était passé dans les spams.

    PEP est pour moi en effet de la présence étendue, méta-information ça fait un peu trop impersonnel.

    Pour la suite de l’article on verra selon ma motivation. Pour les serveurs qui implémentent PEP à ma connaissance il n’y que openfire et ejabberd, et je pense qu’aucun des deux n’implémente ça correctement. Pour les how-to je suis pas sur que ce soit très utile, c’est en général assez évident dans les clients de régler ses messages PEP.

  9. Excellent article. Moi qui n’avait jamais pris le temps de comprendre PubSub, tu l’as expliqué superbement en quelques mots. Je me coucherai moins bête ce soir, merci à toi !

  10. [...] un client Jabber qu’il est bienzenek on Jabbim, un client Jabber qu’il est bienPloum on PEP : La publication d’informations inutiles donc indispensablesOsku on Jabbim, un client Jabber qu’il est [...]

  11. Tiens, moi je le veux bien, ton bot pour MPD :-)

    Le code est-il disponible quelque part ?

  12. Ça marche nickel, merci beaucoup !

  13. [...] Recent Comments VV666 on Nouveautés autour d’omnipresencemesSengeR on Compte-rendu des JDLL 2008Cédric on Compte-rendu des JDLL 2008terre on Intégrer Jabber dans WordPress et mediawikiThesa on PEP : La publication d’informations inutiles donc indispensables [...]