[rdfweb-dev] IM URIs

Dougal Campbell dougal at gunters.org
Sat Aug 2 20:34:29 UTC 2003

On Sat, 2 Aug 2003, Bill Kearney wrote:

> > MSN is via Passport which is always an email address.
> Actually, no, a Microsoft messenger account /may/ be an e-mail address.
> [....]
> THIS is why I've complained that using service-specific structures for
> handling IM accounts is an evolutionary dead-end.  When I have a
> person's IM info and want to contact them I have to understand what
> protocol they're using.  That, however, may not be enough.  I have to
> then be able to ascertain what path to take to actually reach them.
> For IRC [Edit: I assume you mean ICQ here] there's just one network.
> For AIM and Y! this is also true.  For IRC there are thousands.  For
> MSN there's one.  But for services that use the same protocol as MSN
> there can be more than one.  This begs the question of if there
> /happened/ to appear more than one way to use an ICQ, AIM or Y!
> service would it have been a /bad idea/ to have used a model that
> didn't support that extensibility?
> [....]

If I understand where you're going correctly, the problem is that
knowing a person's IM ID and what service they use, may not be enough.
You may also need to know a specific server to contact.

For most services, knowing two of those three pieces is enough. For
example knowing that that I use ICQ and my UIN on that service is
1223172 is enough to contact me. Knowing that I use Yahoo! IM and that
my YIM ID is EMCampbell3 is enough. Similarly for MSN and AIM. If you
know the central service and the ID, you're set.

Jabber is decentralized, but the server to contact is part of the ID.
Knowing that I use Jabber/XMPP, and that my JID is dougal at gunters.org is
enough, because the Jabber protocol knows to contact the server
'gunters.org'. But knowing that I use IRC and that my nick is dougal is
not, because you have to know the particular IRC network that I'm using,
and any number of other people could be using the same nick at any given

The question of separate networks using the same protocol shouldn't be
difficult to handle, generally. As long as we have some standard,
enumerated list of protocols.

IM, is unfortunately going to be problematic (and does IRC really enter
into a discussion of IM?), because there is such disparity between the
different systems. It's not like email or web URLs, where there *is* a
standard set of protocols.

So, what must be identified?

  Service Protocol
  User Identifier
  Service hostname (dependent on the type of service)

This implies that we'd almost certainly need some pre-defined, standard,
required "header" to identify the service protocol. You'd also need to
have a reliable "host to service" mapping for the "standard" centralized
services (e.g. "ICQ == icq.com", "MSN == msn.com", etc.) Then, for the
case of a network using an existing protocol, but separately from the
original service, you might get something like:

  im:dougal at gunters.org?proto=MSN

Which would mean that I could be contacted via server "gunters.org"
using the MSN protocol.

But what if I use the central MSN service with an ID of
"dougal at gunters.org"? Maybe:

  im:dougal%gunters.org at msn.com

The host/service mapping would pick up that "msn.com" implies the
centralized MSN service, and map the "dougal%gunters.org" to
"dougal at gunters.org".

I didn't read draft closely enough to be sure that this would be
allowed.  And I'm not sure if I like it anyhow, as it's quite ugly and
sure to confuse people.

Perhaps something like this would be simpler:

  "im:" user-part "@" host-part ["/" std-svc-proto ["/" contact-host]]

Or, to translate some of the above examples:

  im:1223172 at icq.com
  im:EMCampbell3 at yahoo.com
  im:dougal at gunters.org/XMPP  (jabber/xmpp: contact host 'gunters.org')
  im:dougal at gunters.org/MSN   (contact via central MSN service)
  im:dougal at gunters.org/MSN/example.com (MSN protocol, specific host)
  im:dougal at irc.freenode.org/IRC?channels=wordpress,mozdev,linux (???)

If necessary, the optional query-string stuff could be tacked on, as in
the last example.

I've never really gotten into IRC much (I abandoned BITNET RELAY chat
for MUDs many years ago, and IRC lost out to MUDs for the same reasons),
so I'm not sure if there might be a better way to specify IRC contacts,
but there doesn't seem to be, since you don't register a unique id that
stays with you (again, IRC has little in common with most IM networks).

Ernest MacDougal Campbell III, MCP+I, MCSE <dougal at gunters.org>
http://dougal.gunters.org/             http://spam.gunters.org/
  Web Design & Development:  http://www.mentalcollective.com/
       This message is guaranteed to be 100% eror frea!

More information about the foaf-dev mailing list