Archive for the 'Programmation' Category

24th Jan 2010

Jabber Feed 0.5 released


As I announced in a recent message (in French though), I am coming back to more visible activity on this public diary. To begin with, here is the new version of my Wordpress plugin: Jabber Feed 0.5. As a reminder, this plugin publishes your articles and the comments on XMPP’s pubsub nodes.


Asides for minor fixes, here are the three main changes:

  • A Wordpress widget has been added, enabling for any Wordpress administrator (even not computer-technically skilled) to add the XMPP feeds in one’s sidebar by simple drag-and-drop. This is part of the reason I redesigned my website a few hours ago with a new themes enabling the widgets (my old theme was coming from a time before widgets)!
  • The NET_DNS dependency has been removed for SRV Records support, under the assumption the server is running Windows with PHP 5.3.0 or superior, or GNU/Linux (any PHP version). For BSD (Mac included), the NET_DNS library is still required. Consequently my plugin has an intelligent behaviour, testing then using NET_DNS if available, otherwise the base PHP function when possible, or else it will deactivate SRV support.
  • Implementation of the algorithm for dealing with priority and weight of SRV records’ targets as described in RFC 2782. The SRV support is now nearly fully compliant (only the Time To Live parameter’s support still needs to be added).

My own tests succeeded, but I am welcoming any bug report or any feedback, obviously! Do not hesitate.
As a side information, I wanted to inform there exists now a XMPP pubsub reader, the first publicly released, as far as I know: OneChannel, by Process One. Unfortunately my MIPS machine does not handle well flash (and this software uses the Adobe AIR technology) so I am not able to try it out. If anyone out there wants to try and tell me how it reacts to the pubsub messages generated by my plugin, I am wide-eye-opened. Bye!

Posted in Jabber/XMPP en français, Jabber/XMPP in English, Programmation | 8 Comments »

16th Jan 2009

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.

Posted in Jabber/XMPP en français, Programmation | 3 Comments »

25th Jun 2008

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.

Posted in Jabber/XMPP in English, Programmation, en | 3 Comments »

01st Apr 2008

More than just Instant Messaging: publication and notification using Jabber/XMPP

Jabber (also called XMPP, as a protocol standardized l’IETF) is well known for being “just” an instant messaging system (and network) which can be compared to ICQ, Yahoo!, Live Messenger, AIM, Gadu-Gadu or others. But it is in fact far more. As a very young protocol for real-time communication, new features are continuously imagined, developped and improved. One of these features can be very interesting and may prove to have a nice future, in my own opinion: this is the “Publish-Subscribe” (abbreviated into pubsub).

As the name implies, this system enables users with a role of “publishers” and others as “subscribers”. Hence the publishers will obviously “publish” information on a Jabber node (with is simply a term defining some kind of Jabber address), whereas the subscribers will have the possibility to read this information, and configure their subscription according to their needs. For instance a common use would be to ask being notified when new information is added. This last use case gave me the idea to developp a small plugin for Wordpress (the publishing system used for this website), which I called: Jabber Feed.

Image de publication des Marmottages
Jabber Feed will enable readers of this website for instance to subscribe to a Jabber node, then asking to be notified in realtime of every new post, or even comment. People could compare this to RSS feed, though Jabber Feed has many advantages: it is realtime, it spares bandwith, and it can be highly customizable.

Yet the main big problem is that it is hardly supported currently by most Jabber clients (even the more advanced ones; for pubsub, Gajim being the better I have tried), and by servers but with many lacks of the full protocol (as far as I have tried at least). Thus my plugin is rather a Proof of Concept as for now. Anyway I will regularly improve it and update news on this development here. Hopefully soon more clients will have a better support. I created also a permanent page about it here and the code can be foundable on the official Wordpress’ plugin repository).

I will give later a node for my public diary (the one you are reading!) because someone noticed it is apparently unsubscribable from an exterior address and I have no time to look how to configure my server as I am leaving for 2 weeks of hollydays in Japan in a few hours.
So see you then!

