Archive for the ‘Jabber/XMPP in English’ Category

Jabber Feed 0.5

Sunday, January 24th, 2010

Comme je l’annonçais, je reprends lentement mais sûrement un peu d’activité visible sur ce journal public. Et pour bien commencer les choses, voici une nouvelle version de Jabber Feed, la 0.5, plugin pour le système de publication Wordpress, permettant de publier aussi bien les articles que les commentaires dans des nœuds pubsub XMPP. C’est loin d’avoir encore toutes les fonctionnalités que je prévois, mais ça avance tout de même. Et comme de toutes façons, soyons honnête, ce n’est pas comme si les clients XMPP spécialisés pubsub couraient les rues, eh bien, on n’est pas pressé, non?

Hormis quelques détails, corrections mineures et autres, il n’y a donc que trois vraies nouveautés ici:

  • Ajout d’un widget Wordpress qui permet d’ajouter les liens de publication XMPP dans les barres latérales d’un site Wordpress par un simple glisser-déplacer dans l’interface d’administration. Cela rend le plugin encore plus simple d’utilisation pour un administrateur Wordpress non versé dans la technique. Vous pouvez voir le résultat dans la barre latérale sur ce site, partiellement l’une des raisons du nouveau design avec un thème permettant les widgets (mon ancien thème venait d’une époque fort lointaine où telle technologie était condamnée par le feu!).
  • Retrait de la dépendance PHP NET_DNS pour avoir le SRV (la librairie était déjà optionnelle, mais alors le SRV records ne fonctionnait pas). Pour être exact, le SRV fonctionnera dorénavant sans librairie additionnelle sur un serveur Windows utilisant PHP 5.3.0 ou ultérieur ou un serveur GNU/Linux (quelque soit la version de PHP). Par contre NET_DNS est toujours nécessaire pour avoir SRV sur un serveur BSD (Mac compris). Le plugin gère donc intelligemment cela, à savoir qu’il utilisera NET_DNS si la librairie est installée, sinon les fonctions de base PHP si disponible, ou désactive le SRV dans le dernier cas.
  • Implémentation de l’algorithme de gestion des priorités et poids des cibles SRV, tel que décrit dans la RFC 2782. L’implémentation du protocole SRV est donc presque complet (il ne reste plus que la gestion du TTL à implémenter).

Mes tests fonctionnent, mais comme d’habitude, tout retour et rapport de bug est plus que bienvenu.
Je voulais aussi signaler qu’il existe en fait maintenant un lecteur de flux pubsub XMPP nommé OneChannel, publié par Process One, à ma connaissance, le premier officiellement et publiquement divulgué. Je ne peux malheureusement pas l’essayer, utilisant une machine MIPS sur laquelle le support flash est plus que limite (or ce produit utilise la technologie AIR d’Adobe). Je n’ai eu qu’un retour assez mitigé par quelqu’un pour l’instant. Je suis évidemment fortement intéressé par savoir comment ce programme réagit à mes messages pubsub. À plus!

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

Thursday, July 3rd, 2008

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

(more…)

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

Wednesday, June 25th, 2008

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.

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

Tuesday, April 1st, 2008

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