Realtime Collaboration

May 30 2016

Realtime Collaboration in XWiki

In December of 2015, I packed up everything that I cared enough to carry and boarded a flight leaving from Toronto's Pearson International Airport. I was headed for Paris, France to work for XWiki, the creators of XWiki Enterprise.

After an interview process that involved speaking to various members of the company, including the CEO, I had gotten the good news that they were interested in having me join the team. I'd been granted my visa, and I would soon be working in the Research Department (AKA XWiki Labs), focusing on the development of collaborative real-time editors.

There have been a lot of challenges since December (not even considering those related to moving to a new country), but I've enjoyed the learning process immensely, and I'd like to share some of what I've learned with the wider community.

The most obvious thing that I've learned is that this problem is very complicated, and I must admit this post started off as a big essay before I had to reign things in. As such, this will be the first part of an ongoing series on our Lab's efforts to integrate realtime collaboration into a wide range of applications.

What's a Realtime Editor?

A realtime editor is an application that provides a common interface to multiple users, each typically having their own device.

For example, using a realtime collaborative text editor, two users are able to open an application on their own computer and edit the same text document, seeing each others' changes applied to the document in realtime, as the changes are made.

Our work has focused on building this type of application for web browsers, where we can deliver them to the widest number of users.

The Realtime Team

XWiki hired me to work on this problem full time because they're invested in bringing this more intimate and interactive method of collaboration to all of their products, but I'm not the only one spending time on it.

I work most closely with Caleb and Yann. A lot of our work has centered on integrating realtime features into CKEditor, and we've been able to bring these developments into XWiki thanks to the concentrated effort of our colleague Marius.

XWiki products are used to address a really wide array of use cases, so in order for our work to be useful to everyone who uses them, it needs to work under all conditions.

Of course, the whole XWiki team has been testing our applications in a variety of circumstances that we hadn't foreseen, and this has had a direct effect on the durability of our code.

Why does XWiki want realtime editors?

A Wiki is a collection of web pages which users can edit, improve, and reorganize. XWiki introduced the concept of a second generation wiki, which allows users to collaboratively develop not just content, but applications.

By pushing our realtime algorithms towards becoming a mature standard, we hope to transform XWiki into a Third Generation Wiki, through which users would be able to collaboratively develop content and applications in realtime.

realtime editing in XWiki

Wikis function well without realtime so long as a page is not in high demand. A user begins editing a page, at which point other users are locked out. Once the first user finishes, the page is unlocked, and can be edited once more.

A real-time wiki would transform pages from a resource over which users might compete into a communal medium through which they can collaborate.

We are in the business of helping people share information, and real-time editing interfaces transform the way that users approach sharing in a fundamental way.

Created by Aaron MacSween on 2016/05/30 16:23

Blog Categories

Blog Archive