Jabber Feed 0.4 : l’évolution avant la révolution

Une nouvelle version de mon plugin Wordpress se montre au petit jour!
Ci-dessous la liste des nouveautés. Ce sont beaucoup de nouveautés liées à la sécurité (identification, encryptage, etc.) et au réseau, donc assez techniques. Pour résumer les changements, si vous ne comprenez pas tout, dites vous juste que c’est beaucoup mieux!

  • Encryption TLS des communications si proposé par votre serveur. Attention néanmoins, mon utilisation de TLS par les fonctions PHP n’inclut pas la validation du certificat X.509 (du peu que j’en comprends), qui permet une bien meilleure identification du serveur (en plus de l’encryption). En fait je n’ai pas étudié la question à fond, ni n’ai trouvé de docs suffisantes et pas trop chiantes pour comprendre tout cela (cependant si un utilisateur aguerri de PHP veut m’aider, n’hésitez pas à me le dire et à me donner davantage d’indications pour intégrer cela dès maintenant à mon plugin).
    En réalité, j’encrypte avec SSLv2 ou 3, car apparemment Gmail ne gère pas TLS même s’il dit le gérer (après tests. Encore une fois, si je dis une bourde, tout retour est le bienvenu. Car ce sont des sujets complexes qui ne sont pas trop dans mon domaine de compétence). L’encryption SSLv23 semble donc le compromis à court terme.
  • Nouvelles méthodes d’identification SASL: le plugin sait s’identifier actuellement avec les méthodes suivantes (par ordre de préférence): DigestMD5, CramMD5, PLAIN. Notez que seul DigestMD5 et PLAIN ont été testés en réalité et que je ne supporte que l’identification SASL, ce qui est de toutes façons l’identification recommandée.
  • Création et configuration automatiques des noeuds pubsub: cela existait déjà avant, mais a été amélioré. Le plugin se charge automatiquement de créer les noeuds nécessaires et de les configurer. Voici comment sont configurés les noeuds: inclusion du contenu par défaut dans les notifications (pubsub#deliver_payloads), changement du titre des noeuds (pubsub#title) avec des noms significatifs (sauf si un titre a été manuellement mis, auquel cas le plugin ne le changera pas!), rendre les items persistants (pubsub#persist_items), augmentation automatique du nombre maximum d’éléments à sauvegarder dans le noeud (pubsub#max_items), autoriser la souscription au noeud (pubsub#subscribe).
  • Gestion des SRV Records: désormais si le nom de domaine gère les enregistrements de Services (SRV Records), il n’y a pas besoin de préciser les données serveur/port sur les serveurs configurés de manière particulière (par exemple le domaine gmail.com qui est joint sur des sous-domaines!). Cela simplifie donc la configuration pour l’utilisateur final, est mieux pour l’internet en général (car les enregistrements de service sont une grande évolution qui n’est malheureusement pas encore assez utilisée, notamment dans aucun navigateur web pour les services web!), et permet de gérer la haute disponibilité (si des domaines ont de nombreux serveurs pour répartir la charge ou gérer l’arrêt d’un serveur, le plugin sait boucler jusqu’à trouver un serveur fonctionnel).
  • Possibilité d’envoyer un extrait ou un résumé à la place des articles complets: lorsque cette case de configuration est activée, alors le plugin n’enverra que le résumé de l’article, si vous en avez fourni un. Si vous n’avez pas fourni d’extrait, mais que vous utilisez la balise <!-- more -->, il enverra seulement l’introduction avant la dite balise. Enfin si vous n’utilisez ni l’un ni l’autre, il enverra l’article complet.
  • Envoi de l’article en html: lorsque la case est cochée, l’article est envoyé dans deux versions: html et texte brut, de sorte que si le client de l’utilisateur inscrit sait lire le html, alors il pourra afficher une page formatée en html. Si le client ne connaît pas le html, alors il aura toujours la version texte à disposition. Il n’y a donc aucune perte d’information lors de l’activation de cette option, uniquement une méthode alternative.
  • Et évidemment la correction de divers bugs que j’ai vus ou qui m’ont été pointés du doigt par des admirateurs utilisateurs ;-) .

Tout retour est le bienvenu. Pour information, je ne serai malheureusement plus disponible à partir de mars/avril (à peu près). Il se peut même que l’on n’entende plus trop parler de moi avant longtemps après cela (ou peut-être que si… car la vie est pleine de surprise! Mais pour l’instant, c’est mystère et boulet de canon). Par conséquent si vous souhaitez faire un retour, c’est maintenant. D’un autre côté, si quelqu’un souhaite reprendre la maintenance du projet, qu’il me contacte afin que je lui passe les rennes.

Tchouss’!

P.S.: si personne ne se manifeste avant que je disparaisse, je laisserai de toutes façons à quelqu’un de confiance l’ensemble de mes accès sur mon serveur, les divers projets auxquels je participe, etc. Je laisserai donc également le moyen de le contacter, de sorte que si quelqu’un souhaite reprendre le travail sur un de mes codes une fois que je ne serai plus là, il puisse le faire.

Jabber… XMPP… Messagerie Instantanée… Communication instantanée!

L’appellation qu’on donne aux choses est importante. C’est pourquoi un protocole de communication comme XMPP a connu des appellations diverses pour se trouver une place, sa place, un rôle, son rôle.

