[JDEV] Jabber Client Design Tutorial

Jay Curry rusty at curry.net
Thu Sep 27 19:36:25 CDT 2001

>I've always been confused between "Transports"/"Gateways"/"Agents" so if
>someone could clear that up for me that would be great.

First of all a warning. I am gong to provide canonical deffinitions then I will provide usage 
deffinitions. Some of what I say will seem incorrect to some people, that's ok. These are 
the terms as I understand them, Where you feel I am wrong, we differ in opinion. I am 
willing to listen to your arguments, just don't make them too convoluted, I prefer simple 

Transport is a layer that is part of the standard communication protocol for an 
application. For example TCP is a transport layer of the TCP/IP protocol stack. Other 
transport layers include UDP and in some books ICMP. Other transport layers have been 
built on top of IP, but TCP is the most widely known.

In Jabber the Transport is XML. It is the protocol that Jabber uses for all forms of 

In TCP/IP, a gateway is an application layer translation point. For example if you are 
using a FidoNet e-mail account and you wish to send mail to my SMTP/POP3/IMAP 
account, your e-mail has to go through a gateway. A proxy or may be considered a 
gateway, though generally it is not doing protocol conversions.

In Jabber the equivalent is the "Transports" to communicate with Yahoo, MSN, AIM, ICQ, 
IRC, etc. By this definition the Conference "Transport" would be a gateway that provides 
a jabber client to multi-point jabber client translation. 

A agent is not something that has an equivalent TCP varient, because it really is more of 
an application than a protocol. My personal feeling is that an agent is something that 
performs actions so you do not have to. Examples are Archie, Veronica, Google, 
WebCrawlers, various PIM's, chatbots, and the like. JunkBusters is a proxy that I think 
falls closer to being an agent than a gateway.

I would consider the chatbots in various conference rooms to be agents either as 
journaling programs to keep track of what happened, Within Jabber itself, the JUD, and 
JSM processes appear to me to be agents.

There are very wide variations in the application of these terms. For example, Windows 
calls your default route a Gateway. Jabber uses Transports as a term for what I 
personally consider Gateways. I don't plan on going back into time and telling microsoft 
"No you can not use 'Gateway' for that field. Gateway has a very specific meaning that 
has nothing to do with your usage...." Likewise for Transports in Jabber. The term is in 
wide use and it is less confusing at this stage to explain to people that 'this module 
provides a transport mechanism for some other feature' than it is to go through all of the 
documentation and "correct" it.

GNU/Linux is the correct term, but I will continue to call it Linux, because it means less 
bagage to carry arround when trying to explain things to people. Also it is faster to say 
Linux than GNU/Linux and is easily twice as fast to type.



More information about the JDev mailing list