Recently, our development team has been working on the development of a Collaborative Editing functionality for one of our ventures: Minutes Software, a B2B SaaS product that optimizes the meeting process. In this blog we tell you how the development of Collaborative Editing came about.
WHY COLLABORATIVE EDITING?
In the past, many Minutes Software customers used Google Drive to record their meetings. All are very enthusiastic about the many improvements that Minutes Software offers compared to Google Drive, but one feedback point came up regularly: “In Google Drive it is super nice to be able to work on an agenda item with several people at the same time, in Minutes Software you can unfortunately only one person is typing at a time”.
A point of feedback that we fully understand. That is why a great challenge has been passed on to our development team: develop a collaborative editing functionality for Minutes Software!
The big challenge of developing a collaborative editing functionality is that all changes that everyone makes are properly processed. Changes that arrive in the wrong order or at the same time must be processed correctly. Nothing should be lost or overwritten.
Various operational transformation algorithms were examined, looking for a version with a single source of truth. This is important, because all data must be stored in the database. From this perspective, it was decided to implement an admissibility-based transformation algorithm.
Subsequently, some changes were made to the ABT algorithm. ABT is peer-to-peer. The development team has made its own implementation that is not peer-to-peer and can work with a single source of truth. There is also built-in Undo Support that ensures that the use of Control-Z runs without problems. Of course you don’t want your Control-Z to make the changes of your colleagues disappear.
The server set up to do operational transformation in real time is written in Node.js with the Express framework and communicates with the connected clients through web sockets. While Minutes Software is developed in Laravel, the collaborative editing server is a separate microservice.
The operational transformation server also had to be implemented in the frontend, which is written in React. The editor already used in Minutes Software supports deltas. These deltas are used to send and receive changes to the operational transformation server.
The first delivery was a basic implementation of collaborative editing. This has been tested through and through and expanded further. A version was first made in which changes in the text were visible. Subsequently, a start was made with also making the cursors of other people visible in real time. This guarantees that Minutes Software users are even happier that they switched from Google Drive to Minutes Software.