chriswarbo-net: dd9336ee9898c992cd57f79daafe488db4a3be7f

     1: ---
     2: title: The Power To Change
     3: ---
     4: As I've blogged about before, I'm currently working on a general purpose Python library which implements an entity in the XMPP/Jabber Publish/Subscribe specification <a href="http://www.xmpp.org/extensions/xep-0060.html">XEP-0060</a>. The library itself can currently send equivalent stanzas to all of the examples given in the specification. It does not yet handle the replies from everything, doesn't handle incoming messages (ie. updates) and its error handling consists of printing the error stanza to the terminal. However, at around 1,500 lines it's already a bit too much to grasp with only a specification to go on. For this reason, once I had implemented every needed method I decided to take a pragmatic approach to the reply and message handling.<br /><br />This originally started as a PubSub reader application, similar in form and function to current news reader applications like Akregator and Liferea but using PubSub nodes instead of RSS or ATOM files. This proceeded quite nicely until I hit a bit of a wall: There wasn't anything to read!<br /><br />To fix this I started to write a PubSub writer application, similar in form and function to current offline blogging applications like KBlogger and Gnome Blog but once again using PubSub nodes instead of RSS or ATOM files, or Web service APIs. This was a bit premature of me, however, since there was nowhere to write things TO, and then I came across <a href="http://x60br.berlios.de/">x60br</a> and thought it would be the perfect kind of tool to make next, thus I started a simple PubSub browser.<br /><br />The concept of the PubSub browser I am making is simple, and I have blogged about it before. You're presented with a window containing minimal controls. Into a text box at the top the address of a PubSub-capable server is put, then the "Get" button next to it is pressed. The browser then adds this server to a tree view and uses the PubSub library to send a message to the given server, asking for a list of the nodes it contains. When a reply is received any nodes are added to the tree in a level below the server. Each of these nodes is then queried for any nodes that they may contain, and when the replies come in they are added to a level below their respective parents. This isn't quite a perfect way of doing things since it doesn't take into account the loops which the PubSub system allows, but is good enough for this tool's purposes.<br /><br />With a tree of nodes available the next step to take was implementing some ability to alter the structure, ie. add, remove, change parents, etc. I've now achieved this, as can be seen in the following screenshot of my current ejabberd server.<br />
     5: 
     6: <img alt='' src='data:image/png;base64,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' />
     7: 
     8: Until this point the choice of server hadn't mattered to me (it's all standardised), and since ejabberd is a) packaged in Debian and b) all the rage these days, I figured it was worth using. There are currently VERY few servers which can actually understand PubSub, the most popular being ejabberd and OpenFire (the former being used by jabber.org and the latter being used by the University of Sheffield), but since it's such a new technology there are issues arising with its server-side implementation (which my library is not designed to address). Essentially ejabberd is currently a bit broken, the most important deviations from the standard being that it allows items to be published to a collection (analogous to writing text to a folder, rather than to a file inside the folder), it allows leaf nodes to contain children (analogous to a file containing other files and folders (OK this is possible with archives, but that's not the point :P )) and it doesn't allow subscribing to a collection. Aside from those, a rather obvious restriction (although still standards-compliant, as far as I can tell) is that a rigid filesystem-like structure must be adhered to, with node names following the structure /home/servername/username/... This means that pressing the Add button when the server, /home, /pubsub or /pubsub/nodes is selected will result in a failure, and with /home/localhost selected only one name is allowed, /home/localhost/test1 (since the browser is logged in as the user test1). However, it does work as can be seen (I've created the node /home/localhost/test1), and in the process I've managed to delete quite a lot of code from the library (note for non-programmers: The more code you can throw away, the easier your life becomes :P )<br /><br />Next on the agenda is deleting nodes. If I can't get that done today, however, then I probably won't get it done until Wednesday. I'm going to see Jooooooooooooooooooooooooooooooooooooooooooooooo...ingtons.<br /><br />PS: If you want to get the code I've set up a git repository <a href="/git/pubsubclient">here</a>.

Generated by git2html.