Collaborative real-time editor
A collaborative real-time editor is a type of
Real-time editing performs automatic, periodic, often nearly instantaneous synchronization of edits of all online users as they edit the document on their own device. This is designed to avoid or minimize
With asynchronous
History of key products
The first instance of a collaborative real-time editor was demonstrated by Douglas Engelbart in 1968, in The Mother of All Demos. Widely available implementations of the concept took decades to appear.
A piece of software called Instant Update was released for the
Interest in real-time collaborative editing over the internet led to the development of MoonEdit and SubEthaEdit in the 2003-2005 time frame, followed soon after by Gobby.
With the introduction of
In 2009, Google started beta testing
In June 2016, Collabora Productivity released V1.0 of
Recently, real-time collaborative editing has returned to stand-alone text editing applications with extensions for Atom and Visual Studio Code released in 2020. [14][15]
Other examples
Real-time collaborative editing can occur online in
Vaadin Ltd., the vendor of the Vaadin platform, released V1.0 of their Collaboration Engine In October 2020,[20] with the premise of allowing developers to rapidly build real-time collaboration and editing features in to any web application with Java backends using a few lines of codes (for specific use-cases through their, still limited, high-level APIs).[21] This feature currently supports Java, although the vendor notes that a TypeScript-based API is also incoming, in line with the Vaadin platform's recent ongoing expansion into also enabling TypeScript-based UI building in the future through its upcoming Fusion framework.[22][23]
Technical challenges
This section needs additional citations for verification. (August 2008) |
This section possibly contains original research. (August 2008) |
The complexity of real-time collaborative editing solutions stems from communication latency. In theory, if communication were instantaneous, then creating a real-time collaborative editor would be no more difficult than creating a single-user editor, because a document could be edited using an algorithm similar to the following:
- Request an 'edit document' token from the server
- Wait until the server says it's our turn to edit the document
- Tell the server how to edit the document
- Release the 'edit document' token
However, the speed of communication is limited by network latency. This creates a fundamental dilemma: users need their own edits incorporated into the document instantly, but if they are incorporated instantly, then because of communication latency, their edits must necessarily be inserted into different versions of the document.
An example illustrates this problem. Suppose Bob and Alice start with a document containing the word Mary. Bob deletes 'M', then inserts 'H', to change the word into Hary. Alice, before she receives either edit from Bob, deletes 'r', then deletes 'a', to change it into My. Both Bob and Alice will then receive edits that were applied to versions of the document that never existed on their own machines.
Thus, the challenge of real-time collaborative editing is to figure out exactly how to apply edits from remote users, which were originally created in versions of the document that never existed locally, and which may conflict with the user's own local edits.
The most sophisticated solutions solve this problem in a way that does not require a server, does not use locking (all users can freely edit all parts of a document at the same time), and supports any number of users (limited only by the resources of the computers). UNA and SubEthaEdit are examples of two programs that take this approach.
While these sophisticated approaches enable the best
This approach, while significantly less powerful, allows for basic collaboration at a relatively low cost. This makes it preferable in situations where processing resources are limited. NetSketch is an example of a program that uses this model.
In the past, Microsoft and IBM have worked to add collaboration facilities to their existing architectures.[24] Although marketed as real-time collaboration, these 'workspace' approaches require either document locking (so only one person can edit it at a time), or 'reconciliation' of conflicting changes, which is generally found by users to be unsatisfactory.[citation needed]
See also
- Cobrowsing
- Conflict-free replicated data type
- Distributed computing
- Distributed version control
- Document collaboration
- List of collaborative software
- Real-time text
- Wiki
References
- ^ "User manual". Archived from the original on 2009-02-21.
- ^ Michael Arrington (2005-09-27). "JotSpot Live — The Perfect Wiki?". TechCrunch.
- ^ Michael Arrington (2008-02-27). "It Took 16 Months, But Google Relaunches Jotspot". TechCrunch.
- ^ David Chartier (2008-02-28). "First look: Google relaunches JotSpot as Google Sites". Ars technica.
- CNET News. Archived from the originalon 2008-05-15. Retrieved 2008-03-19.
- ^ Mark 'Rizzn' Hopkins (2008-02-27). "Google Finally Frees JotSpot with Google Sites". Mashable.
- ^ Ina Fried and Josh Lowensohn (2010-08-04). "Google pulls plug on Google Wave". CNET.
- doi:10.1145/3375186.
- ^ "Frequently Asked Questions". fluidframework-docs.azureedge.net. Retrieved 2020-11-02.
- ^ "Fluid Framework". fluidframework-docs.azureedge.net. Retrieved 2020-11-02.
- ^ Gathoye, William (2016-06-02). "Collabora Productivity releases Collabora Online 1.0 "Engine" for Hosters and Clouds". Archived from the original on 2016-08-07. Retrieved 2021-09-02.
- ^ "Collabora Online SDK". Archived from the original on 2021-03-01. Retrieved 2021-09-02.
- ^ Guoan, Xiao (2020-12-10). "Integrate Collabora Online with Nextcloud on Ubuntu with Docker". LinuxBabe. Archived from the original on 2020-06-14. Retrieved 2021-09-02.
- ^ "Live Share for VS Code". Retrieved 2022-02-26.
- ^ "Teletype for Atom". Retrieved 2022-02-26.
- ^ "FREE No-Code App, Analytics AI, Blockchain, Excel&Web 3.0 Collaboration Platform". PowerSheet.ai. Retrieved 2020-06-08.
- ^ "Fluid Framework". fluidframework-docs.azureedge.net. Retrieved 2020-11-02.
- ^ "Collaboration Engine". Vaadin. Retrieved 2020-11-02.
- ^ "Mozilla Labs : TogetherJS Technological Overview". togetherjs.com. Mozilla Labs. Retrieved 2023-01-12.
- ^ "Meet Collaboration Engine: The simplest way to build collaborative web apps". Vaadin. Retrieved 2020-11-02.
- ^ "Collaboration Engine". Vaadin. Retrieved 2020-11-02.
- ^ "A sneak-peek at the future of Vaadin's real-time collaboration features". Vaadin. Retrieved 2020-11-02.
- ^ "Introducing Vaadin Flow and Fusion". Vaadin. Retrieved 2020-11-02.
- ^ Microsoft Live Communications Archived 2008-03-05 at the Portuguese Web Archive Marketed as real time but not real time in the sense of this article.