{"id":175,"date":"2009-10-04T15:14:38","date_gmt":"2009-10-04T13:14:38","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=175"},"modified":"2009-10-04T15:14:38","modified_gmt":"2009-10-04T13:14:38","slug":"xmpp-cas-dutilisation-et-perspectives","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2009\/10\/04\/xmpp-cas-dutilisation-et-perspectives\/","title":{"rendered":"XMPP, cas d&#8217;utilisation et perspectives."},"content":{"rendered":"<p>Parmi les commentaires rattach\u00e9s \u00e0 mon premier post parlant d&#8217;XMPP, il y en a eu un me demandant de pr\u00e9senter des exemples d&#8217;utilisation d&#8217;XMPP par un programme python. J&#8217;avais promis de le faire. Avec un certain d\u00e9lais, pour ne pas dire un d\u00e9lai certain, je vais essayer de r\u00e9pondre \u00e0 cette demande en la g\u00e9n\u00e9ralisant. A savoir : \u00e0 quoi \u00e7a peut servir xmpp pour un programme. Et comme je suis bavard, je finirais en me d\u00e9guisant en madame soleil et en donnant mon avis sur le futur de l&#8217;utilisation d&#8217;XMPP.<\/p>\n<h1>XMPP, oui mais on peut faire quoi avec ?<\/h1>\n<p>La premi\u00e8re chose \u00e0 savoir pour r\u00e9pondre \u00e0 cette question, c&#8217;est que le protocole XMPP c&#8217;est bien bien plus qu&#8217;un protocole de messagerie instantan\u00e9e.<\/p>\n<p>La discussion vocal est sens\u00e9e \u00eatre g\u00e9r\u00e9e (je dis sens\u00e9e parce qu&#8217;\u00e0 ma connaissance le support de cette fonctionnalit\u00e9 est assez &#8216;en mode alpha). L&#8217;envoi de fichier \u00e9galement, mais c&#8217;est un classique de l&#8217;IM \u00e7a.<\/p>\n<p>Ce que l&#8217;on sait moins c&#8217;est qu&#8217;un m\u00e9canisme de publication tr\u00e8s complet est g\u00e9r\u00e9e (PubSub) qui permet \u00e0 des auteurs de publier du contenu et d&#8217;en limiter l&#8217;acc\u00e8s et \u00e0 des lecteurs de lire le dit contenu. Et comme on est sur un fonctionnement intelligent (et connect\u00e9) il n&#8217;y a pas besoin de faire comme avec le RSS, c&#8217;est \u00e0 dire d&#8217;avoir des lecteurs qui se connectent toutes les N minutes pour voir si il y a un nouvel article \u00e0 lire. L\u00e0 non, les lecteurs se connectent au serveur XMPP qui les notifiera du fait qu&#8217;un nouvel article est lisible, quand cela sera le cas.<\/p>\n<p>Il existe \u00e9galement des m\u00e9canismes de data form, pour envoyer des &#8216;formulaires&#8217; (comme des formulaires web quoi) entre deux points xmpp.<\/p>\n<p>Plusieurs m\u00e9canismes de lancement de commande, que ce soit par xml-rpc ou avec une XEP (les XEP sont un peu les RFC du XMPP) qui sp\u00e9cifie comment un noeud XMPP peut demander \u00e0 un autre n\u0153ud de lancer une commande et comment cet autre noeud peut ensuite renvoyer le r\u00e9sultat.<\/p>\n<p>Et c&#8217;est loin d&#8217;\u00eatre tout, il en existe tout plein d&#8217;autre de XEP, si la liste vous int\u00e9resse vous la trouverez ici : <a href=\"http:\/\/xmpp.org\/extensions\/\">http:\/\/xmpp.org\/extensions\/<\/a><\/p>\n<h1>Ok, mais pour faire quoi au final ?<\/h1>\n<p>Parce qu&#8217;avoir un protocole qui fait plein de choses, c&#8217;est bien. Savoir quoi en faire, c&#8217;est mieux. Bon l\u00e0 \u00e9videmment vous n&#8217;\u00eates limit\u00e9s que par votre imagination, apr\u00e8s tout, je ne vais pas pouvoir vous faire la liste exhaustive de toute les choses que vous pouvez faire avec XMPP.<\/p>\n<p>Mais, parce que je suis gentil, je vais vous donner quelques exemples.<\/p>\n<p>Le plus facile, c&#8217;est bien entendu, lorsqu&#8217;on d\u00e9veloppe un programme qui int\u00e8gre de la messagerie instantan\u00e9e. Plut\u00f4t que de perdre du temps \u00e0 r\u00e9inventer la roue, autant utiliser un truc qui est \u00e9prouv\u00e9. (je me r\u00e9p\u00e8te peut \u00eatre, mais comme exemple parfait on peut citer Eve Online qui utiliser xmpp pour le chat intra jeux).<\/p>\n<p>C&#8217;est loin d&#8217;\u00eatre la seule utilisation possible. Personnellement, je l&#8217;utiliserais dans tout les m\u00e9canismes de communication client \/ serveur qui n&#8217;ont pas un besoin ultime de non latence. Il est certains qu&#8217;envoyer les d\u00e9placements des joueurs par XMPP, dans un fps ne serait pas une excellente id\u00e9e. Mais dans tout ce qui se rapproche \u00e0 un jeux de strat\u00e9gie, gestion, jeux de r\u00f4le en tour par tour. Op, du xmpp. (par exemple imaginons la version informatique du jeux &#8216;<a href=\"http:\/\/fr.wikipedia.org\/wiki\/Les_Colons_de_Catane\">Les colons de Catane<\/a>&#8216;, c&#8217;est en XMPP sinon rien, de m\u00eame pour tout les jeux web qui fleurissent aujourd&#8217;hui, une version non web serait \u00e0 faire en xmpp).<\/p>\n<p>La je parle de jeux, mais \u00e7a pourrait s&#8217;appliquer \u00e0 bien d&#8217;autre domaine. Communication entre un programme op\u00e9rateur et les automates qu&#8217;il contr\u00f4le par exemple. (imaginons un truc simple, un logiciel qui doit contr\u00f4ler des automates qui sont charg\u00e9s de fermer \/ ouvrir des vannes et qui peuvent donner leur statuts courant, o\u00f9 alors des daemons syst\u00e8mes qui logueraient leur activit\u00e9s \u00e0 travers du XMPP).<\/p>\n<p>On peut (et on devrait) utiliser le XMPP \u00e0 chaque fois que l&#8217;on se retrouve devant un m\u00e9canisme de publication \/ consultation de contenu. (comment \u00e7a je parle du web classique ? Mais pas du t&#8230; si en fait si).<\/p>\n<h1>Le futur et les perspectives du XMPP<\/h1>\n<p>Je vous le dis, et vous pouvez me croire, on aura jamais besoin de plus de 640Ko de m\u00e9moi&#8230; Mais qu&#8217;est ce que je dis moi l\u00e0?<\/p>\n<p>Le futur du XMPP. J&#8217;esp\u00e8re qu&#8217;il sera radieux. J&#8217;esp\u00e8re que ce protocole (utilis\u00e9 massivement par google d&#8217;ailleurs) se d\u00e9veloppera et remplacera peu \u00e0 peu les choses sous optimales que l&#8217;on fait au jour d&#8217;aujourd&#8217;hui.<\/p>\n<p>Je trouve par exemple, compl\u00e9tement hallucinant tout le m\u00e9canisme de rss aujourd&#8217;hui. Avec les probl\u00e8mes qu&#8217;impliquent le fait de consommer des ressources pour rien dans 80 % du temps (\u00e0 savoir quand votre client RSS va v\u00e9rifier que non, il n&#8217;y a vraiment pas de nouvel article \u00e0 lire sur les 343 flux rss que vous suivez).<\/p>\n<p>J&#8217;esp\u00e8re vraiment le d\u00e9veloppement futur d&#8217;une sorte d&#8217;XMPP-Web, avec des navigateurs xmpp qui se connectent sur des sites web xmpp. Des sites XMPP qui mixeront alors d&#8217;une fa\u00e7on compl\u00e9tement naturelle de la gestion de contenus, de la discussion entre lecteurs (sans devoir passer par des rajouts en js pour g\u00e9rer un chat sur la page web..) , des parties du sites ludiques, etc etc ..<\/p>\n<p>Si j&#8217;ai un espoir, c&#8217;est vraiment celui-l\u00e0. Un glissement du HTTP-Web au XMPP-web, m\u00eame si cela doit passer au d\u00e9part par des plugins pour que les navigateurs HTTP puisse browser des sites XMPP.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Parmi les commentaires rattach\u00e9s \u00e0 mon premier post parlant d&#8217;XMPP, il y en a eu un me demandant de pr\u00e9senter des exemples d&#8217;utilisation d&#8217;XMPP par un programme python. J&#8217;avais promis de le faire. Avec un certain d\u00e9lais, pour ne pas dire un d\u00e9lai certain, je vais essayer de r\u00e9pondre \u00e0 cette demande en la g\u00e9n\u00e9ralisant. &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2009\/10\/04\/xmpp-cas-dutilisation-et-perspectives\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">XMPP, cas d&#8217;utilisation et perspectives.<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[36,34],"tags":[37,101],"class_list":["post-175","post","type-post","status-publish","format-standard","hentry","category-reflexions-informatique","category-xmpp","tag-reflexion","tag-xmpp"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p12cdp-2P","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/comments?post=175"}],"version-history":[{"count":1,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/175\/revisions"}],"predecessor-version":[{"id":176,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/175\/revisions\/176"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}