[jdev] Announcing PubSubClient, a Python library for the client/entity side of XEP-0060

Chris Warburton chriswarbo at googlemail.com
Mon Sep 29 14:03:14 CDT 2008


Hello everyone, over the summer I've been working on a PubSub library called 
PubSubClient so that I can make use of the PubSub system in desktop 
applications. I couldn't find anything satisfactory when I started (only 
Gloox, but I'm not too good with C++) so decided to write one. I later found 
out about x60br, but at that point PubSubClient was working nicely, and 
doesn't use Twisted.

The library itself is all Python, using lxml and xmpppy. The API is rather 
crufty at the moment since its been reworked a few times, but the included 
"browser" test/demo is quite functional (requires PyGTK and Kiwi PyGTK 
widgets). The whole thing is asynchronous, running developer-defined callbacks 
when replies are received (matched by using stanza IDs as dictionary keys) and 
doesn't require developers to touch xmpppy, lxml or any other library (unless 
of course they want to).

It's still far from stable, and whilst almost all of the (entity-side) 
specification is implemented in terms of sending, there are large gaps when 
handling replies. I see PubSub server related stuff as out of scope for this 
library, since that would require complications like storage and security 
which would bloat away from its original purpose.

In the spirit of the Open Source development model I'm releasing early (and 
hopefully often), with a Sourceforge page at 
http://pubsubclient.sourceforge.net and the actual code hosted in git at 
http://gitorious.org/projects/pubsubclient .

The library is licensed under the GNU Affero GPL. I don't want to start a 
license flame-war, so suffice it to say that the decision won't be changed. If 
you don't like it, write a replacement on your own terms (you'll probably do a 
much better job than I did).

My current efforts are to get basic functionality in the library working by 
using the test applications' functionality as the current goal. Anything 
obscure like item filters and advanced configuration options probably won't be 
implemented for a while, unless you do it yourself or specifically request it 
of me (thus I'll know that it is wanted).

Thanks, I await the feedback
Chris Warburton

PS: There's not too much infrastructure going at the moment, like mailing 
lists and such. I wanted to get the code out there before bogging myself down 
with administrative details.



More information about the JDev mailing list