Edit: here is the notification I received in Gajim (last subversion). This is not much, it does not support full content currently, but it is the only client (among the ones I have tested) which notified me at least!
Notification in Gajim

Posted in Jabber/XMPP in English, Programmation, en | 1 Comment »

28th Mar 2008

Jabber est plus qu’un réseau de messagerie instantanée: publication et notification

Dans mes précédents articles sur Jabber, je l’ai comparé aux divers réseaux fermés de messagerie instantanée. Que l’on parle de l’ancêtre ICQ, des dominants Yahoo!, Live Messenger ou AIM, de l’incongru (ou plutôt local) Gadu-Gadu ou simplement de notre étoile montante Jabber (sous toutes ses formes, comme celle qu’elle prend avec GoogleTalk), on pense immédiatement et uniquement à des systèmes de discussion en temps réel. Pourtant ce n’est qu’une des multiples facettes de Jabber, celle qui a montré son visage en premier certes, car elle s’est engouffrée dans une mode. Mais Jabber (ou XMPP, nom standardisé par l’IETF) est en fait un protocole bien plus généraliste avec énormément de possibilités (on pourrait presque dire une infinité), lesquelles sont en permanence travaillées par la Fondation Jabber. C’est un protocole jeune et mouvant, ce qui est à la foi son point faible actuel, car il bouge un peu trop vite et rend obsolète certaines implémentations en peu de temps, et son point fort car son évolution rapide donne de plus en plus de possibilités.

Ce billet ne traitera que d’une des fonctionnalités de XMPP — le Publish-Subscribe — que j’ai “traduit” par un programme adapté à ce site. J’ai appelé ce programme: Jabber Feed.

Publish-Subscribe” (“Publier-Souscrire” en français, aussi connu sous l’abbréviation “pubsub”) est un système conceptualisant des nœuds de publication , service permettant de publier des données d’un côté; et de l’autre côté, des “utilisateurs” peuvent s’abonner à ces même nœuds et configurer les détails de leur inscription, par exemple en demandant à être notifiés quand quelque chose de nouveau survient. Ce principe a de multiples débouchés. Je pense que vous pourrez tous penser à au moins une utilisation que l’on peut en faire.
Image de publication des Marmottages
J’ai décidé d’appliquer ce concept à une utilisation précise la semaine dernière en développant un plugin pour Wordpress (le système de publication utilisé pour ce journal) afin de publier l’ensemble des articles que j’y fais en temps réel sur un nœud Jabber. Un lecteur régulier pourra par conséquent s’y inscrire et recevra les nouveaux articles par Jabber sans avoir à régulièrement visiter ce site. Cela permet d’éviter d’avoir à vérifier régulièrement l’existence de nouveautés (ça tombe bien car j’écris peu souvent, donc si vous deviez venir souvent, ça serait inutile; et si vous ne veniez jamais, vous oublieriez ce site).

Évidemment le gros problème — car il y en a un — est que peu de clients Jabber ont à l’heure actuelle un bon support, sinon aucun, de cette partie du protocole Jabber. Il y a donc peu de chances que vous puissiez tester mon plugin dans l’immédiat en tant qu’utilisateur (il y a cependant des méthodes de contournement dont je peux parler, mais un peu compliquées et qui ne servent que dans un but de test). Pour l’instant il s’agit donc d’une “Démonstration Conceptuelle” qui, espérons le, va faire partie d’un début pour accélérer les implémentations.
En tous les cas, sachez que je tiendrai régulièrement au courant des nouveautés autour de ce plugin (j’ai créé une nouvelle page permanente sur mon havre pour lui ici et héberge le code pour installer le plugin sur le dépôt officiel des plugins Wordpress), ainsi que des technologies associées.

Néanmoins si vous connaissez suffisamment le protocole, vous pouvez vous inscrire sur le nœud ‘home/zemarmot.net/jehan/blog/posts‘ pour recevoir automatiquement les nouveaux billets et sur ‘home/zemarmot.net/jehan/blog/comments‘ pour les commentaires, le tout sur le serveur pubsub.zemarmot.net.

Posted in Jabber/XMPP en français, Programmation | 25 Comments »