XMPP [veille]

le

XMPP vient de gagner la guerre, et tout le monde s'en fout. MSN vient de faire la bascule, après Facebook, Google Talk, Meetic....

XMPP, aussi connu sous le nom de Jabber, pour rappel, est un protocole de communication, du tchat quoi. Ce protocole est mature, basé sur XML et un grand nombre de spécification, les XEPs. L'écosystème est varié, avec des mammouths, comme eJabberd, qui vient de se faire griller la politesse par Erlang Solution avec son fork non amical Mongoose (qui cache ses sources sur github). Les fans de Java pourront se tourner vers Tigase, et les pragmatiques vers Prosody.

XMPP aime se faire haïr. Maintenant, qu'il a gagné, c'est encore meilleur. Concurrent du vénérable IRC, prosélyte XML (assumant pleinement l'emballage des binaires en Base64), il va même jusqu'à snober HTTP. XMPP a plein de chose à se reprocher (les transferts de fichiers, par exemple, fipes étant la meilleur alternative), mais il faut lui reconnaitre deux qualités : la gestion de la présence, et la fédération de serveur (il est possible de discuter avec des gens sur un autre serveur). XMPP est un moyen standard et élégant pour que deux clients (physiques ou logiciels) puissent communiquer de point à point, sans soucier de problèmes de NAT.

XMPP a des enfants cachés, comme BOSH, qui permet de faire du webchat, avec son protocole de XMPP over HTTP, avec du long polling à l'ancienne. La transition avec les websockets fait parti de ses évolutions logiques. Strophe est l'implémentation de référence pour construire un client strophe dans un navigateur web. BOSH peut faire parti du serveur XMPP, ou être utilisé sous forme de proxy. Attention à utiliser une authentification par token, c'est toujours stressant de voir passer son mot de passe dans firebug.

PubsubHubHub est l'autre enfant terrible d'XMPP, conçu avec RSS. L'idée est de recevoir les news en flot, à la Twitter, avec juste quelques serveurs assumant le polling de différentes sources, et la réception en direct des news pour les plus modernes. SuperFeedr a basé son business là dessus, et son blog technique est sympa à suivre.

XMPP déroute les développeurs par son workflow entièrement asynchrone. Utiliser la bibliothèque Python est particulièrement déroutant puis pénible quand il faut commencer à utiliser des threads. La version Twisted relève de l'archéologie, la doc étant caché et dispersé dans des recoins du Web. Par contre, nodejs à toute sa place dans ce domaine, et l'on peut même le qualifier d'arme secrète. La bibliothèque développée par Astro, node-xmpp, emballe de manière élégante tout les détails du protocole, laissant la place au code métier.

Le protocole, du XML rigoriste, reste simple à débuguer (node-xmmp-trace).

Le client de référence est le très laid Psi qui implémente un maximum de XEP et propose une console très pratique.

XMPP a raté le passage au web et se fait grignoter par des solutions directement basé sur les websockets, EventSource, long polling, sans trop se soucier avec des histoires d'interopérabilité. Comme exemple connu, il y a HipChat ou Campfire.

XMPP reste un très beau standard, avec des clients et des serveurs matures, et une belle place pour les robots.


Partager cet article :