Tuesday, March 23, 2004

John Klensin & I have been talking about how to use Jabber/XMPP and AIM (or other IM systems) with one client running, instead of two. John compiled some recommendations on that after our discussions and his experimentation, and was kind enough to let me adapt that for this post. Note that XMPP is Jabber's standardized cousin, which many Jabber implementors are moving to. For clarity I'll call both Jabber because the two are compatible.

There are two basic approaches to single-client multi-protocol IM support:
  • Use a client that supports many protocols natively. I've used Trillian to do this on Windows systems, and was happy enough to pay the $25 for Trillian Pro so that I could run the Jabber plugin within Trillian. On a Macintosh, I've started using Fire, which is free and just works (for Jabber connections, just put the whole JID (user@example.com) in the buddy "name" field.)

  • Use a client that supports Jabber natively, and a server that gateways to the other services. For example, Exodus is a focused Jabber client (it does a good job of supporting Jabber rooms which is not too common yet), and it also allows you to talk to AIM/Yahoo users through a gateway if your Jabber server has gateways.

The first problem with gateways is usability. It's hard to sort out what address to use so that a gateway understands who you want to talk to. Then, once you connect, the user on the other end sees a mangled addres for you -- one that the gateway invented so it could handle a number of users and receive their messages and route them properly. When setting up buddy permission, the other user might see a confusing message about adding you to their buddy list because not all systems have the same semantics for this step. Then once you're on each others' buddy lists, presence information might get miscommunicated. (John had some tips for getting this to work, which I put at the bottom of this post).

The second problem with gateways is privacy (or security). The way AIM and Yahoo are designed means that the gateway has to connect as you -- AIM and Yahoo weren't designed to have servers involved that aren't their direct control. So you have to tell the gateway your account and password information for it to impersonate you.

Many in the XMPP/Jabber community think gateways are the way to go in the long run, despite the usability and security problems. Here are a few reasons:
  • It's a lot of work to write a client that supports so many protocols. Coding/design effort has to go into handling all the protocols, rather than good user experience. The client may not be free after so much work -- take Trillian pro for example. But even if you're paying for Trillian Pro, its developers/designers decided not to handle all of the features of all of the systems Trillian connects to. For example, Yahoo supports an "invisible" mode, but even though Trillian connects directly to Yahoo using your Yahoo account it won't set you to "invisible".

  • It's a lot of user work to maintain two to six different accounts, which means identities, and juggle them all. What happens when I use AOL, Yahoo and Jabber with Fire, and I want to connect to a friend that uses AOL, MSN and Jabber with Trillian. Do we use AOL or Jabber? Which one works best? Do I have two listings for my friend in case one is unavailable?

  • The protocols used by AOL and Yahoo IM change frequently. Every time that happens, Trillian and Fire users have to upgrade their client software. It's less of a burden overall to upgrade a gateway that serves hundreds or thousands of users, than to upgrade all those users clients.

  • In the long run, the hope is that all IM systems will accept that IM is an Internet-wide system, not controlled by any one company. When AOL, Microsoft and Yahoo accept this, they'll start to migrate their systems towards the IETF standards that have already been put in place for IM addressing and for standard presence information formats. Then gateways will work a lot better, without so many hacks for address translation and presence information translation.


John's tips for gatewaying with Exodus
John just got gatewaying working with Exodus and documented his steps.
  • First, find a Jabber server that supports gatewaying. Not all of them do -- e.g. "jabber.org" doesn't do gatewaying. If you've already got a Jabber ID on a non-gatewaying server, you can keep it there and use a different server for gatewaying, but John doesn't recommend that -- there will be some availability hiccups as you now depend on two servers being up, not just one.

  • Next, you need to define and register with each gateway service first, the process that involves supplying your identity and password for that service and binding it to your Jabber ID.

  • Finally, to create a new buddy through a gateway, you have to put the transport type ("AIM" or whatever) in the "Contact type" field, the handle or screen name (only) in the "Contact ID" field, and the server name (in foo.bar form, not aim.foo.bar) into the "Gateway server" field. That results in a Jabber ID of ContactID@aim.foo.bar, but this shouldn't be a user issue.

No comments:

Blog Archive

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.