Hi everyone,
Leading up to extending the Google Wave preview beyond developers (on
September 30th), we wanted to provide some more specific guidance
about the things we're working on with the Google Wave APIs. We're
working hard to balance stability and reliability of the system with
adding new API features and fixing the existing bugs.
As a brief review, here are some recent things we've done related to
the APIs:
* Improved the extension manifest file
* Made it easy to create extension installers (the "puzzle piece"
wave). From the debug menu, simply select "Add Extension Installer"
* Open sourced the Java Robots API
* Implemented Context for robots
* Added a hover menu to gadgets
* Append content to document with simple HTML
* Initial robot to gadget communication (though it still needs some
work!)
We're excited by the early developments we've seen thus far, and look
forward to getting more feedback on the existing APIs and the roadmap
below.
- - -
Douwe
Google Wave API Tech Lead
*Extensions*
Design good flow for adding extensions, which includes:
- Enabling users to easily discover extension installers
- Browsing experience for insert gadgets and robots from a gallery
- Enabling user management of their installed extensions (& easily de-
install)
- Stretch goal: Expand the extension system with more hooks and
actions.
The goal, in the short term, is to make it easier for a given
extension to hook into conversations without being actively added to
wave. For example, right now you can insert a YouTube gadget from a
link to a YouTube video. We'll open it up to let an extension trigger
on a regular expression over any link, so you can build all types of
"previewers." This mechanism will not just trigger for link
annotations, but for any annotation.
Robots
- New Robots wire protocol (v0.2)
Shortly we will publish the proposed next version of the robots wire
protocol. We'd love to get your feedback prior to implementing it.
- Java and Python API parity
Getting the two APIs to have feature parity
- Robot Gateway / OpenSocial RPC Access
Robots only react to events right now. By allowing the robots to
authenticate themselves through the OpenSocial RPC protocol, robots
can create and retrieve waves without being triggered by the wave
system first, which will allow for more "active" robots.
- Better multiple wave access
Right now it is hard to create robots that keep multiple waves in
sync. We'll add support to updates waves "blindly" (i.e. without
knowing for sure what their current context is) in a less dangerous
way by allowing to update annotated ranges in another wave and further
more make it possible to bring waves outside of the current context
into context.
- Sunset the existing robots cron mechanism
After we open the Robot Gateway, the basic wave cron system will no
longer be needed since robots could use Google App Engine's native
cron system or the Google App Engine Task Queue API.
- Gateway support
Improve the current tweety type of access to support outside
addresses of the form
addres...@appspot.com. These addresses will
come with their own profiles and will make it possible to better
support actions on behalf of external entities.
Gadgets
- Full OpenSocial gadget support
While we already support the underlying gadget XML and related
features, we will add full support for the OpenSocial JavaScript
library (i.e. feature requires="opensocial-0.9")
This includes a mapping of the OpenSocial concepts onto the wave
concepts and supporting the actual OpenSocial APIs as well as
gadgets.io.makeRequest.
- DiffOnOpen/Playback state mode for gadgets
Gagdets currently automatically support playback, but sometimes you
want to be able to do something explicitly (e.g. in a chess game show
the previous place of a piece). The same goes for diff-on-open.
Currently gadgets only show the current state - with diff-on-open
support they will be able to show the user what has changed since last
time.
- Google Web Toolkit (GWT) gadgets
For complex gadgets, GWT is a rather nice way to develop. We'll
provide a library to build gadgets inside of GWT and a small framework
to run the same code outside of wave to make debugging with an actual
debugger possible.
Embed
- Expanded UI configuration:
Switches to display toolbar, participant list, bottom tools.
- Methods to switch the wave in and out of edit mode
- Stretch goal: Read-only anonymous access so people don't have to be
logged into Google Wave to see embedded waves.
Future Thoughts
Following September 30th, we have several things in mind, but it'll be
important to see what gets built in the meantime and hear your
feedback on the APIs as things evolve.
Some ideas we're currently thinking about for later in the year:
- Expand the number of hooks extensions can plug into (via regular
expressions)
- Enable robots that aren't required to use Google App Engine
- Provide an API for robots to access attachments, search and contact
- Explore tools for improving the robot development/debug experience
- Expand the embedding API to cover more use cases
Let us know what you thin!