I've been pretty excited as I watched the rumours on Slashdot fly around about a new instant messaging system from Google. After all, Google has revolutionized several internet technologies that were previously miserable: take Google search, Google maps, Gmail, and Picasa, as a few prime examples. They've always been friendly to the open-source community as well. When I heard that their new chat client would use the Jabber/XMPP protocol, I was really excited. Unfortunately, Google let me down this time. I haven't actually installed their IM client yet, but if it's anything like their other work, then it probably has a nice, easy to use user interface and a good feature set. However, after reading this article, I've decided that Google missed the mark this time. I'll explain why.
Instant messaging is currently highly centralized--only instead of one center it has three or four. Whenever you use one of the major instant messaging clients (AIM, ICQ, Yahoo!, MSN), your computer connects to a central server somewhere. When you send a message to your friend, the message goes to the server, and the server then sends it to your friend. Each different service has its own server and its own way of tranmitting messages (called a protocol). What this means is that if you're using AIM, you can only talk to other people using AIM, and likewise for each of the other services. If you want to talk to everyone, you have to run three or four different instant messaging clients. There are some third party programs out there that allow you to connect to and use all of these different services through one program (Miranda or Gaim, for example). But you still have to have an account on each service and the program is still performing some pretty impressive gymnastics under the hood.Jabber is an attempt to change that. The Jabber/XMPP protocol establishes a standard way for these servers to communicate with each other. It's based on XML and DNS, if you're familiar with those. With Jabber, instead of everyone connecting to the same central server, everyone can connect to any Jabber server they want. Each Jabber server is identified by domain name, just like email. So if my Jabber ID is me@mydomain.com and I send a message to you@yourdomain.com, then my message goes first to the mydomain.com server, which then sends it on to the server at yourdomain.com, which then passes the message on to you. This has many advantages. For one thing, I only have to compete with people on my domain for IDs, so there's less of this convoluted screen name business. It can also be more secure, since if I want to, I can set up my own Jabber server on a local network (for example) and messages to people on that server never leave my local network. It also means that no one company/organization/person/government/whatever controls the entire system, which has obvious ideological drawbacks.
Unfortunately, Google Talk doesn't take advantage of this capability. Sure their service uses the Jabber protocol, which is kind of cool because it means that those multiprotocol client programs that I mentioned earlier already support Google Talk, but very few people actually use those anyway. But even that small percentage of people (mostly Linux geeks) will still have to have a Google account to use the service.
The best way to understand it is to compare it with email. Imagine if you could only send email to people who used your ISP. AOL people could only send email to AOL people, Comcast people could only send email to Comcast people, students at one school could only send email to other students at that school, etc. Maybe there would be some programs out there that let you use each of these different email services through one program, but you still have to have an account with each one (which in the case of ISPs, usually costs money). Believe it or not, it actually used to be that way, until around 1991 when SMTP became widespread. SMTP provided a way for all of these email servers to communicate with each other, thus allowing everyone to email everyone. (Similarly, HTTP is basically the same thing for web pages, and a similar parallel could be drawn there.)
Wouldn't it be great if all of the major IM service providers would adopt the Jabber/XMPP protocol? Then you could choose your favorite chat client (Google Talk would probably be a good choice) and instantly talk with anyone on any of the other services. If Google had led the way and decentralized their software so that it could connect to any Jabber server instead of just the Google Server, or even if they had just set up their own massive Jabber server which would communicate normally with other Jabber servers, then very likely the others would have followed suit. If they didn't, then likely people would migrate away from them towards other services that allowed them to communicate with more of their friends. Instead, they're going to selectively create "federations" with other services. Even if Google eventually allows you to message between Google Talk, AIM, MSN, and Yahoo!, it will still be centralized, and it would still be like requiring everyone to subscribe to one of a few "big names" to send email to each other.
Instead, Google has just added one more hoop to jump through if you want to be able to instant message with everyone. You now have to have one more account and one more client (or one more backward handspring if you use a multiprotocol client) in order to be in touch with everyone. Instead of "organizing the world's information and making it universally accessible and useful", they've now made it that much more scattered and inaccessible.
Shame on you, Google.


