This is a less a question with a simple, practical answer and more a question to foster discussion on the real-time data exchange topic.
I'll begin with an example:
Google Wave is, at its core, a real-time asynchronous data synchronization engine. Wave supports (or plans to support) concurrent (real-time) document collaboration, disconnected (offline) document editing, conflict resolution, document history and playback with attribution, and server federation.
A core part of Wave is the Operational Transformation engine: http://www.waveprotocol.org/whitepapers/operational-transform
The OT engine manages document state. Changes between clients are merged and each client has a sane and consistent view of the document at all times; the final document is eventually consistent between all connected clients.
My question is: is this system abstract or general enough to be used as a library or generic framework upon which to build web apps that synchronize real-time, asynchronous state in each client?
Is the Wave protocol directly used by any current web applications (besides Google's client)? Would it make sense to directly use it for generic state synchronization in a web app?
What other existing libraries or frameworks would you consider using when building such a web app?
How much code in such an app might be domain-specific logic vs generic state synchronization logic? Or, put another way, how leaky might the state synchronization abstractions be?
Comments and discussion welcomed!