Apache Wave

Apache Wave [] is a framework for real-time multiuser editing of data. Google originally developed it as Google Wave.

Google Wave

[Image under Fair use]

The impact of waiting for ACKs

The wave protocol doesn't require transformation property TP2 to be satisfied, and instead imposes a restriction on the order in which operations are applied to ensure all sites nevertheless converge to the same state.

The wave protocol has the following requirement: after a client has sent a 'chunk' of operations to the server it must wait for an ACK from the server before it is allowed to send the next chunk of operations.

In the white paper Google Wave Operational Transformation by David Wang and Alex Mah May 2009, the following is stated:

Having a simple and efficient server is important in making Wave reliable and scalable. With this goal, Wave OT modifies the basic theory of OT by requiring the client to wait for acknowledgement from the server before sending more operations. When a server acknowledges a client's operation, it means the server has transformed the client's operation, applied it to the server's copy of the Wavelet and broadcasted the transformed operation to all other connected clients. Whilst the client is waiting for the acknowledgement, it caches operations produced locally and sends them in bulk later.

They note a significant disadvantage with this approach:

One trade off of this change is that a client will see chunks of operations from another client in intervals of approximately one round trip time to the other client. However, we believe the benefits obtained from the change make this a worthwhile trade off.

Their approach prohibits the streaming of fine grained operations from a client. E.g. if a client is moving an object with the mouse and generating operations at the rate of 50Hz, and if the Round Trip Time (RTT) to the server is 200 msec then the maximum rate at which operations can be streamed to the server (and hence to other clients) is actually only 5Hz, irrespective of the bandwidth available. The result is that the objects will not appear to be smoothly manipulated on other machines.

In some applications there may be users that are interested in watching work being performed like a movie. In such cases a consistent delay is tolerable, but a poor update rate is not. For example using OT to watch the work performed in real-time by a talented graphic artist would be upset if operations are sent in coarse chunks. Note as well that ping times as high as 400msec are not all that uncommon on the Internet, so the update rate could fall below 3 Hz with the wave protocol.