Monday, October 1, 2007

Concurrent collaborative editing research adventures

After wading through way too many papers I am more motivated than ever to get this going. I really believe a cross platform (cross gui toolkit) collaborative editing library looks within reach.

If there would be an award for the best paper written on this topic it would have to be given to the guys who wrote ACE. If you check out their Report Evaluation Algorithm you will find a well presented overview of pretty much all algorithms ever invented in this area with a description of how they work, what features they support (e.g undo) and what their short comings are. If you are interested in the topic I urge you read at least the first two chapters to get up to speed and gain an understanding of the issues. A big "You Rock" to them for making this info available without having to go through ACM or similar pain.

I generally agree with the conclusion citing Jupiter and adOPTed as viable algorithms but disagree with the part were they exclude GOTO because of one of the proposed methods was not yet proven to work by someone else. Minor detail really. But it's not time for decision making yet, there is more to take into consideration.

Now it's off to start looking at actual software out there and see what might be usable. The projects that are on my list of potentials (in alphabetical order) are

From a first glance it looks like there could be cooperation points with some of these projects but more on that later.

2 comments:

pipitas said...

Hi, Andreas,

nice to see you're again into "collaborative editing" activities.

Looking forward to see your work materialize, sometime in the future :-)

Cheers,
Kurt

Unknown said...

If you like, feel free to implement something like that for kdevelop. :-)

During my last year's Summer of Code, I've implemented something like it. However I haven't had time yet to get the document-transformation(personal undo) to work, and haven't read any papers about the subject because I didn't know the right keywords. :)

Any such system could be easily plugged into kdevelop, as long as states of the document are represented by vectors. See kdevplatform/plugins/teamwork/lib/dynamictext.h in kde trunk svn.

greetings, David