I have been working on IM (XMPP) quite a bit over the last year and half. It has been quite exciting and a bit of a learning process for me. The real time aspect adds quite a bit of a excitement and creates new avenues of building interesting solutions. I also find it quite intriguing that it can be used as the under-pinnings of Unified Communication. The concepts of presence that exists both in the VoIP (SIP) world and the IM world can be homogenized and extend it to some other communication paths.
Interesting enough their are not too many XMPP servers out their that scale and operate in a multi-protocol fashion. I had started writing something in C++ a few months ago and then got entangled in other stuff. I think I would go back to finishing what I started. I have looked at Ejabberd, Jabber2, etc and all of them are quite big and cumbersome to extend. The most important thing that I find is that most of them are quite big and very difficult to be stripped down to the bare minimum to start building exciting applications out of.
Need sometime to work on it. Wish had more time in the day to do so, especially for the Unified Communication solution. I love it.