[JDEV] Jabber Client Design Tutorial
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