Jabber + Punjab + JWChat = almost what I’m looking for
Friday, September 9th, 2005A 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.
- JWChat - an open source browser based chat client. No ActiveX or Java required - 100% Javascript, which is native in all major browsers. Along with Apache on the server side to proxy requests to Punjab it works pretty well. Not really a fan of the appearance currently, but that is easy to change.
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.