This article provides a general overview of Google Wave that should serve to familiarize you with this new and exciting platform. Keep in mind that Google Wave represents a dynamic technology that has not matured yet, so the look and feel may change in the coming months (maybe even in the coming days!).
This excerpt is from Google Wave: Up and Running. Learn how to build applications with Google Wave, the exciting real-time communication and collaboration platform. This new technology unifies email, instant messaging (IM), wiki, and social networking functions in one integrated interface. With this book, you'll quickly learn how to use Google Wave's APIs to extend the platform and customize its functions and display.
Simply stated, Google Wave is a real-time communication and collaboration platform that incorporates several types of web technologies, including email, instant messaging (IM), wiki, online documents, and gadgets. In more technical terms, Google Wave is a platform based on hosted XML documents (called waves) supporting concurrent modifications and low-latency updates.1
Google Wave itself represents a new approach aimed at improving communication and collaboration through the use of a combination of established and emerging web technologies. Google generally describes Google Wave as a platform, and in a broader context, as a set of three interdependent layers:
The Google Wave product is the web application people use to access and edit waves. It's an HTML 5 application, built on Google Web Toolkit. It includes a rich text editor and other functions like desktop drag-and-drop (which, for example, lets you drag a set of photos right into a wave).2 Most people using Google Wave during the public preview will be accessing the product layer. Throughout the remainder of the article I will refer to this product as the Google Wave Client.
Google Wave can also be considered a platform with a rich set of open APIs that allow developers to embed waves in other web services, and to build new extensions that work inside waves.2
The Google Wave protocol is the underlying format for storing and the means of sharing waves, and includes the “live” concurrency control, which allows edits to be reflected instantly across users and services. The protocol is designed for open federation, such that anyone's Wave services can interoperate with each other and with the Google Wave service. To encourage adoption of the protocol, Google has made the code behind Google Wave open source.2
It's important to understand the significance of these three layers. Most people perceive Google Wave in a simplistic way, primarily thinking of Google Wave as a web application.
The reference to Google Wave as a "platform" in general terms (i.e., not in the technical definition of a platform, as stated above) is based more on the lack of other words that can adequately describe something as broad and new as Google Wave. Thus when someone references Google Wave, the connotation may be different, depending on the the user and audience.
The combination of these three layers represents a fairly comprehensive offering that is readily accessible to a large number of users with varying degrees of technical proficiency. Figure 1-2 shows how each layer is represented and the likely audience that will utilize each layer.
It's important to note that Google Wave is the branded name that Google uses to describe the product, platform, and protocol it has developed. However, because the platform layer is externally accessible and the protocol layer is open source, it is likely that third parties will offer products and tools that use names other than "wave" in order to establish new brands and market differentiation. In essence, these third parties will act as wave providers. Keep this in mind as Google Wave gains in popularity and different types of wave providers potentially emerge.
Dion Hinchcliffe describes Google Wave as a collaboration and communication mashup that "consists of a dynamic mix of conversation models and highly interactive document creation via the browser." This is an important observation, because the Google Wave client follows a common trend for new applications to operate completely within the browser.
Figure 1-3 shows how Google Wave displays various types of information using "panes" in a single-page user interface, including an inbox, contacts, navigation, and threaded conversation.
The Google Wave Client interface represents Google's preferred approach for managing the user experience as an application in the web browser. However, Google Wave's APIs and its open source elements (including the network protocol) provide an opportunity for third parties to develop their own user interfaces, including desktop, mobile, and browser-based applications (much in the same way that there are numerous Twitter applications out there).
You can view this the same way as email and the ways in which it is accessed and used via a variety of applications (e.g., I use both Mozilla's Thunderbird desktop application and my browser to access my GMail account, depending on where I am and which computer I am using). It's likely that we will see different desktop and browser applications used to access waves from different wave providers as developers hone their skills with the Google Wave APIs and the network protocol gains in popularity.
Several common terms are used to describe elements relevant to Google Wave. As you become more familiar with the terminology, keep in mind that there is a hierarchy for many core terms; thus, there is a logical line of descendence that you can follow. Some of the more common terms with which you should be familiar include waves, wavelets, blips, robots, and gadgets (see Figure 1-3).
In general terms, a wave is a container for an enhanced set of threaded conversations that is viewable as a document, consisting of one or more participants (which may include both human participants and robots). The wave is a dynamic entity that contains state and stores historical information. A wave is a living thing, and it is modified in real-time based on participant's actions. A wave contains one or more wavelets defined below.3
A wavelet is a threaded conversation that is spawned within a wave. Wavelets serve as the container for one or more messages, known as blips. The wavelet is the basic unit of access control for data in a particular wave. All participants on a wavelet have read/write access to content within the wavelet. Additionally, all events that occur within the Google Wave APIs operate at the wavelet level or lower.3
A blip is the basic unit of conversation and consists of a single message that appears in a wavelet. Blips may either be drafts or published (by clicking "Done" within the Wave client). Blips manage their content through their document, defined below. Blips may also have other blips as children, forming a blip hierarchy. Each wavelet always consists of at least one root blip.3
Each wave has a set of one or more participants. Participants are either humans or robots (see Robots below) that actively engage and interact in a wave. Participants are added to a wave by existing participants.3
A document is the content attached to a blip, and it consists of XML which can be retrieved, modified or added via the API. Generally, you manage the document through convenience methods rather than through direct manipulation of the XML data structure.3 When using documents in this context, the reference is more to an abstract set of content rather than a physical document.
In addition to understanding some of the common terminology used in Google Wave, it's also worthwhile to review some of the technologies that are incorporated into Google Wave.
Google Wave incorporates some of the features and functionality that make email so valuable, including message archiving, attachments, single or multiple recipients, and rich text editing.
Google Wave includes IM-like functionality by allowing users to exchange short messages and files with one or more users in real time, but it's threaded messaging and archiving functionality does not require that all participants be online at the same time.
In similar fashion to wikis, Google Wave allows users to edit threaded conversations (regardless of whether the content being edited was originally created by that user) in a wiki-like fashion.
Popular online document "suites" such as Google's own Google Docs and Zoho.com's productivity applications are emerging as popular (free or low cost) alternatives to expensive desktop software. Google Wave incorporates some of the functionality found in Google Docs within the Google Wave user interface.
Google Wave includes open APIs that make it relatively simple for developers to extend and customize features and functionality. Additionally, these open APIs enable the integration of Google Wave with third party services, including a variety of other communication, collaboration, and social network applications and services.
At present the Google Wave APIs can be used to develop wave extensions and to embedded waves in other web pages. Extensions are used to enhance the functionality of a wave. Currently, Google Wave provides access to two types of extensions: robots and gadgets.
Robots are programmatically controlled participants that interact with other participants (human and/or robot) in a wave. Robots typically reside in the cloud (e.g., Google App Engine) and operationally they can interact with and respond to actions that occur in a wave.
Robots have access to a majority of the content in a wave, and robots can create, edit, and delete blips in the same way as other participants. You can think of robots as having the same access and capabilities as human participants in a wave, albeit there are obviously differences in terms of how robots can interpret the content in a wave. In general, robots can perform the following actions:4
Robots function as automated participants that consistently process and respond to information and actions in a wave, and there are various ways in which robots can enhance the communication and collaboration capabilities of Google Wave. For example, robots can be used to automatically translate blips into other languages, re-broadcast waves on other services (e.g., a project management app), or transfer information from other services into waves (e.g., add blips with breaking news on a specific topic).
Robots can be added as contacts to Google Wave through their wave address, which is based on their App Engine application name (e.g., myApplication@appspot.com). A new extension installer was also recently made available to install robots (see extension installers below for more information). An extension gallery page currently lists several robots developed by Google and third party developers.
After a robot is added as a contact, the robot can be added to a wave for further interaction as a participant. In Figure 1-5, I've added the Stocky robot, which provides real-time stock quotes.
Gadgets essentially are mini-applications that provide very specific functionality, which often is based on a subset of functionality available in another web application. Gadgets are implemented in the client (within the browser), although a gadget may process and exchange information with a server.
Gadgets used in Google Wave are similar to gadgets used in other Google services and applications, including those used in personalized versions of the Google home page (i.e., iGoogle) and gadgets used in social networks like Orkut. In fact, because Google Wave gadgets and other Google gadgets share the same structure, gadgets developed for other Google services and applications can be used in Google Wave. Some of the more popular gadgets are games (e.g., a chess game) and utilities (e.g., Google Maps). Figure 1-6 shows a sample wave I created with Checky the Checklist Gadget.
Gadgets can be added using an extension installer, a new feature that alows users to easily add gadgets and robots to a wave.
Extension installers currently allow you to add various types of gadgets to the conversation pane toolbar through an easy installation process. An Extensions Gallery wave (see Figure 1-7) gives users access to several gadgets that are represented by puzzle pieces. Clicking on the "Install" button on an extension installer will add the gadget to the toolbar, allowing you to use the gadget on any subsequent waves that you create.
Note that Google Wave currently does not support OpenSocial gadgets, although it does include similar social network concepts like owner, viewer, and friends.
You can follow these instructions for more details on using extension installers. Note that extension installers can also be used for adding robots to a wave, although this functionality has not yet been fully implemented.
Gadgets that are not bundled into extension installers, can also be added as external gadgets by clicking on the gadget button in the toolbar of the conversation pane. Once you click on the button, a pop-up window displays a text input box where you can paste the URL for a gadget. A gadget gallery page provides a list of gadgets developed by Google and third party developers. These gadgets can be added by copying and pasting the URL to the gadget's specification file (an XML file) into the text input box in the pop-up window. Additional instructions on adding external gadgets can be found here.
While extensions enhance the features and functionality of a wave, embedded waves integrate communication and collaboration functionality with web pages. In similar fashion to loading a gadget into Google Wave, a wave can be loaded as a mini application into other web pages.
One way to think about the difference between extensions and embedded waves is in terms of how each type of element reaches users (see Figure 1-8). Robots and gadgets reach users through a wave, while embedded waves reach users through web-based applications and web pages. In other words, extensions rely on waves as containers, and embedded waves rely on applications and web pages as containers.
Google is not the only entity that can host and manage waves. Part of Google's strategy for the widespread adoption of Google Wave includes the release of an open source network protocol for sharing waves among different wave providers using a federated approach. Essentially this means that in much the same way that anyone can setup an email server, just about anyone can set up a server that utilizes the Google Wave Federation Protocol and host waves that include internal wavelets as well as external wavelets.
You can easily extrapolate that a Google Wave ecosystem with numerous wave providers will emerge. In similar fashion to say web-based email providers, standard protocols and formats will enable and facilitate the exchange of information between and within service providers (including Google).
Given Google's popularity and large market search in the search engine space, it is only natural that the Google Wave Client includes various types of search. Users are able to search waves in their wave inbox, contacts can be searched, a Google search gadget is available on every wave (and the gadget allows for linking to search results), and waves can be tagged with keywords to facilitate future searches. Not only is search incorporated into various parts of the client, but searches performed on a user's inbox can be saved as filters (in similar fashion to GMail).
Although search may come across as a subtle feature in the Google Wave Client, it actually has significant implications for improving collaboration and streamlining the user workflow. The incorporation of search means that users can more readily access information relevant to their immediate needs, rather than paging through various to hunt down information. In addition, the ability to rely on existing, pre-configured filters on waves also means that information can be aggregated by content, thereby allowing users to establish logical groupings of information that are easily accessed.
A contextually-rich threaded conversation model is one of the key elements that makes communicating with Google Wave so valuable. A threaded conversation is the visual representation of a related set of messages that includes an initial message and a set of corresponding replies that form part of a tree of messages (see Figure 1-9). Related messages are a thread in a conversation, and a thread itself can include several other threads in a parent-child type of hierarchy.
Online bulletin boards, which reigned supreme in what seems like a web lifetime ago, use this type of threaded conversation model, allowing users to reply to each other's messages to establish this type of message hierarchy. IM also uses this type of threaded approach, albeit messages tend to be constrained to a single thread among all participants. So even if users are not necessarily familiar with the technicalities of threaded conversations, they are likely familiar with this type of conversation model. The fact that the threaded conversation model is not new is actually a good thing, as users are able to adopt and assimilate this type of conversation in Google Wave.
Threaded conversations in Google Wave offer a high level of interaction, allowing participants to iteratively exchange content-rich blips in both real time and a delayed time. This information, along with other elements added to a wave (such as gadgets or multimedia), is archived within a wave, making a conversation centrally accessible and allowing participants to see who replied to whom and when they replied (see Figure 1-10). As a result, conversations in Google Wave achieve the persistence of a document or email, while at the same time retaining the real-time capabilities of IM. This also means that a wave can be used for short communication bursts that typically require the exchange of only a few replies, or it can be used for long conversations that include multiple threads among and within participants.
Participants can reply to any blip in a thread regardless of its chronological sequence, and a reply in fact can be added to a specific part of a blip (e.g., a reply to the second sentence of a paragraph), thereby creating a segmented thread that is not necessarily sequential in order. Participants also can edit a blip in a thread in wiki-like fashion, including blips created by other users. The great thing about this fusion of multi-threaded blips and editing is that outdated information can be updated, errors can be corrected, and blips can be amended to include additional information.
The combination of highly interactive, real-time communication and readily-accessible archived responses is one of Google Wave's key benefits, and it is one of the advantages that Google Wave has over email and IM, both of which independently do not offer that type of functionality or accessibility. Additionally, the ability for participants to retroactively edit and amend blips also gives Google Wave a further advantage over email and IM, as messages sent via either email or IM are static once transmitted to recipients.
Also noteworthy is the ability for participants to access an entire conversation, regardless of when they joined a wave. In email or IM, participants are typically included at the outset of a conversation. Otherwise, new participants can be added in email threads after the fact, but these new participants may not have the ability to see all of the threads in an email (or if they can, they usually have to tediously review a long set of replies back and forth among participants).
Just to be clear, threaded conversations are an important part of a wave, but waves are more than just threaded conversations.
As you will find in the next section, conversations in a wave form part of an online document that integrates various elements, including threaded conversations.
Whether we realize it or not, whenever we create a wave, we are in fact creating a new document. In technical terms, a wave is actually an XML document that is hosted on a wave server. While I won't get too much into the nitty-gritty technical details of a wave, the key thing to understand here is that a conversation in a wave is not ephemeral, nor is it a conversation pieced together from separate parts (like email). Whenever a new blip is added to a wave, that blip becomes part of a dynamic document that can subsequently be used to display all or part of a conversation.
In not-so-technical terms, the visual representation of a wave in the Google Wave client also serves as a new type of online document. This document includes elements typically found in other types of documents such as rich text editors and spreadsheets, and it also combines social interaction among participants. In other words, a wave represents a super, multi-dimensional document that combines a lot of valuable features that people regularly use on the web (see Figure 1-11).
So, whenever participants communicate with each other via Google Wave, their actions are captured on the backend in a document structure and displayed on the front-end as a set of inter-related conversation threads that include rich content.
This is an important distinction that can be easily missed if the Google Wave Client (or any other wave client for that matter) is perceived more as an IM console rather than an online document viewer (of sorts). This is perhaps where the wiki metaphor assists in illustrating that the information available to participants is more than just a static, sequential threaded conversation.
If you received one of the 100,000 or so invitations to the public preview of Google Wave and you're looking to connect with other users, you can search your inbox using
with:public to find various waves that are publicly accessible. These waves provide a good way to build up your contacts if you realize that you don't have anyone else with whom you can wave after you receive your invite. You can also save a search for your inbox using
in:inbox to:email@example.com to filter down waves that are only addressed to you.5
Some of the initial reactions to the wiki-like ability to edit information in a wave include concern about the ability for participants to modify each other's blips. This is a valid concern, in particular as it relates to conversations that may focus on sensitive information or conversations in which participants may have differences of opinion. Ultimately, the changes made to a wave need to be trackable, in order to ascertain how information was added or modified.
If you are familiar with some of the more popular wiki platforms, such as WikiMedia (which powers Wikipedia), you likely are aware that the revision history for a given page can be reviewed in order to see who made what changes and when those changes were made. This functionality ensures that authors that make contributions are accountable for changes they have made to other author's content through a transparent type of peer review.
Google Wave incorporates this notion of peer review and revision history, but with a twist: participants using the Google Wave Client can utilize a playback feature that literally animates a wave, recreating its structure and content step by step (see Figure 1-12).
One of Google's strengths is that its web applications are intuitive and offer varying levels of complexity, depending on a user's technical proficiency. Google's minimalist style and design sense have made their way into the Google Wave Client user interface, allowing users to easily get on a wave, become participants, and communicate and collaborate with others.
Countless studies on user experience all show the same thing: web sites and web applications need to be speedy in order to captivate users. Google Wave is surprisingly fast, especially considering some of the complex operations that are occurring in the background (on both the client and the server).
IM and micro-blogging services such as Twitter have become popular because they allow users to have short and sweet conversation in real-time (or near real-time). The web is quickly moving towards all kinds of real-time functionality, and Google Wave's ability for real-time communication makes it more appealing for a user base that is steadily growing accustomed to real-time gratification.
Despite its new terminology and subtle nuances, much of google Wave's functionality is already familiar to people that already use email, IM, wikis, online docs, and gadgets. Subsequently, the functionality learning curve for new users is quite small (and gradual).
Users can take advantage of robots and gadgets to improve their conversations in a variety of ways. The utility and usability of Google Wave will improve as developers release additional Google Wave extensions catered for specific use cases (e.g., an event planning gadget for a non-profit association).
Google Wave's extensibility and openness allow for a high degree of integration with other services and platforms on the web. This means that Google Wave can be further enhanced by adding features and content from third parties and vice versa.
It can be argued that one of the barriers to user adoption is lack of familiarity with a product or service and relatively low brand recognition. Google and its products are well known and it has great brand recognition. While there may be some skeptics or contrarians out there, it is likely that the Google's massive user base will be more willing to try out Google Wave.
The web is a strange place in many ways, and it is difficult to predict what will become of emerging platforms such as Google Wave. Google's take on it is that Google Wave will evolve and morph quite rapidly as an increasing number of people start to use the product, and as Google's own development team and external developers continue to extend the platform and protocol. Assuming that this type of widespread adoption comes to fruition, it is likely that Google Wave will steadily build momentum, at least enough momentum to make one or more of its layers viable.
Google Wave is exciting and quite powerful indeed, but let's not get carried away too quickly. Is it likely that Google Wave will replace email or IM (both of which have been around for a while and both of which have massive user bases)? While it's impossible to answer that question with certainty, it is possible to state that Google Wave likely could displace some of the use of email and IM for communication and collaboration. It's also possible that Google Wave could serve in a complementary way with email and IM, as part of a user's day-to-day communication and collaboration toolkit.
Ultimately, if Google Wave manages to become the predominant communications protocol, then it is likely that over time it will supplant some of the currently popular protocols such as email and IM. Subsequently, waves would become a de facto standard for communication and collaboration, at least until someone else comes out with a new and improved way of doing things.
Although Google has not explicitly indicated that Google Wave, as either a product or platform, will compete with third party social networks, such as Facebook and MySpace, there is a good deal of opportunity for Google Wave to overlap with social networks. The implications of this overlap are twofold.
First, Google Wave, as a product, does include some social networking aspects. There is potential for Google Wave to evolve and become a new type of social network that attracts users away from other social networks. Based on the preliminary feature set and functionality offered by the Google Wave Client and APIs, this is more likely to occur in the long term, as currently Google Wave is more of a communication and collaboration tool.
Second, Google Wave's overall extensibility and accessibility mean that social networks can use the platform to enhance their own offerings. Google already has demonstrated that Google Wave can easily be integrated with Orkut, Google's own social network site. Social networks can use the Google Wave APIs to integrate their own services with Google Wave, thereby enabling these third parties to provide their users with access to Google Wave. Additionally, the ability to leverage the federated protocol means that social networks will be able to act as wave providers, thereby gaining the ability to offer users the opportunity to participate in waves from other providers (including Google). Taking these two implications into account, it's likely that Google Wave will have an impact on social networks in one way or another.
There is no doubt that Google will act quickly to incorporate Google Wave with its other web applications and platforms. Google Wave's integration capabilities with some of Google's popular offerings, including Blogger, Orkut, and Google Docs was showcased during the initial demonstration at the I/O conference.
Google will continue to use its new platform to provide value added functionality and features to many of its popular applications and platforms, while at the same time using these same applications and platforms to market Google Wave to a massive and diverse user base. This type of integration and visibility means that Google will be able to leverage existing resources and users to potentially accelerate the adoption of Google Wave.
If you enjoyed this excerpt, buy a copy of Google Wave: Up and Running.
Copyright © 2009 O'Reilly Media, Inc.