Wave Federation Keeps Growing: Rich text editor is open source

Thursday, June 24, 2010 | 7:31 AM

As you may have heard before, the Google Wave Federation Protocol is an emerging open protocol for improving communication and collaboration across the web -- not just in a single product. To further propel the community, as part of Google I/O, we open sourced another significant chunk of Google Wave production code (now totaling more than 200,000 lines of code released), including: the in-browser rich text editor, the wave model, and the concurrency control mechanism.

This code release introduces a simple web client for FedOne, which enables you to bring up your own browser-based client running against the FedOne backend, which can then federate over to WaveSandbox.com. The web client communicates with the FedOne server using an emerging WebSocket-based client/server protocol, with the initial documentation in the whitepaper under review. There is even work going on to make an Emacs client for wave using this emerging client/server protocol. To get started with your own instance, please read a recent forum post: exploring the simple web client, and you may also be interested in reading the wave model code walk-through.

There is a growing community of wave providers building on wave technology and the Google Wave Federation Protocol, including SAP StreamWork (demo below, and you can read more about SAP StreamWork and the wave protocol), Novell Pulse (here's a demo), ProcessOne's OneWave, wave-vs.net, and AboutPeers.com. The US Navy also put out a call for proposals earlier in the year (Navy Wave RFP [PDF]). Additionally, there are several open source projects in development as well: PyGoWave, QWave, ARWave, and Ruby on Sails.

Here's a video showing SAP StreamWork federating with WaveSandbox.com:

This is all driven by the desire to let users work together no matter what system they may be using. For more information about building your own wave provider, feel free to check out the session video and slides from Google I/O 2010.

Please join us in the forum if you'd like to get involved.

Running a Contest in Wave: Behind the Scenes

Monday, June 21, 2010 | 2:24 AM

Back in April, we ran a challenge together with Mashable, asking developers to make fun and useful extensions. We saw a lot of great extensions come out of it, like WaveTube, Poker, Wave Transformer, and more. Now, I want to take some time out to explain how an open-sourced Wave robot made it possible to run the contest entirely in Wave, from the submission to the voting.

1) Submission Wave

The process is all kicked off by the creation of a new submission wave.

To submit an entry, developers would install the Mashable Submitty extension. They then clicked 'New extension submission' in the New Wave menu, and watched a robot populate the new wave with a submission template. The robot does this by responding to the WaveletSelfAdded event, and appending text, form elements, and a gadget. The text describes the submission process, the form input elements let the developers give the robot information in a structured way, and the gadget manages the flow of submission.

2) Installer Checking

The robot helps automate some of the more tedious aspects of the review process, like checking an installer is valid.

When the developer is filling in the wave, they specify the URL of the installer XML in one of the input elements. When the robot sees a URL in that field, it grabs the XML, and parses it to look for all the required fields. If there are any errors, it reports them in an inline blip, and if not, it inserts the installer element inside that blip. By doing this, the reviewers can easily install the extension from inside the wave.

3) Workflow Gadget

The workflow gadget helps manage the sequence of steps, and let some participants move the sequence forward.

When the wave is first created, the only participants are the developer and the robot. When the developer is done filling out the information, they click "Share with Reviewers" in the gadget, which prompts the robot to add the review team Google Group and tag the wave with status-review. At that point, the gadget shows different options depending on who's viewing it. For the developer who submitted the extension, the gadget explains that the wave is currently shared with the team and will be responded to soon. For the admins of the review process, the gadget provides a "Approve for Gallery" button. When an admin clicks that button, the robot first checks that the event actually came from an admin (just in case someone's simulated the button click in javascript) and then kicks off the process to add the extension to the gallery.

4) Gallery Waves

The robot automates the process of creating individual waves that are rich in content, and of creating one central table of contents wave.

After the extension is approved, the robot starts by creating an individual wave about the extension - inserting the title, description, installer, a ratings gadget, and a sharing gadget. Since gadgets don't have access to the wave content around them, the robot injects the extension name into the state of the sharing gadget so users can easily tweet about it (e.g. "Checking out Requesty- http://www..."). Next, the robot fetches the table of contents wave using the Active API and appends an image and links for the new extension.

All in all, the Submitty extension helps automate a multi-step process in Wave while still allowing for freeform discussion. In the submission waves, we would often go back and forth with the submitter when trying out the extension and start up private replies to discuss the status of the extension with just the reviewers. In the gallery waves, wave users would report bugs and request features, and on the discussion wave for the most popular extension, Mr. Ray, they even got into a passionate discussion about the future of wave.

If you're interested in running a contest in wave or employing a similar workflow for your own use, check out the code for Mashable Submitty from the samples gallery. Let us know in the forum if you have any questions.


Highlights from the Google I/O Wave Developer Sandbox

Thursday, June 17, 2010 | 5:42 PM

We recently celebrated Google Wave's 1st Birthday and announced several API and protocol updates at Google I/O. Along with that we invited 16 developer groups to showcase their Wave extensions and integrations as part of the Google Wave Developer Sandbox. We've been amazed at the many extensions and product integrations that developers have built eversince we launched Wave and we wanted to share with the public what were showcased at I/O:

Extensions:

Product Integrations:

Federation:

  • SAP demoed their new StreamWork product built with on the wave federation protocol.
  • ProcessOne demoed their WaveOne XMPP server built with the wave federation protocol.
  • Novell showcased Pulse, their collaborative product built with the wave federation protocol.

To see videos of many of the above extensions in action and read more about them, check out our featured extension page. We hope these extensions and product integrations will inspire you to build more things on Google Wave. As always, we love to hear from developers. If you have feedback on our APIs or want to build extensions, read our guide and drop us a line in the Wave APIs forum. If you're interested in the Wave Protocol, check out http://www.waveprotocol.org and join the Wave Protocol discussion forum.