Hi Everyone
The idea of realtime collaboration, and the thought of it being implemented on MediaWiki based sites has amazed me ever since I read about it in the strategic proposal about Realtime collaboration here[1]. I really wanted to work on it as my GSoC project and through some fruitful amount of discussions with devs on IRC, this has got me all the more excited about it.
With the way, Visual Editor has been fundamentally constructed, it should support effectively building realtime collaboration over it. The combination of its transactions and annotations provides a structure that is similar to what is implemented in Google Wave. Operational Transformation and composition concepts as used by Google Wave can be put in action on Visual Editor to consolidate the concurrent operations and prevent conflicts.
The project should include implementing a collaboration server(built on Node.js), which would serve to the connected clients the wiki page content in form of a DOM structure and receive the editor transactions from the clients, transform them against the converging document state and broadcast them to the other clients. A client adapter would be built which would hook into the editor's transaction system and transmit them to the server.
With the help of suggestions by Trevor and Gabriel, I've been able to start some work on this idea. I've wireframed a raw collaboration server and the client adapter, which works by naively communicating the transactions among the clients via the server. I'm now working on implementing some sort of concurrency control on the transactions. All my experimentation work lives in my GitHub repository[2].
Inviting feedback. Thank you.
Links: [1] - http://strategy.wikimedia.org/wiki/Proposal:Collaborative_Google_Wave-based_... [2] - https://github.com/dash1291/VE-collaboration
More: http://www.mediawiki.org/wiki/Future/Real-time_collaboration http://www.mediawiki.org/wiki/Visual_editor/Realtime_collaboration