Google Wave - a developer's eye view
Better than pistol ammunition taste-testing
Last week, Google announced Wave, a new communication tool presumptuously described as "e-mail, if it were invented today." Now, it's a coming of age for technology companies to write a collaboration tool, put a good spit-shine demo on it, and call it a revolution. The idea is nothing new. In the 80s, we called it Lotus Notes. As of recent, we called it Microsoft Sharepoint. Today, I guess, it's Google Wave.
As developers, we've got to roll with it, even though on its face, it may seem as if there's been nothing gained insofar as making peoples' lives better. Management wants Wave. We need to integrate it with existing systems.
It's easy to complain about working with some brain-dead, proprietary API, or interfacing a some server that decided to invent its own protocol, or shape-shift our company's data into the XML Schema from Hell. But at the end of the day, hopefully, everything will work together just as that nice salesman had promised. In this regard, Google shoving its fist into the gooey, caramel-center of the enterprise collaboration market is a good thing, because when it comes to APIs, Google sells to the developer, not the managers.
When it comes time to integrate Wave into your enterprise, the job won't make you want to look for a new career in the pistol ammunition taste-testing industry.
Caught Embed With a Web Page
The easiest way to get started with integrating Google Wave into existing infrastructure is the embed API. At a high level, think of a "wave" as a collaboratively edited document. One of the keys to Google Wave is that you don't have to be running a particular program or be on a particular website to interface with these documents. You can embed the wave into any web page, and visitors can change it or participate in a conversation inside of it. Those changes and conversations are reflected anywhere else the wave is seen.
Go Go Gadget Bourbon
Google Wave provides you with a way to change the look and feel of waves. In an attempt to appear kooky and fun, Google has called these plug-ins "gadgets." This is the same way that you can extend existing Google services. Google Gadgets that run for iGoogle or OpenSocial (evidently still alive) will run in Wave as well. It's important to note that the idiom for a gadget is a small bit of functionality, not a full application. For example, you can write a gadget to pull data from your company's bug tracking system into a wave.
The interesting part of gadget development is the "playback" feature of Wave. Being a collaboration tool, it allows you to view a wave at any point during its history and play that history forward so you can see the evolution of the wave. Since a gadget is a way to extend the functionality of a wave, it needs to support this playback feature. Google makes it easy on you, allowing your gadget to submit state deltas to the server. If you follow this convention, you get playback for free, provided your gadget knows how to render itself given the state data.