Online Word Processing – Part 1 – LibreOffice / Collabora

Over the past years, I’ve been using the Collabora Online / LibreOffice integration of my Nextcloud instance at home to collaboratively work on text documents and spreadsheets. While this works in general, there are a number of issues that have not improved for me over the years which make it difficult to encourage people to work with this setup. In this post, I will first have a look at the pain points. In follow up posts, I will then have a look if I get the same behavior when using other products such as Microsoft 365 online and Google docs.

Use Cases

Personally, I have three use cases for editing documents in the browser instead of editing them in LibreOffice installed on my notebook:

The first use case is to work on a document on several computers, depending on which is switched-on. True, I could use the traditional approach and host the file in a directory on Nextcloud, mount the directory as a network share and then use the files with a local LibreOffice installation. But that’s a bit old school.

My second use case is to collaboratively edit documents. Not simultaneously with others in most cases, but one can’t rule it out. I’m not quite sure how well the locking mechanism works while a document on Nextcloud is edited by someone else, so there’s always the chance that people could trample over each other.

And then, there are times when I want to work on a document with several people simultaneously, e.g. during a conference call. For the later case, mounting a network share and then editing the remote document with LibreOffice on my notebook is definitely not an option, as only one person can edit a Writer document at a time this way.

I’d say my use cases are pretty much standard. So what are the issues?

Delay

I host my own Nextcloud instance with Collabora Online on a server at home. So while I’m at home, editing documents in the browser and exchanging data with the server works pretty well. While there is a slight delay between typing in a character and seeing it in the document, it’s acceptable. But it’s definitely not as swift as working directly on the notebook. Also, scrolling through a document works reasonably well when the server is just a few meters away. But also in this case, there is a noticeable difference in scrolling smoothness and reactivity compared to using Libreoffice on my notebook.

This behavior significantly changes when I work on my documents remotely. With round trip times between 30 and 50 ms, characters appear with some delay, and scrolling through documents is not so smooth anymore. It clearly shows that Collabora online generates the graphical output on the server side and then sends it to the browser to display. It’s still usable, don’t get me wrong, but it’s far away from a desktop experience.

Order of Characters

One thing that has been reported to me by other members of the household and that I frequently experience myself is that Collabora Online every now and then mixes up the order of typed-in characters. It doesn’t happen often, but often enough to be really annoying. The frequency increases significantly when round trip delay times increase. I have no idea why this happens, we do have flow control and ordering in the TCP/IP protocol for eons that should prevent this!?

Also, when round trip times increase due to distance, I start getting some graphics errors such as lines of text not fitting exactly together or pixels at certain locations just being plain wrong. One can fix this by scrolling up and down again. But again, it’s light-years away from the smoothness of a local application.

Remote Screen Rending – The Right Approach For Distributed Editing?

It seems to me that all of the problems mentioned above are caused by the server side document rendering and then sending the result to the browser. This works ok when all people working on a document are very close to the location of the server, but it doesn’t deliver good results when people who are located in different countries work together and the server is somewhere in between them. But server side rendering is probably something fundamental which I think Collabora will not change. There’s a good discussion of this here. Which begs the question if the online Microsoft and Google products use the same or a different approach and if so, how their implementations fare when round trip times increase. It’s time to find out.