LibreOffice Work In Progress Towards Collaboration
Written by Sue Gee
Wednesday, 28 March 2012
In a nice example of open source collaborative effort, a gang of four developers has been paving the way for this summer's student interns to add collaborative editing to LibreOffice.
As Michael Meeks points out on his recent blog post, currently collaborative editing is one of the "last, big missing features" in LibreOffice.
Experimental work is underway to plug this gap and it one of the interesting tasks on the list for Google Summer of Code, which is currently at the stage where students can apply and are identifying the projects they want to work on.
The approach to adding collaborative editing to LibreOffice is to use the open source instant messaging framework Telepathy. This offers an API for instant messaging protocols to be used as a channel of communication between applications rather then people.Of course it would be fairly easy to define and implement a new protocol to allow LibreOffice components to talk to each other but this would mean having to implement an infrastructure to support the communication i.e. lots of servers. By using an instant messaging protocol LibreOffice can simply make use of the existing servers to pass messages. Of course there is the small matter of the instant messaging providers allowing LibreOffice traffic to pass.
Work to get Telepathy code hooked into the LibreOffice core was started some weeks ago Eike Rathke of RedHat. To take things forward a "hack fast" was organized at Collabora's Cambridge offices where Will Thompson (Collabora) joined Eike plus Michael Meeks and Rob McQueen from Suse.
Meeks describes the process:
So after some initial design overview from Will, we hacked away happily - I spent much of my time re-immersing myself in the calc core code. It is easy to forget how heroic the hackers that work on the top of LibreOffice are - after all, the lower layers of the system are shared, and have more use and polish. I dug at the view code, and ensuring that the ScDocFunc object, was used - splitting large operations (such as cell entry) into a series of smaller, simpler operations in an undo transaction on the model.
Eike meanwhile worked to get our unit tests working with various main-loop integration horrors under control, and the basic communication channels created and sending messages from A to B. Then he connected that to my lame demonstration protocol work to get messages and co-editing flowing.
Will - providing invaluable design input, hacking help, debugging assistance, API work, an 'Approver' to handle incoming connection requests from mission control, chased down obscure g_signal and C++ exception mis-interactions, provided non-stop enthusiasm, and was an exemplary host.
We spent much of the week, Monday to Friday, from early until late at night closeted in a remarkably pleasant sunlight room hacking away, heads down - with occasional frustrated noises, shaking of the head at code in dire need of discipline and so on.
This video is the proof that progress was made:
The collaborative effort is proof of the open source concept, albeit in a situation where enterprise companies RedHat and Suse are donating the manpower. This is also a great example of the type of project that a Google Summer of Code student could get involved in, with mentors who have already confronted a problem and prepared the ground. However, as Meeks points out "we suspect this [task] will be rather a popular one" and he urges prospective applicants to GSoC to take a looks at others on The Document Foundation's list.