[jdev] Gaim -> transport

Geoffrey Cross geoff at visualgeometrysolutions.com
Tue Sep 14 09:15:41 CDT 2004


Hi,

I'm a relative newcomer to the jabber world, and this might have been
discussed or even implemented before: if so, let me know and I'll go away
again :).

Anyway, I started looking at jabber a few weeks ago and immediately
downloaded jabberd2 without thinking.  After a lot of fussing, I've now
managed to get PyMSN and yahoo-transport (via jcr) working.  However, it got
me wondering (and I know this has been wondered before) why we don't just
wrap Gaim into a transport and then we'd have all the transports running in
one big package.  

So what I've done is the following:

1) I've run swig on most of the Gaim code and generated perl wrappers for
it;

2) I've implemented some callbacks to fill in for the lack of user interface
(which is slightly tangled into the Gaim source);

3) I've just about finished bundling the whole thing into a jabberd2
transport (using Net::Jabber).

The consequence of this is a transport which should (in theory) gateway to
AIM (Oscar and TOC protocols), ICQ, MSN Messenger, Yahoo!, IRC, Gadu-Gadu,
and Zephyr networks.  In practise, I've now tested it against AIM, ICQ, MSN
and Yahoo! with no problems.

I can't say much about the scalability of this transport, but it looks to be
stable.  And I have only implemented the IM side, although Gaim supports
chat too which should be relatively easy to interface too.  

The advantages I can see in this approach are:

1) a single transport gateway instead of 5 or 6;

2) the Gaim guys really do know their protocols and my wrapping should be
pretty forward compatible should the protocol implementations need to
change;

3) all this with almost no new code.  Maybe about 1000 lines.

The only real disadvantages are

1) the wrapping is done in perl (which I like, but others might not);

2) building requires you to be able to build Gaim which in turn isn't always
the easiest of tasks;

3) the code I've written isn't beautiful, but it works... :)

So, I just wondered what the pros thought and whether this is something
which I should bother to package up and submit somewhere for more general
use?  If so, I'll bung it on a public jabberd for people to stress-test it
for a while.


Geoff.








More information about the JDev mailing list