Friday, July 24, 2009

Google Wave: a compact technical overview

A Wave is, technically speaking, an envelope containing a discussion thread consisting of Wavelets. A Wavelet is a multimedia message. Wavelets can be assigned to discussion participants. At any point in the discussion, any participant can reply anywhere in the Wave, edit content and add participants to the discussion. Also, the edit history of a Wave is stored and can be played back. See my post for a demo video.

Architecture
From an architectural point of view, Google Wave is a sort of federated open messaging system in which Wave discussion threads are stored as XML documents serverside. A provider on which a Wave or Wavelet is created is responsible for managing that Wave or Wavelet, taking care of storage, processing and concurrency control.

Wave providers
Wave providers manage:
1. Waves across providers
2. Communication with Wave clients

A Wave provider is responsible both for updates on Waves, Wavelets and userdata of its own users. Additionally, a provider is responsible for securely sharing update operations with the Wave providers of all the Wavelet participants. User data is, however, not shared between providers.

Each provider maintains it's own copies of the Wavelets; providers distribute only Wave -, Wavelet update operations and updates operations on participants. It is done using the Wave Federation Protocol (an extension to the XMPP Extensible Messaging and Presence Protocol). Using consecutive version numbers in Wavelets ensures that providers can assemble complete Waves and put Wavelets in the correct order.

A Wave provider supports a Wave service on one or more servers.

Wave participants
An individual enduser, group or robot that participates in a Wave is identified by a Wave address that can be compared with an e-mail address (name @ domain, e.g. HansR@ontheWeb). Waves and Wavelets also be identified by a unique id and a domain address. Waves and Wavelets that originate from a domain must be hosted and maintainted by that very domain.

A Wave provider serves, through its servers, views to its local (domain) participants.

Wave view
Each users has a personal view for a wave based on access rights and user related parameters on Waves and Wavelets (e.g. show whether a particular user has read a certain Wavelet or not).




Wavelet contents
A Wavelet can contain any number of documents. A document consists of an XML document and annotations (e.g. for text formatting, spelling suggestions and hyper-links). Participants can perform operations on documents like updating -, inserting -, deleting - and annotate document components.

Programming Waves
Another nice thing is that Google Wave is open source based and extensible. That means that you can adapt it to the needs of your own organisation and you can extend functionality by developing extensions based on API's. This will, naturally, also be done by third-parties.

There are roughly two ways to use Wave:
1. Embedding Wave in your webapp, essentially create an IFRAME that you communicate with
2. Entending Wave functionality

Want to read more?
Here are some links I used for my Blog:

Generic overviews:
Google wave in short on Wikipedia
About Google Wave

Portals and communities:
The Official Google wave website, featuring the famous preview video
Homepage for the Google Wave Federation Protocol
Google Wave sandbox website
Google Wave APIs Media Gallery

Architecture:
Google Wave Federation Architecture
Google Wave Data Model and Client-Server Protocol
Homepage for the Google Wave Federation Protocol
Google Wave Operational Transformation
Google Wave Federation Protocol Over XMPP
Extensible Messaging and Presence Protocol

Development:
Understanding Google Wave
Google Wave API's
Google Wave API
Google Wave Labs
Google Wave Developer Blog
Programming with and for Google Wave (video)

Demo's and samples:
Google Wave Samples Gallery

Do it yourself?
If you want to gain some hands-on experience with Google Wave, you can subscribe here for a sandbox account. The official Google Wave sandbox site can be found here.

Labels:

0 Comments:

Post a Comment

<< Home