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. Currently, the Wave API supports the following extensions:
Google Wave also supports Extension Installers, which bundle up Backend elements (robots and gadgets) and Frontend UI elements into an integrated package. Users may install extensions directly within the Wave client using an extension installer. Because these installers include UI elements, their presentation is ultimately implemented by the Wave client; Wave clients, in turn, must understand the extension installer specification (known as a manifest ).
Note: currently, the Google Wave client is the only supported client, and therefore the only implementor of extension installers, but third-party clients should also support extension installers in their own way, once they are built.
Whether you use robots or gadgets is not mutually exclusive. You can use them together, but they generally serve different purposes. Each extension has a specific use case, noted below:
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. |
Extension installers run on a client and can access robots and gadgets, so their behavior depends on which elements they include.
If you've created an extension, you have several ways in which you can add the extension to Wave:
Robots may be added as participants to the Wave itself. In theory, a robot can be added anywhere a (human) participant can be added. You designate a robot by its address within your Contacts address book, for example, and can open up multiple conversations with the same robot, just as you would with a human. A robot may also be added as a participant within an extension installer, described below.
For more information on robots, see the Robots Developer Guide.
Gadgets may be added to individual waves, where they share state and all participants may interact with the gadget. You can add a gadget to an individual wave by clicking the "Add Gadget" toolbar item. A gadget may also be added to a wave within an extension installer, described below.
For more information on gadgets, see the Gadgets Developer Guide.
Extension Installers may be added to individual waves, in which case all other participants on the wave will also be asked to install the extension package. An extension package may consist of gadgets and/or robots. You can add an extension installer to a wave via the Debug -> Extensions -> Add Extension Installer menu item.
For more information on extension installers, see the Extension Installers Guide.