Building An Open Network
(by David Wang)
Google Wave is a product
Wave is a technology
wave is to Google Wave
email is to Gmail
What is Wave Federation?
Enables independent wave providers to interoperate
Draft Federation Protocol Spec: http://waveprotocol.org/
The spec is iterating: it's developing in the open
Why Wave Federation?
Encourage adoption of wave and ensure users have a
choice in their wave provider
The internet is built on open APIs and standard protocols
We don't want wave to be a silo'ed communication tool
Pick a solution based on price or features or ....
Avoid different organisations building Wave like systems
that don't interoperate
Any organisation can be a wave
Similar to how anyone can put up an SMTP server and host
their own email today
Wave Data Model
collection of wavelets
collection of participants
unit of concurrency
unit of wave federation
Wave Federation: Sharing Wavelets
Wave servers run OT/CC
Wave servers share updates to wavelets
Still only one server owns a wavelet
The wavelet id determines which domain owns it
When to Federate?
An AddParticpant operation contains an address from
another wave provider
e.g address email@example.com,
A participant’s domain determines where to send ops
Example: Bob on Acmewave wants to talk to
Milton at Initech Corp.
Bob's client sends AddParticipant(“milton@initech-corp.
acmewave.com looks up initech-corp.com's waveserver
acmewave.com pushes the AddParticipant operation
initech-corp.com requests the wavelet history
For future ops on that wavelet, acmewave.com will:
accepts ops from initech-corp.com
transmits ops to initech-corp.com
initech-corp.com "passively" accepts ops from
The result: Bob and Milton are happily waving each other
Data stays in your network
If you don't add anyone from the outside the data stays in
Scenario: confidential chat between colleagues in a
Where we've come so far...
Published the (draft) protocol spec
Google Wave Federation Protocol
Google Wave Conversation Model (incl. Blip model)
Open sourced ~40K lines of code
Java, Apache 2.0
Effectively 2 Components:
Wave Model + Operational Transformation
FedOne: Basic Prototype Client/Server
With an early crypto library
Executable spec for the wire protocol
NOT the beginning of a reference impl
Hello, World “simple” implementation
What we're doing now...
Opening up a federation port on WaveSandbox.com
This port is still highly experimental
Updating the FedOne client/server
The client does a better job displaying OT
The server understands the new protocol manifest
Published a Google Wave Contributors Licensing
Encourages community-based development for open
Where we're headed...
Iterating towards a reasonable stable set of specifications
Gain more experience running an open federation port
Ship an open federation port on wave.google.com
Open source the lion's share of Google's client & server
Develop a production quality reference implementation
Google can't do this alone!
We’d like to work with you.