Last week Google announced a new set of technologies called Wave at a developers conference. The announcement came in the form of a keynote demo that lasted well over an hour. It was a beast of a demo and showcased a massive project that Google has been working on for almost two years. That they kept this a secret for so long amidst the fervor for Google product development news in the blogosphere is impressive.
Casual Internet users will likely see this announcement as another neat web tool from Google, but a technical analysis of its makeup indicates that Wave is a significant paradigm shift with enormous potential. While Wave is still extremely new and many details have yet to be released, it's my sense that Wave is a major evolutionary step for Internet-based communication. Here's why.
At its heart, Wave is a new protocol in the same way that SMTP (the protocol behind email) and HTTP (the protocol behind the web) are protocols. In many ways, Wave is a logical third step after these first two ubiquitous Internet applications.
Email was an obvious early application of the underlying Internet Protocol. It allows people to communicate in the form of messages being sent back and forth from one sender to one or more recipients. Quickly, the need for central content repositories became apparent, and the web was born. The web allowed Internet users to communicate over email about documents they could all see on a web server.
It's interesting to note that the very first web browser was also an editor allowing the viewer to change the content on the server. The complexity of this feature dropped off as use of the web grew exponentially outside the walls of CERN. Web 2.0, culminating almost 20 years of web use, took great strides to make the web editable by its participants once again in the form of blogs, social networking and, of course, wikis. But the underlying technology behind all of these made true real-time communication and collaboration difficult. Enter Wave.
The Wave protocol is based on XMPP, a real-time communications protocol most notably used for instant messaging. Google Talk, the instant messaging built into GMail, is based on XMPP. The protocol is a two-way send and receive stream of XML data based on a client/server model. A client comes online and sends a message to the server to join or contribute to a conversation and the server sends out a message to all the clients with the news. Much like email, this use of XMPP is relatively stateless. It lacks the central "every one can see the living document" nature of the web and, most notably, wikis.
The Wave extension to XMPP is made up of delta messages between a server and its clients representing a single document being built by multiple contributers in sequence. Each edit of each contributor or client becomes an event in a time line maintained by the server which, over time, builds a document. As the specification explains, the document is just a conceptual model of the delta events collected from all the clients.
This method has a number of important implications. First, it's highly efficient because the entire document is not being passed between the server and its clients. When a client adds a sentence to a document, all that's communicated over the network is the sentence added and its location in the document. Second, the client/server model allows each client to build and maintain its own local representation of the document as delta messages coming in from the server, but the server can also provide the version history if reconstruction is required (for failure or to "play back" the document history) and for new clients entering the process mid-stream.
The applications of this technology are, most notably, real-time collaborative editing and real-time chat. The introductory demo of Wave shows two users editing a document with each users' edits appearing in real time on each others screens. There is no get, edit, submit... the content is communicated over the network as it is entered. The implications for chat are impressive, too. If Bob and Susy are chatting, Bob can see what Susy is typing as she types it rather than having to wait for her to finish and click Send. At first blush this seems like a trivial advance, but it's how people in the same room talk to each other... you don't have to wait for the other person to finish their sentence before you hear it. It will make a huge difference in the usability and adoption of instant messaging as a communications tool. Wave blends instant messaging effortlessly with document collaboration, combining what is currently two tools commonly used together into something that - at least behind the scenes - is entirely new.
Instant messaging never really became a major Internet standard because each service provider (AOL, MSN, Skype, etc.) created their own proprietary messaging protocols. When you check your email, you don't have to check AOL, MSN and Google separately because they all use SMTP for email - it's an open Internet standard. Though XMPP finally came along and provided an open messaging protocol, it was too late. Many Internet users don't bother with Instant Messaging because there's such confusion over who's on which network.
Google is developing the Wave protocol as an open standard. This will have tremendous implications in its adoption because any individual or company can put up a Wave server and/or build Wave client applications and extensions. In the demo, Google also promised that the lion's share of the client tools they have developed to support applications like real-time editing will also be released under open source licenses. This one decision single-handedly gives Wave the potential to be the next major ubiquitous Internet application instead of just another social web tool.
As you can probably tell, I'm very excited about Wave. As a wiki vendor, I'm drooling over the integration possibilities of this technology into wiki tools. Using this protocol in place of the traditional HTTP form post method of wiki editing will be like putting jet engines on a bicycle. I can't wait to see it in action. I will be following Wave with an eye towards wiki integration closely and will be posting what I learn here, so stay tuned.