(Apparently, I copied stpeter's blog post title...)
A couple of weeks ago, Google introduced Wave, their new not-yet-a-product (to be unveiled later this year) that integrates chat, email, wikis, and the kitchen sink. Their demo video was very impressive, I must say – those guys know how to put together a demo, and they know their audience. Thumbs up on their Initech “client”. Here are some of my thoughts on Google Wave, from a technical/protocol stand point.
Open Source, Open Protocol
Google will be releasing their implementation under an open source license. Not only that, but their protocol will be open. That is probably the biggest thing about it. Google gets it. Near the end of the video, Lars says (paraphrased) that email is successful because the protocol is open, and anyone can communicate with anyone else. They want this to be the next email. No more MSN/ICQ/AIM/Skype/Yahoo! incompatible instant messaging networks. Jabber/XMPP attempted to take over the world of instant messaging by being an open protocol where everyone can run their own service, but despite gaining ground in internal communications in corporations, it hasn't seemed to have gained much ground in the public space (other than Google Talk, and to a lesser extent, Live Journal). Google Wave may be revolutionary enough to get people to switch. Maybe...
XMPP-based
And, on the topic of XMPP, the Wave protocol is based on XMPP, which means that a lot of the underlying framework is already there for Wave; there are many different XMPP servers out there already. How easy it will be to tack Wave on top of the servers remains to be seen. It may be (it probably is) as easy as writing an Wave component that communicates to every XMPP server via XEP-0114, or the newer (experimental) XEP-0225, which has the additional benefit that the Wave server could live on a different machine from the XMPP server. (Of course, then my Wave address would be [email protected] instead of [email protected])
Being based on XMPP makes you wonder how it will interact with other parts of XMPP. Will it completely replace instant messaging and conferences? (That seems to be one of the goals of Google Wave, but will it happen for real?) Will it replace pubsub? (I think that pubsub still works better in some situations than Wave, but then again, pubsub hasn't seemed to have caught on very much yet.)
Simple protocol
Looking briefly at the protocol itself, there is nothing terribly surprising to anyone who has thought about how to implement collaborative editing. However, they are combining multiple ideas together, which gives it power. There are a few key concepts that it uses. One server has to be the “authoritative” server, and none of the clients changes their internal state until it gets a confirmation from the server. Clients send change instructions to the server. The one key concept that was novel to me was that “wavelets” (sub-waves) could be owned by different servers than the master wave.
The protocol is also simple on the client end, and more complicated on the server end, which coincides with the Jabber philosophy.
One downside to the protocol is that each wave (and each wavelet) has a single point of failure – if the authoritative server goes down, then the wave(let) can't be edited. However, I believe that this is pretty much unavoidable for this type of functionality. (This might be a good research topic.)
Persistence
However, one related consequence is that each server is pretty much obligated to store history for every wave that it owns. In contrast with XMPP chats, where once a message is sent, a server can forget about it, a Wave server has to keep its copy around indefinitely. Again, this is probably unavoidable for this type of functionality.
Security
I haven't seen much in regards to security. For instance, there seems to be nothing to prevent wave-spam (other than XEP-0016, XEP-0159, and XEP-0161). Perhaps this was intentional, and they want to rely on the standard XMPP extensions (which would be a good thing). In my cursory glance at the protocol, I also did not notice anything about controlling access to your waves, such as allowing invitees to only read a wave, or to only add new sub-nodes, or to disallow sub-nodes. It could be that I just missed it, though.
Conclusion
With all this said, the protocol specification that they have published is just a draft, and their service is not publicly accessible yet (though apparently the lucky folks who were at Google IO got test accounts). It is definitely an interesting technology, and could have huge effects. But for now, we'll have to wait and see what happens.
Related links
Several blog posts from the XMPP community:
Google Wave was announced on the same day as, and overshadowed, the Google Talk Gadgets API. It's not as sexy as Google Wave, but Moishe should still be congratulated on his effort.
