A couple people commented on my project idea for instant messaging over HTTP. After looking at the open source IM market in more depth I’ve found that the pieces I was looking for are actually all there, mostly.
- Jabberd 2 – an open source XMMP server implementation. There are also some great extensions (called transports) like PyAIM-t and PyMSNt that allow your server to interface with other IM providers. Any jabber server would probably do, but I liked the looks of Jabberd 2 best. Adopting an already existing IM server will save a bunch of time trying to design and write a backend for my project.
- Punjab – an open source HTTP jabber client interface. Kind of like a session-intelligent proxy between the statelessness of the HTTP and the statefullness of XMMP. Version 0.6 is is the latest release, but it has a couple problems. I’ve had more success going with the latest code from CVS. Even that has some issues though, mostly that it does not implement JEP-0124 completely, and binding connections simply get turned into polling connections with a very fast (read instantaneous) polling rate. This problem is where I’m currently focusing my efforts.
So, even though it appears nobody had really ventured into exactly the space I was thinking about, there are enough tools out there that I can pretty much construct my idea out of pre-existing code. Progress is being made, but it isn’t ready for public yet. Punjab seems to be the most important piece of the puzzle to me and it still has a couple show stopping bugs (but I think I know how to fix them – except for the scalability problems). Once I get it patched I’ll release the patches and a guide to build your own HTTP to Jabber to AIM/MSN/Y!/etc setup.