VisualEditor/Design/Realtime collaboration

== The Scope == Visual Editor has been implemented in a way that real-time collaboration can be built over it in an easy and efficient manner. The transactions and annotations used resemble the operations and annotations structure used in Google Wave. So, the transactions and annotations in Visual Editor should well support concurrency control operations like composition and transformation much like they are used in Google Wave.

Phase 1 ✅
This phase features one client as an editor in an editing session and other clients connected to that editing session would only see the changes made to the page by the editor. Editing sessions could be passed to other clients for them to edit. Once prototyped, this would be much like a 'read-only' collaborative editing tool for the clients connected to an editing session except for one client who can write to the editing session and will provide an initial codebase for Phase 2 to be implemented on.

Phase 2 ✅
With initial codebase done in Phase 1, this would add the provision of editing by multiple clients connected to the same editing session. Everyone can edit while seeing changes done by others. This would have to incorporate much complicated client and incoming transactions handling. Measures to consolidate concurrent transactions must also be implemented. Hence, this phase targets a complete realtime collaborative editor like Etherpad or Google Wave.

Suggested Readings
Google Wave Federation Protocol