Why is this federation model so important? XMPP is the equivalent for instant messaging systems as SMTP was for universal email. While non-XMPP protocols abound, and there is quite a lot of fragmentation on the instant messaging world too, the major problem is that none of the other protocols work without a centralised model. They were never thought to work that way. They always relied on the idea, promoted by Microsoft originally, that people would simply use the Instant Messenger that was pre-loaded on their OS. Apple copied the same model, of course: iChat originally only worked with Apple’s own messaging servers, which quickly were outsourced to AIM. But even Apple learned the lesson and made their IM client, iChat, compatible with XMPP very early: they recognised the idea, strange as it may sound, that even loyal Apple fans will, one day, wish to talk to non-Mac users 🙂
MSN, AIM, and Yahoo have no such qualms, since they have their own users and couldn’t care less about the rest. In the mean time, one of the largest text chat messaging systems might these days be Skype (which is also totally closed). And, of course, MySpace and Facebook, having their own large user base, launched their own messaging systems as well (fortunately, both provided APIs for them). Ironically, the first uses of XMPP were for creating instant messaging gateways. You basically just downloaded a single XMPP-based client and logged in to a Jabber server, which in turn would convert XMPP messages to any other protocol out there. This has become far less important nowadays, since IM clients have started to be multi-protocol as well (even MSN users can talk to Yahoo users and vice versa, with their respective IM clients; Apple’s iChat talks to AIM and anything XMPP-based; Miranda/Trillium for Windows can talk to almost everything out there, and AdiumX for the Mac is the undisputed king of multi-protocol, multi-user connection: it supports all messaging systems in the world except for Skype, and, well, Second Life 🙂 )
Granted, when a technology is based on a protocol, you can do these things easily. The same applies for Second Life: every day it becomes more clear that, from a purely technical point of view, Second Life is the protocol, not the service. That’s why we have countless viewers and at least three server (simulator) solutions — LL’s own, OpenSimulator, and the light-weight Simian. All can communicate with each other because they share the same protocol (at least, to a degree).
Now contrast that with the Web 2.0 social networking sites. If you’re a Facebook user and wish to send an IM (or an email) to a MySpace user, you’re out of luck (I use AdiumX, so I can chat to both Facebook and MySpace users without being logged to either website! But that’s cheating: actually I have to have an account with each social networking site for the “magic” to work). If you share a picture on Friendster, people on Netlog cannot comment on it. Sure, they can log out, register an account with Friendster, update their profiles, and comment. But there is no direct way of doing that. Web 2.0 sites, although touting their “networking” abilities as a mantra that will bring the whole world salvation from isolation, are, ironically, the most closed and isolated service models ever created — all in the name of “crushing the competition” by forcing people out of their favourite services to go to the “most popular ones”.
So what did Google do? Very simple. OpenSocial was clearly not enough, since it just addressed the “extensibility” issue of social networking websites, ie. allowing users not only to add content (text, images, videos…) but also applications, and use the same applications across social networking sites (the develop once, deploy many model). Integration of cross-site information — like, say, sharing images posted on one social site with people registered on another; adding comments; sending messages across social networking sites; etc. — was not easily covered by this. Granted, there are a lot of mashups allowing, say, Facebook status to be tweeted as well (or vice-versa). Or even cross-posting images across several sites. All this is possible and being done right now.
Google Wave, however, went all the way to create a framework where independent social networking websites are able to cross the boundaries. What this means is that you can get a Twitter feed, reply to it, and it’ll show on your Wave page — but also on Twitter. You can post pictures on one Wave-enabled social service and everybody on a different social service can comment on it. You can get emails into your Wave, and let your friends comment on your emails — or share emails with the world — and so on. You can chat via Gtalk and others can turn that chat into a microblogging stream… and get a RSS feed for it. And, of course, you do not need to be registered to Google‘s Wave. You can simply download the software, run it on your own server(s), and federate with Google — so that people logged in to Google Wave will be able to receive information from your self-hosted Wave server, and vice-versa.