[JDEV] Here's how ICQ would work.

Dan DeMaggio dmag at umich.edu
Sat Jan 16 20:47:33 CST 1999

Jeremie wrote:
> There might also be at some point a "hosts" file on the Jabber server
> that turns "@ICQ" into "@pubICQ.server.com" where a public ICQ
> transport is running for anyone to use instead of running it locally

I like the idea of 'distributed' transports (i.e. my server doesn't support
pagers, so I offload that to somebody else.) My thoughts:

- Clients should connect to their 'home' server only. Remember, they may be
behind a firewall, etc. This keeps the client simple.

- Imagine getting a jabber account at public.org, then later, your work
sets up a jabber server and gives you an account.  You don't want to check
both, so you could have your work jabber account forward to your original
account.  There are some strange issues, like how does the client know I
can send a message from "dmag at work.com" even though I'm connected to

- There are 2 ways to handle a distributed transport: 1) Server-Server
communication 2) Client-Server communication (a transport on my home server
pretends to be a 'client' and logs into the remote server.). I'm not sure
which is better. #2 looks like it wouldn't require any modifications to the
protocol. But #1 would be more elegant.

- I like the "@ICQ" -> "@pubICQ.server.com", but how does pubICQ.server.com
know which transport it's supposed to route the message to? And how does
one configure the mappings? Especially since this looks like it needs to be
a per-user configuration to me.

- The clients might want to know the above mappings, so they can have a
pull-down listbox when sending a message.

Maybe we could do a URL like scheme like this:

- icq:9999
I have an ICQ account, and I want my local ICQ transport to send message to
9999 (another ICQ user)

- icq:9999 at pubicq.server.com
Same as above, but My ICQ account is on server.com because my server
doesn't have ICQ.

- save:dmag at server.org
Others would use this to send me a message to be recorded by my answering
machiene. When someone messages me, my bounce message will say "I'm not
logged in, but you can leave me a message by using save:..."

- textpager:999
Use my local pager module to send someone a page. The text message will
show up on their alpha pager. The number is their pager ID number. Servers
probably don't want to export this to all remote users.

- numpager:5551212
Use my local pager module to send someone a page. The number is the phone
number to dial, and the message must be digits. Servers probably don't want
to export this to all remote users.

- textpager_2:dmag at public.org
Use textpager_2 on public.org to send dmag a page. dmag's pager info is
stored on the public.org server and nobody can see it. Note that this usage
is *completely* different than the above 2 (above is for local users, this
is for remote users to reach a local user).  They should be named
differently, even though they will share the same basic code. 

- jabber:dmag at second.server.org
Tell my local server to remotely access my 'other' jabber account. Of
course, I need to be able to send/rcv messages, plus muck around with my
remote roster list, etc.. Hmmm. That's going to be tricky. The client will
have to be involved a little bit.

- mail:dmag at umich.edu
Use local server to e-mail dmag. But how would you use a remote server to
send e-mail? oops.

- nick:dmag at umich.edu
This format could also be used to specify a nickname. But this is mixing
namespaces again, and could get confusing.


More information about the JDev mailing list