Understanding Google Wave Development – Part 1

Since “Google Wave” was introduced at the Google I/O Conference in San Francisco May 27th to 28th, 2009, there has been a lot of buzz and attention surrounding the new platform. What exactly is Google Wave? According to the development team, it is the biggest upgrade to email since the introduction of the web, a type of combination between email, blog, forum comment section, instant message system, and widget board. Google Wave shows the enormous influence that Facebook is having on the future of the web – in a way, the preview looks as if the majority of Google services were integrated and remixed into an animated Facebook stream. The big differences are in the standards behind the interface: XMPP particularly allows the Wave documents to function like an instantaneous, shared whiteboard in addition to a saved multimedia document with filtered permission levels.

What is a wave?

“A wave is equal parts conversation and document. People can communicate and work together with richly formatted text, photos, videos, maps, and more.

A wave is shared. Any participant can reply anywhere in the message, edit the content and add participants at any point in the process. Then playback lets anyone rewind the wave to see who said what and when.

A wave is live. With live transmission as you type, participants on a wave can have faster conversations, see edits and interact with extensions in real-time.”

Source: http://wave.google.com/help/wave/about.html

For those that did not attend the I/O conference, the essential resource is the launch video from that day that is viewable at:

Google Wave Developer Preview at Google I/O 2009

Developing For Google Wave:

Google plans to open source much of the code behind the Google Wave platform, and one of the points confirmed is that anyone- ISPs, private groups, individuals, companies, websites, domains, will be able to operate their own Wave server based on the Wave Federation Protocols. Developers who would like to build new applications for the Wave platform should review the draft specifications and white papers available at:

The Google Wave API is intended to enable developers to embed Wave documents in standard web pages as well as to “extend” the platform by embedding widgets within a Wave itself. The Wave extensions allow for the embedding of virtually the entire archive of iGoogle widgets, and allow programmers to develop Java, Python, ActionScript, and other applications to add new functionality to a Wave. For more information on the Wave API, visit: http://code.google.com/apis/wave/

Related: http://googlewavedev.blogspot.com/2009/05/introducing-google-wave-apis-what-can.html

“On May 28th, the second day of Google I/O, we unveiled Google Wave as a developer preview. But, we’d never actually had non-Google developers use it, and we were eager to see how it’d play out… So, on the Friday after I/O, about 60 developers assembled down at Google HQ for the very first Google Wave API hackathon. After five hours of hacking and ad-hoc discussions with members of the Wave APIs team, there were a whopping 17 demos to show off. We were awed by how enthusiastically developers dove in to the APIs that day, and excited to see what they created. Their accomplishments were especially amazing as no one had even used the product prior to the hackathon.”

Source: http://googlewavedev.blogspot.com/2009/06/1-wave-sandbox-5-hours-17-awesome-demos.html



Embed API – Methods to communicate w/ server:


Sample Google Wave Embed Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Wave Embed API Example: Simple Wave</title>
<script src="http://wave-api.appspot.com/public/embed.js" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var wavePanel = new WavePanel('http://wave.google.com/a/wavesandbox.com/');
<body onload="initialize()">
<div id="waveframe" style="width: 500px; height: 100%"></div>



Further Resources:

A month after I/O, most developers who did not attend are still waiting for Google to approve sandbox access. There are a couple of good email discussion groups dedicated to working out issues related to development on the platform:

Google Wave API Group: http://groups.google.com/group/google-wave-api

Google Wave Federation Protocol Group:http://groups.google.com/group/wave-protocol

Wave Gallery: http://wave-samples-gallery.appspot.com/

PyGoWave Server also has a type of sandbox set up and some demo projects online:

Mashable: http://mashable.com/2009/05/28/google-wave-guide/

Wavety: http://wavety.com/

Drupal.org discussion: http://drupal.org/node/476438

Drupal.org module project: http://drupal.org/project/wave

Drupal.org Google Wave Group: http://groups.drupal.org/google-wave

Related Posts:

4 Responses to “Understanding Google Wave Development – Part 1”

  1. I changed/updated the embed code with the example on this page: http://code.google.com/apis/wave/embed/guide.html

    Just received wave sandbox access today, so I will post some wave embed examples when they are live.

  2. Created a wave embed in a Drupal blog based on the code above:

    First impressions:

    1. Google Wave JavaScript takes a long time to load
    2. added the script manually to page.tpl.php in header & body tag – only used 1 wave id for the whole site, as I haven’t developed a way to set the wave ids manually on a per page basis
    3. using iframes = bad news for css styling
    4. editing the wave “blips” and replying from the blog page – working fine, but no animated wave playback in the embed
    5. Error message: “Everything’s shiny, Cap’n. Not to fret!” Unfortunately, you’ll need to refresh.
    Wanna tell Dr. Wave what happened?”

    Yet to be tested with multiple users, open questions on how to add particpants to the wave from the remote site.

  3. To allow all users access to your wave, add the special address public@a.gwave.com as a participant of the wave.