Il y a à ce propos un phénomène fort intéressant autour du protocole XMPP, phénomène lexical puisqu’il tourne autour de la façon d’appeler ce dernier. Ce protocole de discussion instantanée s’est fait connaître sous l’appellation Jabber avant de devenir un standard Internet (normalisé par l’IETF) sous un nouveau nom acronymique: XMPP.

Petite étude sémantique d’un tournant de l’Internet…

Read the rest of this entry »

Best Practices (for and between servers and clients) to handle other entities’ features

This ticket is a proposition of the adviced way of using “Feature Discovery and Knowledge” efficiently. Indeed the current reality in Jabber/XMPP implementations and my work on my PubSub plugin showed me some really bad behaviours of both servers and clients which mostly lead to possible data loss. The principal reason is probably that the current XEPs were focalized on the idea that only the client had to know what the server can do, hence acting according to this knowledge. But the reality is that the server should also know what the client can do before sending anything.

I began this ticket a few days ago and finalized it after a discussion on the Standards mailing list. It is mostly based on 3 existing XEPs: Service Discovery, Entity Capabilities and Resource Application Priority

Read the rest of this entry »

Jabber Feed v0.2 released: Jabber publication plugin for Wordpress

The second release of Jabber Feed is out today. It has been greatly improved though I will still have some work on it. Now all nodes are created automatically by the plugin when you configure it. Hence it will “tell” you if your Jabber account is wrong or if you don’t have the rights to create the node.

The posts will be published to a subnode ‘posts‘. So people can subscribe to this node in order to receive only notifications about new posts.
Comments are published under the subnode ‘comments/{id}‘ where ‘{id}’ is to be replaced by the post’s id. Hence people can subscribe to the comments of a single post. By subscribing to ‘comments’ node only, you will receive all comments, as long as the correct option to receive items of subnodes as well is set (unfortunately this option is not understood by ejabberd, the server which I made tests with, and the one of jabber.org. I don’t know for the other server softwares) in your subscription.

Of course we cannot ask people to “know” all this. This is why autodiscovery links are automatically set on every pages (you can subscribe to comments on a specific post only, to all posts, all comments, etc.). I also provide 2 templates to generate these links (either autodiscovery links for html header, or just simple ‘a’ tags, or even just bare XMPP urls) in order for you to use them as you like in your theme. For instance, I added a ‘a’ link to the post and comment nodes at the bottom of my test page, and a ‘a’ link above the comments for subscribing to comments of a post.

One of the other main points I improved since first version is that now, all nodes are created automatically for you! The blog admin don’t need to do anything, he doesn’t have to know XMPP and how it works. She or he simply has to know a pubsub server and choose an unchosen node on it.
You can also have a look at the improved configuration page which creates the nodes and tests the Jabber login (JID) when you aknowledge the configuration with the “Update” button.

To conclude this all, I will say that I am pretty happy of this all. This is still not perfect. Some details have to be improved, or even fixed (I keep a todo list you can read in the wordpress repository). But this is a nice step since first version and soon technically close to perfection from a publishing system point of view. :p Now I will work on higher priority on the syntax of the sent message because it is really ugly (and without content processing, it will probably fail with some special html character or tags). I especially want to process the posts and the comments’ content to make them XHTML-IM compliant before sending it. Note that I will probably provide this new version very soon (in a week, if my mind don’t get disturbed by other stuffs).

More information, as well as the plugin itself, are foundable on the Wordpress repository website.

Any feedback is more than welcome. :-)

P.S.: note that I don’t even use the plugin here (in fact yes, I enabled it but don’t show it by using the templates in my theme!) because ejabberd (the server software I use, and one of the most famous. For instance jabber.org also uses it) has a big bug on the pubsub implementation which prevents from creating and especially subscribing to a node from a JID of another server! So this is not a useful PubSub implementation if people cannot subscribe (or only people on the same server as you, which is a huuuuge limitation).
Yet I was told Tigase has currently a very good pubsub implementation (close to 100%). So I will make some tests soon (but first I have to install it, unless someone can forward me to one where I can run tests to spare time?) with it and maybe change my server for Tigase if it is really better.

Back on the roads

I had 3 monthes pretty sad, at least compared to what I used to: no motorcycle — public transportation instead — no volley ball, and in fact no sport, whatever it could be. I was missing my old companion, a black Honda CB 500, perfectly working. I am especially sad I could not save it; and also I had never done any pictures of it, first because I never expected to have an accident (of course you may always have, but you never hope to, so you will try to forget!), also because I am not such a photographer (I don’t really care about photographs, and indeed don’t even really have a camera). This motorcycle was named “Dark Marmot“, just for the record and this way it won’t be forgotten completely… For the record, and also because I never told it, my first one was “Marmotton“.

And so here is my new one, I got it one month ago, a wonderfull motorcycle (Moto Guzzi, Bellagio) called “Joly Marmot” (or sometimes also “Joly Roller“). Nothing interesting to say because this is only my life, so that’s just it: for the pleasure of sharing my joy to people I don’t even know! :-)

Moto Guzzi, Bellagio
Joly Roller

A diaporama of this beauty is available here. And honnestly it is even more beautiful when seeing it in real life.
See you!