[JDEV] Jabber Client Design Tutorial

Tom Jackson tom at zmbh.com
Mon Sep 24 22:23:28 CDT 2001

I've been reading this list for about a month while slowly writing a
'Jabber Client'.

I do believe UI is important, but my client doesn't have one yet.
Actually my client is a module for a webserver called AOLserver. 

I am late coming to Jabber. I first found out about it from an article
in _Linux Magazine_, August 2001! It was enough for me it seriously
consider the usefulness of this technology. I don't need to sell that
here, but what I would like to sell is the usefulness of exposing the
jabber packets to a programming environment that is easy to use, and
that would support module like applications. 

What I have done so far is to create a C module for AOLserver that uses
the libxode and libjabber api. This api is exposed to the scripting
environment of AOLserver which is TCL.  The individual xmlnodes which
represent the jabber packets are passed into the scripting environment
as well. From this point, the programmer is free to handle the packets
however they wish. 

I'm sure this is similar to the perl api, but there are differences.
AOLserver is a multi-threaded, general purpose server. It has a complete
database api, it is a high performance webserver. Although Apache is a
very good webserver, Jabber requires a continuous connection and shared
memory to be effective. 

My initial ideas of using jabber were merely as a way of delivering
messages from a website. I quickly realized that writing a bot was not
that difficult with this client. Today, while reading this thread, I
realized that AOLserver could serve as a nice user client, not just a
client for a webserver. My reasoning was simple: AOLserver has too large
of a footprint to directly serve many users, but it is small in relation
to most GUI software. The client software could be installed on a user's
personal machine, or on a firewall.
The user would then connect to the client using a web browser. Since
AOLserver is a general purpose server, there is even the possibility of
connecting a display client, instead of a browser. Obviously it would be
realtively easy to integrate any oob needs into this type of setup.

I have a simple three function bot that answers to
weblog at pathfinderschool.com/ws. It is hardly an ideal bot, but it
demonstrates that you can easily add module like functions in a simple

I hope this was not too off topic, but the UI is an extremely labor
intensive process. If significant functions can be added without the
constant need to worry about the UI programming, it might speed up use
of Jabber as a technology.

--Tom Jackson

More information about the JDev mailing list