Google Code offered in: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Learn about the Google Wave Federation Protocol and get involved
Wave extensions are a way to augment the functionality of waves and the wave client, and they often involve some combination of robots and gadgets.
To use an extension, a user must first install it by interacting with an extension installer in a wave. The installer gives information about the extension so the user can decide whether to install it:
An extension can decorate the client in various ways, like by adding buttons to the editing toolbar or items to the dropdown menu, and the user can trigger the extension by clicking the toolbar button or menu item.
For example, the "Waffle" extension shown above adds a button to the editing toolbar, and when the user clicks that button, a Waffle gadget is inserted in the wave at the current position:
Extensions are described using an XML format called an Extension Installer Manifest. To find out how to write an installer manifest, read the Developer Guide.
As mentioned above, extensions often involve adding a robot or a gadget. Those extension mechanisms are described here, and contrasted in more detail below:
When creating an extension, you often start by deciding whether you are writing a robot, a gadget, or some combination of the two. You can use them together, but they generally serve different purposes:
The following table summarizes the differences between the various extension options:
| Robot | Gadget |
|---|---|
| Runs on application servers (currently AppEngine) and interacts with the wave over a protocol. | Runs within the wave client itself. |
| Each robot may instantiate at most one instance per wave. Remember that a robot is like a participant on a wave, so each participant/robot is a unique instance, but a wave can have many participants/robots. | Each gadget may have multiple instances per wave, one for each participant interacting with the gadget. |
| Robots may modify a wave and perform the same operations as a human participant. | Gadgets are not able to modify a wave, and have limited visibility into the wave. A gadget is only able to detect changes in the wave's participants. |
| Robots can modify a gadget. | Gadgets have no way to know that a robot exists, and thus are not able to modify a robot. |