Google Wave

By victoriak

Went to theĀ Google Wave API Day at theĀ Sydney Googleplex last Friday.

The developer preview from this years’ Google I/O is quite extensive in explaining the features and functionality of Google Wave. At one hour 20 minutes running time it may require a significant chunk of free time to sit down and watch it, but the presentation is thorough in its explanation of Google Wave and well worth a watch.

For those that -really- don’t have the time to sit down and watch a presentation on impressionable new technologies, there is a 10-minute ‘abbreviated’ version also available.

Finally, for those that don’t work in the IT industry, there is a ‘Made Simple‘ video made by a fan.

There is also a rather extensive background and explanation available on Wikipedia for both Google Wave and the Wave Federation Protocol.

Essentially, “Google Wave” comprises of two things; the front-end client “Google Wave” and the “Federation” protocol.

To grasp the concept of separating the two, think of how “Gmail” relates to Email as a whole.

i.e. Email has many providers, and for you to send an email from one provider to another, they must conform to a set of protocols. Otherwise you wouldn’t be able to send an email from your personal email account hosted with your ISP to all the various accounts of your friends and family (who may have accounts with Microsoft, Yahoo, Google, etc).

So as “Gmail” is merely an interface to accessing your email (albeit a very impressive one), “Google Wave” is merely an interface to accessing your “Wave” account (albeit a very impressive interface).

As for “Federation” (and how a “Wave” server operates) - an explanation once given to me by one of the Federation developers was “It’s basically just a collaborative XML document editing system”. Simple, really!

To break that down; what that means is that multiple participants (note: a ‘participant’ does not necessarily have to be a person… but we’ll get to that later) are able to edit a document all at the same time, in real time. Better yet, the protocol specifies that the servers shall handle any conflicts of changes seamlessly. This is done with of “Operational Transforms“; “Operational transformation (OT) is a technology for supporting a range of collaboration functionalities in advanced groupware systems.” (a complex piece of mathematical modelling).

The core of “Federation” though is actually not just allowing multiple participants on the one Wave server to concurrently edit a document, but multiple participants -across multiple Wave servers- to concurrently edit a document in real time.

The way that “Google Wave” - Google’s implementation of the protocol which they have proposed - presents itself is a communications platform.

Visually, it could be passed off as an interface to a standard email system. Folders in the top left, Contacts in the bottom left, a list of “Waves” in the middle, and the ability to view any given Wave on the right.

As you create a new “Wave” you can type text into a box at the top of the Wave. You can then add people to the Wave, which will allow them to see the contents of the Wave. As any participant of the Wave adds content to the Wave, the other participants of the Wave can see the content being added in real time. For example, if a participant begins typing a sentence then the other participants will actually see the characters appear on their screen as they are being typed.

If instead of a single document you feel more comfortable with a series of boxes - similar in appearance to an instant messaging application - you can create a new “Blip” (the name for what is represented by the editable boxes).

As a participant contributes to a Blip, their name is added to the Blip label, signifying that the Blip has multiple contributors in a comma-delimited list. Their cursor is also displayed on the other participants screen, allowing everybody to see where any given person is currently typing.

This diagram is one of the best ever to explain how things work together.” - Google Federation developer

As participants are added to the Wave they can see the entire content of the Wave since it was created. Another advantage in the design of the Wave protocol is that it allows participants to not only see what is already in the wave but also what has been said and communicated in the wave. This is done with the “Playback” feature, which allows the participant to step through the changes in the document (including edits, updates, or changes).

I previously referred to the choice of the word ‘participant’ being significant. This is because a participant does not necessarily have to be a person.

One of the top priorities of the Google Wave project has been to open the API to developers as soon as possible. This is the reasoning behind having a “sandbox” server as well as multiple developer days around the world.

Other than retrieving the source code for a Wave server/client (of which “something will be available at some point in the near future” seems to be the current official standpoint), developers have the ability to create “Gadgets”, “Robots” and embed waves on external websites.

“Embedding” a Wave on an external site has many possibilities, the primary being that you can put a Wave on a site in the same way that you may add a ‘comment-box’ to a page, or even photos to a blog (as demonstrated in the keynote at Google I/O).

“Gadgets” are essentially client-side visual interactions which allow all the participants of a wave to interact with them concurrently. A typical use for this would be a simple game (such as chess, as is one of the demonstration Gadgets available).

When a developer creates a “Robot” and adds it to a wave, it is considered a ‘participant’ - that is, it can actually modify the wave itself. Modifications from a Robot appear the same way as any other participant, having its name displayed on a Blip as a contributor towards the Blip’s content.

Robots are currently limited to being hosted on Google App Engine and are written in either Java or Python, whereas Gadgets can be hosted anywhere and are written in JavaScript.

A comparison of Gadgets and Robots can be found at the “Extensions Overview” page on Google Code.

Various exciting possibilities are immediately apparent with Google Wave.

The first that came to mind was the opportunity for collaborative note-taking during presentations (whether in a board presentation, a project meeting, or a university lecture). I personally took advantage of this while taking notes in a single Wave with friends during the presentations at the Google Wave API day in Sydney.

The other point that many people are making is the interest in Wave for education. Even with collaborative note taking aside, one possibility explained to me was group project amongst school students which could have been done in Wave. With the “playback” feature, the teacher could actually see which student contributed what content to the document, as well as the students all working on the single document at the same time.

The ability to embed a Wave into external sites allows for many possibilities for adding rich user generated content on your site. Additionally, your users can use a Wave server which runs on your own web-site which “Federates” with other Wave servers across the internet (such as Google Wave). A user may use their “Google Wave” account and submit comments or pictures through to the “Joe Bloggs Wave” server which displays on Joe’s website, for example.

Tags: , , ,