XMPP: Catch the Wave


At the Google I/O developer conference earlier today, Google made a big splash by announcing Wave, a radical rethinking of communication over the Internet. As Tim O'Reilly noted, the Wave vision is to combine the best of different conversational media and collaboration tools, including email, IM, phone, microblogging, and file sharing.

Little noted among hoopla is the fact that "The Google Wave Federation Protocol is an open extension to XMPP core [RFC3920] protocol to allow near real-time communication between two wave servers."

Yes, underneath all these hot new collaborative technologies we find none other than XMPP, the same XML streaming protocol that has been powering the Jabber instant messaging network since 1999. Those in the know have long realized that XMPP can be used for much more than basic IM. The power of XMPP comes from the fact that in essence it is really just a way to quickly and securely deliver small pieces of structured information from one entity to another over the Internet.

Let's parse that out. XMPP is fast. XMPP is secure. XMPP is extensible.

That kind of extensibility enables folks like Google to define their own XMPP extensions, but it also means that the XMPP developer community has had 10 years to define most of the core services you might need. As Kevin Smith, Remko Tronçon, and I explore in XMPP: The Definitive Guide (just out from O'Reilly), XMPP includes encryption, strong authentication, interdomain federation, fully internationalized messaging, ubiquitous presence, contact lists, service discovery, multi-user chat, publish-subscribe, lightweight forms and workflows, multimedia negotiation, serverless messaging for ad-hoc networks, and much more. If all that isn't enough, you can define your own custom features or work with the XMPP Standards Foundation on new protocol extensions.

Despite 10 years of hard work, in many ways we're still just starting to understand what we can build with XMPP. Google itself paved the way for some of the recent innovations by launching its XMPP-based Google Talk service in the summer of 2005, including voice and video features (XMPP is used here as a control channel, not for exchanging the media traffic). Several years ago we started to see XMPP-based gaming services like Chesspark, the brains behind WuChess. Even more recently the folks at drop.io have built a real-time collaboration platform entirely on XMPP. All the while, lots of companies and open-source projects have been using XMPP to make their most cutting-edge products and services. And now Google Wave has upped the ante even further. (I'll have some further comments about Wave in future posts.)

This is a great time to get involved with XMPP. There are dozens of open-source projects that will help you get started, including a wide variety of servers, clients for every operating system and device, and libraries for just about every programming language on the planet. Our new book provides a friendly introduction that shows you how to "think in XMPP". The XMPP developer community is active on multiple fronts, from application development to interoperability testing to frequent meetups around the world (and don't miss the XMPP Summit at OSCON this summer). So catch the wave and join the conversation!

Peter Saint-Andre > Journal