SleekXMPP is an XMPP library for Python. Why have I written my own when there are at least 2 others out there? Well, the first write was for a company that I worked for, and subsequent rewrites have simply been out of obsession with Jabber/XMPP. Who knows, maybe I can even use my knowledge and libraries to make money. I have purposely avoided even looking at the code of other Python XMPP implementations in order to maintain solid copyright.
The idea is that the Jabber/XMPP community could use this to test new XEPs (XMPP Extension Protocol) very, very quickly and easily. In fact, my goal is to implement every draft XEP in existence as plugins. This ensures that I write my code in a very extensible fashion, making it easy to extend the class in any way. I am writing the core RFC's as part of the main classes, and XEPs as plugins.
Beyond protocol testing, what am I trying to accomplish? Once I hit version 0.1 (not quite there yet), I will begin working on a bot framework. The bot framework will use the SleekXMPP lib, and in it's own right, be extensible. Bot behaviors will be configurable and extended with plugins like Thinkbot, Edgar, Mapbot, etc. Kevin Smith, of Psi fame, has promised to write a plugin for eggdrop scripts. Ideally, this framework will enable people who are not programmers to customize and run a bot. Maybe there'll be some optional GUI plugins to boot. In a related train of thought, why have I not seen more bots take advantage of data forms?
Here is some output from what I've been working on so far:
fritzy@peabody:~/dev/sleekxmpp$ ./example.py -d -c myconfig.xml
INFO Loading config file: myconfig.xml
INFO Logging in as [address-removed]@gmail.com/sleekxmpp_
DEBUG Loaded Plugin (XEP-0030) Service Discovery
DEBUG Loaded Plugin (XEP-0076) Malicious Stanzas
DEBUG Loaded Plugin (XEP-0078) Non-SASL Authentication
DEBUG Loaded Plugin (XEP-0092) Software Version
DEBUG Connecting via client method to talk.google.com:5222
DEBUG Starting TLS
DEBUG Starting SASL Auth
DEBUG Requesting resource: sleekxmpp_
INFO Node set to: [address-removed]@gmail.com/sleekxmpp_A4E39FDC
DEBUG Established Session
Some of the astute amongst you may notice that I've implemented XEP-0076 as a plugin, following right behind Psi.
Before an 0.1 release, I would like to add a well thought through plugin for XEP-0004 (Data Forms) as well as solidify some of my naming scheme for class variables and methods a little better. I should be there by this weekend. After that I will start reviewing patches and hopefully receiving contributions in the form of additional plugins. Keep in mind that a plugin does not have to be a XEP.
Feel free to check out the code using subversion at svn://netflint.net/sleekxmpp . Any feedback would be welcome.