Where are the binaries?

The design of the server is moving very quickly with almost daily updates to the source code in the repository so any binaries would be very quickly out of date. We've worked hard to make the server have as few dependencies as possible, you should only need to install Ant above and beyond the required Java 6 SDK.

Why doesn't the example server save my waves?

The current implementation does not include a persistence layer, so any waves you create will be lost once the server is restarted. We're actively working on adding persistence.

Does it run on App Engine?

It's not in our medium-term plan to have Wave in a Box run on App Engine.

Does it support the embed API?

There is no plan to support embedding in the open source plan, but it should be fairly straightforward for a developer to modify the code so that there is an output of the client that includes only the wave panel. (The Google Wave embed API basically did that-- just hid all the other panels).

You can see a basic Embed API JS here: http://wave-api.appspot.com/public/embed.js

How similar will robots be to robots suitable for Google Wave?

We hope to have the protocols be quite similar, and if there are changes, they will be made to improve the protocol for the better. If you plan on running Wave-in-a-Box when available and want to develop robots in preparation for that, then we'd recommend developing them according to the current specification.

How will authentication work?

It is undecided how authentication will work.

Will it work with Google users or Google account users?

It is undecided how authentication will work.

Does it include the spell-checking or linking agent?

The code does not include the spell-checking agent ("Spelly") and will probably not include the linking agent ("Linky").

How do I follow the code changes to the repository?

Commit notices are sent to the wave-protocol-code-discuss mailing list.

Protocol & Data Models

How do I define ACLs for a Wave?

As of right now the Access Control to a wavelet is simply boolean, that is, you either have full read-write access to a wavelet, or you have no access to a wavelet. There have been recurring questions about finer grained controls, and while ACLs are currently under discussion, at this point we don't have anything solid enough to put forward as a proposal.

What is the client-server protocol?

The focus of our open source and protocol work at this point is on the federation protocol, which is critical for getting inter-operable server implementations, that is, for allowing many other people to build Wave servers and have them interop with each other and with the Google Wave server. We have definitely heard the requests for defining a client-server protocol, but at this time the team doesn't have the time to put into such an effort.

If you are interested in working on the client-server protocol we are happy to host that discussion here, and the client-server protocol as implemented in the open source server would be a fine place to start.

What's the XML schema for waves? Why isn't it HTML5?

Wave documents differ from XML in two ways:

  • they have a much smaller set of allowed node types, only elements and text
  • they include stand-off key/value annotations, which are not part of XML
The primary reason we don't use a highly structured format like HTML is that such a format does not have desirable properties under operational transformation, when multiple clients edit the same document concurrently. While HTML attempts to separate semantic content from presentation, waves also need to be concerned with the operational transformation layer underneath, and HTML makes OT (Operational Transforms) difficult if not impossible. Wave documents do have schemas, however. These are currently defined in the org.waveprotocol.wave.model.schema package.

What about attachments?

Attachments will eventually be rolled into the federation specification. The current whitepaper describes the design of existing non-federated attachment system and is a good place to start learning about attachments.

What is the difference between an Agent and a Robot?

This diagram shows the relationship between agents and robots:

An agent runs on the server and performs services there. A robot proxy is just an agent that delegates out actions to robot servers over HTTP and acts on the robot servers behalf. The example code contains a simple agent called Echoey.


Is googlewave.com federated?

As of today only wavesandbox.com is federated. Once systems become federated the deltas have to be signed, which makes migrating the underlying data model to a new schema hard, if not impossible. Once the federation protocol and underlying data model have become more solidgooglewave.com will be federated.

How do I get a wavesandbox.com account?

Fill out this form.

This instance is only intended for developers building with the Google Wave APIs. Please keep in mind that waveSandbox.com does not currently federate with wave.google.com.

Are CAcert.org certificates accepted on wavesandbox.com?

No. Free CA-issued certificates can be obtained from www.startssl.com.