Jump to content

Collaborative real-time editor: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Maxifom (talk | contribs)
Duplicated row word in sentence
AnomieBOT (talk | contribs)
m Dating maintenance tags: {{When?}}
 
(49 intermediate revisions by 33 users not shown)
Line 1: Line 1:
{{Short description|Software for several users to edit a file}}
{{distinguish|collaborative editing}}
{{distinguish|Collaborative editing}}
A '''collaborative real-time editor''' is a type of [[collaborative software]] or [[web application]] which enables '''real-time collaborative editing''', '''[[simultaneous editing]]''', or '''live editing''' of the same [[digital document]], [[computer file]] or [[cloud storage|cloud-stored]] [[data]] – such as an [[online spreadsheet]], [[word processing]] document, [[database]] or [[presentation program|presentation]] – at the same time by different users on different computers or [[mobile devices]], with automatic and nearly instantaneous merging of their edits.
{{Redirect-distinguish|Online editing|Online editing (video production)}}
A '''collaborative real-time editor''' is a type of [[collaborative software]] or [[web application]] which enables '''real-time collaborative editing''', [[simultaneous editing]], or live editing of the same [[Electronic document|digital document]], [[computer file]] or [[cloud storage|cloud-stored]] [[Data compression|data]] – such as an [[online spreadsheet]], [[word processing]] document, [[database]] or [[presentation program|presentation]] – at the same time by different users on different computers or [[Mobile devices in healthcare|mobile devices]], with automatic and nearly instantaneous merging of their edits.


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 [[edit conflicts]].
Real-time collaborative editing can occur online in [[web applications]] such as [[Office Online|Microsoft Office on the web]] (formerly [[Office Online]]) – which supports online ([[web-based]]) simultaneous editing (which [[Microsoft]] refers to as "[[Co-Authoring]]") of [[Microsoft Word|Word]] documents, [[Microsoft Excel|Excel]] [[spreadsheets]], [[PowerPoint]] and other [[Microsoft Office]] documents stored on [[Office.com]], [[OneDrive]] or [[SharePoint]] [[cloud storage]] – or [[Google Docs]] and other [[G Suite]] [[productivity software|productivity (office suite)]] apps – for online collaborative editing of [[word processing]] and other documents stored in [[Google Drive]]. Real-time collaborative editing can also occur in hybrid manner, such as with Power Sheet BI for Excel<ref>{{Cite web|title=FREE No-Code App, Analytics AI, Blockchain, Excel&Web 3.0 Collaboration Platform|url=https://www.powersheet.ai/|access-date=2020-06-08|website=PowerSheet.ai|language=en}}</ref>, in offline, web-based, and online collaborative editing in desktop software as well as web-based and mobile apps, which can be synchronized automatically with instant access to version history.


With asynchronous [[collaborative editing]] (i.e. non-real-time, delayed or offline), each user must typically manually submit (publish, push or commit), update (refresh, pull, download or sync) and (if any edit conflicts occur) merge their edits. Due to the delayed nature of asynchronous collaborative editing, multiple users can end up editing the same line, word, element, [[data]], [[row (database)|row]] or [[Field (computer science)|field]] resulting in [[edit conflicts]] which require manual [[merge (revision control)|edit merging]] or overwriting, requiring the user to choose which edits to use or (depending on the system and setup) automatically overwriting their edits or other people's edits, with or without a warning.
Unlike asynchronous (non-real-time, delayed or offline) [[collaborative editing]], such as occurs with [[revision control]] systems like [[Git]] or [[Subversion]], 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 [[edit conflicts]]. In asynchronous collaborative editing, each user must typically manually submit (publish, push or commit), update (refresh, pull, download or sync) and (if any edit conflicts occur) merge their edits.

Due to the delayed nature of asynchronous collaborative editing, multiple users can end up editing the same line, word, element, [[data]], [[row (database)|row]] or [[Field (computer science)|field]] resulting in [[edit conflicts]] which require manual [[merge (revision control)|edit merging]] or overwriting, requiring the user to choose which edits to use or (depending on the system and setup) automatically overwriting their edits or other people's edits, with or without a warning.


== History of key products ==
== 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.
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.


Instant Update was released for the [[classic Mac OS]] in 1991 from [[ON Technology]].<ref>{{cite web|title=User manual|url=https://www.scribd.com/doc/5447595/Instant-Update|url-status=dead|archive-url=https://web.archive.org/web/20090221021626/https://www.scribd.com/doc/5447595/Instant-Update|archive-date=2009-02-21}}</ref>{{better source|date=November 2019}} Later, a version for [[Microsoft Windows]] was released as well, allowing real-time{{cn|date=November 2019}} collaboration across these two [[operating system]]s.{{cn|date=November 2019}} Instant Update relied on a work group server to coordinate documents updated in real time on multiple clients.
A piece of software called ''Instant Update'' was released for the [[classic Mac OS]] in 1991 from [[ON Technology]].<ref>{{cite web|title=User manual|url=https://www.scribd.com/doc/5447595/Instant-Update|url-status=dead|archive-url=https://web.archive.org/web/20090221021626/https://www.scribd.com/doc/5447595/Instant-Update|archive-date=2009-02-21}}</ref>{{better source|date=November 2019}} It allowed real-time editing of a single document by multiple users over a [[local area network|LAN]] and relied on a [[workgroup (computer networking)|workgroup]] [[server (computing)|server]].

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]].


The [[Web 2.0]] phenomenon has caused an explosion of interest in browser-based document editing tools. In particular, a product called [[Writely]] saw explosive user growth and was bought by Google in March 2006 (what became known as [[Google Docs]] and later renamed to [[Google Drive]]). It provided simultaneous edits on the entirety of a document, though changes from other users were only reflected after the client program polling the server (every half-minute or so).{{Citation needed|date=July 2012}} Another early web-based solution was JotSpotLive, in which line-by-line simultaneous editing was available in near-realtime.<ref>{{cite web
With the introduction of [[Ajax (programming)|Ajax]] technology and the "content editable" function in browsers, web-based collaborative editing in real-time developed as part of the [[Web 2.0]] phenomenon around 2005. In particular, a product called [[Writely]] saw explosive user growth and was bought by Google in March 2006 (what became known as [[Google Docs]] and later renamed to [[Google Drive]]). It provided simultaneous edits on the entirety of a document, though changes from other users were only reflected after the client program polling the server (every half-minute or so).{{Citation needed|date=July 2012}} Another early web-based solution was JotSpotLive, in which line-by-line simultaneous editing was available in near-realtime.<ref>{{cite web
|title=JotSpot Live — The Perfect Wiki?
|title=JotSpot Live — The Perfect Wiki?
|url=https://techcrunch.com/2005/09/27/jotspot-live-the-perfect-wiki/
|url=https://techcrunch.com/2005/09/27/jotspot-live-the-perfect-wiki/
Line 37: Line 39:
|publisher=[[CNET News]]
|publisher=[[CNET News]]
|date=2008-02-27
|date=2008-02-27
|access-date=2008-03-19
|archive-date=2008-05-15
|archive-url=https://web.archive.org/web/20080515204427/http://www.news.com/8301-13953_3-9881062-80.html
|url-status=dead
}}</ref><ref>{{cite web
}}</ref><ref>{{cite web
|title=Google Finally Frees JotSpot with Google Sites
|title=Google Finally Frees JotSpot with Google Sites
Line 43: Line 49:
|publisher=[[Mashable]]
|publisher=[[Mashable]]
|date=2008-02-27
|date=2008-02-27
}}</ref> but it lacks the multi-user real-time abilities of JotLive. The Synchroedit (rich text) and MobWrite (plain text) projects are two, more recent, open source attempts to fill the in gap real-time browser-based collaborative editing, though still unable to achieve true real-time performance, especially on a large scale architecture.{{citation needed|date=July 2012}}
}}</ref> but it lacks the multi-user real-time abilities of JotLive. The Synchroedit (rich text) and MobWrite (plain text) projects are two, more recent{{when?|date=August 2024}}, open source attempts to fill the gap in real-time browser-based collaborative editing, though still unable to achieve true real-time performance, especially on a large scale architecture.{{citation needed|date=July 2012}}


In 2009, Google started beta testing [[Google Wave]], a real-time collaboration environment which Google hoped would eventually displace email and instant messaging.{{citation needed|date=July 2012}} [[EtherPad]] was acquired by Google, which allocated the EtherPad team to work within the Wave project. However, Google announced in August 2010 on its blog<ref>{{cite web
In 2009, Google started beta testing [[Google Wave]], a real-time collaboration environment which Google hoped would eventually displace email and instant messaging.{{citation needed|date=July 2012}} [[EtherPad]] was acquired by Google, which allocated the EtherPad team to work within the Wave project. However, Google announced in August 2010 on its blog<ref>{{cite web
Line 51: Line 57:
|publisher=[[CNET]]
|publisher=[[CNET]]
|date=2010-08-04
|date=2010-08-04
}}</ref> that it had decided to stop developing Wave as a standalone project, due to insufficient user adoption. After Google released the abandoned EtherPad source code as [[Open-source license|open source]] in December 2009, the community took over its development and produced a complete rewrite named [[Etherpad Lite|Etherpad lite]], which is written entirely in [[JavaScript]] and built on top of [[node.js]]. Other notable tools based on [[operational transformation]] technology are [https://github.com/josephg/ShareJS ShareJS], [[CKEditor]], and [[SubEthaEdit]].<ref>{{Cite journal|last=SunChengzheng|last2=SunDavid|last3=NgAgustina|last4=CaiWeiwei|last5=ChoBryden|date=2020-01-04|title=Real Differences between OT and CRDT under a General Transformation Framework for Consistency Maintenance in Co-Editors|url=https://dl.acm.org/doi/abs/10.1145/3375186|journal=Proceedings of the ACM on Human-Computer Interaction|language=EN|doi=10.1145/3375186|doi-access=free}}</ref>
}}</ref> that it had decided to stop developing Wave as a standalone project, due to insufficient user adoption. After Google released the abandoned EtherPad source code as [[Open-source license|open source]] in December 2009, the community took over its development and produced a complete rewrite named [[Etherpad Lite|Etherpad lite]], which is written entirely in [[JavaScript]] and built on top of [[Node.js]]. Another notable tools based on [[operational transformation]] technology is [[CKEditor]].<ref>{{Cite journal|last1=SunChengzheng|last2=SunDavid|last3=NgAgustina|last4=CaiWeiwei|last5=ChoBryden|date=2020-01-04|title=Real Differences between OT and CRDT under a General Transformation Framework for Consistency Maintenance in Co-Editors|journal=Proceedings of the ACM on Human-Computer Interaction|volume=4|pages=1–26|language=EN|doi=10.1145/3375186|arxiv=1905.01518|doi-access=free}}</ref> 2020 has seen a surge of interest in the concept, as Microsoft also recently released its [[Fluid Framework]], which relies on a novel Total Order Broadcast technology, as opposed to OT or CRDT.<ref>{{Cite web|title=Frequently Asked Questions|url=https://fluidframework-docs.azureedge.net/docs/faq/|access-date=2020-11-02|website=fluidframework-docs.azureedge.net|language=en}}</ref> Fluid is currently framework agnostic. Microsoft states that it is not yet ready for production use.<ref>{{Cite web|title=Fluid Framework|url=https://fluidframework-docs.azureedge.net/docs|access-date=2020-11-02|website=fluidframework-docs.azureedge.net|language=en}}</ref>

In June 2016, Collabora Productivity released V1.0 of [[Collabora Online]], an open source online office suite using [[LibreOffice]] Technology, it can be integrated into any website with a few lines of code. A [[software development kit]] exists with sample integration code in several languages [[Node.js]], [[PHP]], [[Python (programming language)|Python]], [[React_(JavaScript_library)|ReactJS]] and [[.NET]], these have [[API]] specifications allowing interoperable integrations with customizable user interfaces.<ref>{{Cite web|last=Gathoye|first=William|date=2016-06-02|title=Collabora Productivity releases Collabora Online 1.0 "Engine" for Hosters and Clouds|url=https://www.collaboraoffice.com/press-releases/collabora-productivity-releases-collabora-online-cool-1-0-engine-for-hosters-and-clouds/|url-status=live|access-date=2021-09-02|website=|archive-url=https://web.archive.org/web/20160807182222/https://www.collaboraoffice.com/press-releases/collabora-productivity-releases-collabora-online-cool-1-0-engine-for-hosters-and-clouds/ |archive-date=2016-08-07 }}</ref><ref>{{Cite web|title=Collabora Online SDK|url=https://sdk.collaboraonline.com/|url-status=live|access-date=2021-09-02|archive-url=https://web.archive.org/web/20210301134226/https://sdk.collaboraonline.com/ |archive-date=2021-03-01 }}</ref><ref>{{Cite web|last=Guoan|first=Xiao|date=2020-12-10|title=Integrate Collabora Online with Nextcloud on Ubuntu with Docker|url=https://www.linuxbabe.com/cloud-storage/integrate-collabora-online-server-nextcloud-ubuntu|url-status=live|access-date=2021-09-02|website=LinuxBabe|archive-url=https://web.archive.org/web/20200614071859/https://www.linuxbabe.com/cloud-storage/integrate-collabora-online-server-nextcloud-ubuntu |archive-date=2020-06-14 }}</ref> With Collabora Online documents remain on the server, each user shares the same document concurrently allowing just one document to be edited in real-time and interactively with no extra lag or latency to see other users’ typing. It avoids the need for locking of paragraphs in text documents. It enables collaborative real-time editing of word processing documents, spreadsheets, presentations, drawing and vector graphics.

Recently{{when?|date=August 2024}}, real-time collaborative editing has returned to stand-alone text editing applications with extensions for ''[[Atom (text editor)|Atom]]'' and ''[[Visual Studio Code]]'' released in 2020.
<ref name=vscode-ls>{{cite web |url=https://code.visualstudio.com/learn/collaboration/live-share |title=Live Share for VS Code |access-date=2022-02-26}}</ref><ref name=atom-tt>{{cite web |url=https://teletype.atom.io/ |title=Teletype for Atom |access-date=2022-02-26}}</ref>

== Other examples ==
Real-time collaborative editing can occur online in [[web applications]] such as [[Microsoft Office|Microsoft Office on the web]] (formerly [[Office Online]]) – which supports online ([[Web application|web-based]]) simultaneous editing (which [[Microsoft]] refers to as "Co-Authoring") of [[Microsoft Word|Word]] documents, [[Microsoft Excel|Excel]] [[spreadsheets]], [[PowerPoint]] and other [[Microsoft Office]] documents stored on [[Microsoft Office|Office.com]], [[OneDrive]] or [[SharePoint]] [[cloud storage]] – or [[Google Docs]] and other [[Google Workspace]] [[productivity software|productivity (office suite)]] apps – for online collaborative editing of [[word processing]] and other documents stored in [[Google driverless car|Google Drive]]. Real-time collaborative editing can also occur in hybrid manner, such as with Power Sheet BI for Excel,<ref>{{Cite web|title=FREE No-Code App, Analytics AI, Blockchain, Excel&Web 3.0 Collaboration Platform|url=https://www.powersheet.ai/|access-date=2020-06-08|website=PowerSheet.ai|language=en}}</ref> in offline, web-based, and online collaborative editing in desktop software as well as web-based and mobile apps, which can be synchronized automatically with instant access to version history. 2020 has seen a resurgence of interest in embedding these applications into secure web applications, particularly for business use-cases, with Microsoft and Vaadin taking the lead with specialized real-time collaboration backends that handle the complexities of real-time synchronous data sharing, which developers can utilize through APIs.<ref>{{Cite web|title=Fluid Framework|url=https://fluidframework-docs.azureedge.net/|access-date=2020-11-02|website=fluidframework-docs.azureedge.net|language=en}}</ref><ref>{{Cite web|title=Collaboration Engine|url=https://vaadin.com/collaboration|access-date=2020-11-02|website=Vaadin|language=en}}</ref> Mozilla released in 2013 the javascript library TogetherJS, which adds real-time collaborative editing to any web application via a messaging system and optionally an operational transform algorithm for forms synchronization.<ref>{{cite web |title=Mozilla Labs : TogetherJS Technological Overview |url=https://togetherjs.com/docs/#technology-overview |website=togetherjs.com |publisher=Mozilla Labs |access-date=2023-01-12}}</ref>

[[Vaadin]] Ltd., the vendor of the Vaadin platform, released V1.0 of their Collaboration Engine In October 2020,<ref>{{Cite web|title=Meet Collaboration Engine: The simplest way to build collaborative web apps|url=https://vaadin.com/blog/meet-collaboration-engine-the-simplest-way-to-build-collaborative-web-apps|access-date=2020-11-02|website=Vaadin|language=en}}</ref> 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).<ref>{{Cite web|title=Collaboration Engine|url=https://vaadin.com/collaboration|access-date=2020-11-02|website=Vaadin|language=en}}</ref> 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.<ref>{{Cite web|title=A sneak-peek at the future of Vaadin's real-time collaboration features|url=https://vaadin.com/blog/a-sneak-peek-at-the-future-of-vaadins-real-time-collaboration-features|access-date=2020-11-02|website=Vaadin|language=en}}</ref><ref>{{Cite web|title=Introducing Vaadin Flow and Fusion|url=https://vaadin.com/blog/reintroducing-vaadin-flow-and-fusion|access-date=2020-11-02|website=Vaadin|language=en}}</ref>


== Technical challenges ==
== Technical challenges ==
Line 81: Line 97:
*[[Conflict-free replicated data type]]
*[[Conflict-free replicated data type]]
* [[Distributed computing]]
* [[Distributed computing]]
* [[Distributed revision control]]
* [[Distributed version control]]
* [[Document collaboration]]
* [[Document collaboration]]
* [[List of collaborative software]]
* [[List of collaborative software]]
* [[Operational transformation]]
* [[Real-time text]]
* [[Real-time text]]
* [[Wiki]]
* [[Wiki]]
* [[Etherpad]]
* [[Cryptpad]]
* [[Gobby]]
* [[Firepad]]
* [[OnlyOffice]]
* [[Prosemirror]]
* [[ShareDB]]


== References ==
== References ==

Latest revision as of 15:13, 16 August 2024

A collaborative real-time editor is a type of collaborative software or web application which enables real-time collaborative editing, simultaneous editing, or live editing of the same digital document, computer file or cloud-stored data – such as an online spreadsheet, word processing document, database or presentation – at the same time by different users on different computers or mobile devices, with automatic and nearly instantaneous merging of their edits.

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 edit conflicts.

With asynchronous collaborative editing (i.e. non-real-time, delayed or offline), each user must typically manually submit (publish, push or commit), update (refresh, pull, download or sync) and (if any edit conflicts occur) merge their edits. Due to the delayed nature of asynchronous collaborative editing, multiple users can end up editing the same line, word, element, data, row or field resulting in edit conflicts which require manual edit merging or overwriting, requiring the user to choose which edits to use or (depending on the system and setup) automatically overwriting their edits or other people's edits, with or without a warning.

History of key products

[edit]

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 classic Mac OS in 1991 from ON Technology.[1][better source needed] It allowed real-time editing of a single document by multiple users over a LAN and relied on a workgroup server.

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 Ajax technology and the "content editable" function in browsers, web-based collaborative editing in real-time developed as part of the Web 2.0 phenomenon around 2005. In particular, a product called Writely saw explosive user growth and was bought by Google in March 2006 (what became known as Google Docs and later renamed to Google Drive). It provided simultaneous edits on the entirety of a document, though changes from other users were only reflected after the client program polling the server (every half-minute or so).[citation needed] Another early web-based solution was JotSpotLive, in which line-by-line simultaneous editing was available in near-realtime.[2] However, after Google's purchase of parent company JotSpot in November 2006, the site was closed. Google Sites was launched in February 2007 as a refactoring of JotSpot,[3][4][5][6] but it lacks the multi-user real-time abilities of JotLive. The Synchroedit (rich text) and MobWrite (plain text) projects are two, more recent[when?], open source attempts to fill the gap in real-time browser-based collaborative editing, though still unable to achieve true real-time performance, especially on a large scale architecture.[citation needed]

In 2009, Google started beta testing Google Wave, a real-time collaboration environment which Google hoped would eventually displace email and instant messaging.[citation needed] EtherPad was acquired by Google, which allocated the EtherPad team to work within the Wave project. However, Google announced in August 2010 on its blog[7] that it had decided to stop developing Wave as a standalone project, due to insufficient user adoption. After Google released the abandoned EtherPad source code as open source in December 2009, the community took over its development and produced a complete rewrite named Etherpad lite, which is written entirely in JavaScript and built on top of Node.js. Another notable tools based on operational transformation technology is CKEditor.[8] 2020 has seen a surge of interest in the concept, as Microsoft also recently released its Fluid Framework, which relies on a novel Total Order Broadcast technology, as opposed to OT or CRDT.[9] Fluid is currently framework agnostic. Microsoft states that it is not yet ready for production use.[10]

In June 2016, Collabora Productivity released V1.0 of Collabora Online, an open source online office suite using LibreOffice Technology, it can be integrated into any website with a few lines of code. A software development kit exists with sample integration code in several languages Node.js, PHP, Python, ReactJS and .NET, these have API specifications allowing interoperable integrations with customizable user interfaces.[11][12][13] With Collabora Online documents remain on the server, each user shares the same document concurrently allowing just one document to be edited in real-time and interactively with no extra lag or latency to see other users’ typing. It avoids the need for locking of paragraphs in text documents. It enables collaborative real-time editing of word processing documents, spreadsheets, presentations, drawing and vector graphics.

Recently[when?], 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

[edit]

Real-time collaborative editing can occur online in web applications such as Microsoft Office on the web (formerly Office Online) – which supports online (web-based) simultaneous editing (which Microsoft refers to as "Co-Authoring") of Word documents, Excel spreadsheets, PowerPoint and other Microsoft Office documents stored on Office.com, OneDrive or SharePoint cloud storage – or Google Docs and other Google Workspace productivity (office suite) apps – for online collaborative editing of word processing and other documents stored in Google Drive. Real-time collaborative editing can also occur in hybrid manner, such as with Power Sheet BI for Excel,[16] in offline, web-based, and online collaborative editing in desktop software as well as web-based and mobile apps, which can be synchronized automatically with instant access to version history. 2020 has seen a resurgence of interest in embedding these applications into secure web applications, particularly for business use-cases, with Microsoft and Vaadin taking the lead with specialized real-time collaboration backends that handle the complexities of real-time synchronous data sharing, which developers can utilize through APIs.[17][18] Mozilla released in 2013 the javascript library TogetherJS, which adds real-time collaborative editing to any web application via a messaging system and optionally an operational transform algorithm for forms synchronization.[19]

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

[edit]

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:

  1. Request an 'edit document' token from the server
  2. Wait until the server says it's our turn to edit the document
  3. Tell the server how to edit the document
  4. 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 user experience, a basic collaborative editor can also be created in a client–server model. In a client–server scenario, one of the editor instances is assigned the role of collaboration server when the document is opened. This server ensures that other editors are kept in sync by determining network latency and acting as a time synchronization server. The server receives timestamped notifications of changes made to the document by other users. It determines how those changes should affect its local copy, and broadcasts its changes to the collaboration pool. In some models, the changes are not reflected on a client until an official response is returned from the server, even if those changes were made locally.

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

[edit]

References

[edit]
  1. ^ "User manual". Archived from the original on 2009-02-21.
  2. ^ Michael Arrington (2005-09-27). "JotSpot Live — The Perfect Wiki?". TechCrunch.
  3. ^ Michael Arrington (2008-02-27). "It Took 16 Months, But Google Relaunches Jotspot". TechCrunch.
  4. ^ David Chartier (2008-02-28). "First look: Google relaunches JotSpot as Google Sites". Ars technica.
  5. ^ Dan Farber (2008-02-27). "JotSpot reincarnated as Google Sites". CNET News. Archived from the original on 2008-05-15. Retrieved 2008-03-19.
  6. ^ Mark 'Rizzn' Hopkins (2008-02-27). "Google Finally Frees JotSpot with Google Sites". Mashable.
  7. ^ Ina Fried and Josh Lowensohn (2010-08-04). "Google pulls plug on Google Wave". CNET.
  8. ^ SunChengzheng; SunDavid; NgAgustina; CaiWeiwei; ChoBryden (2020-01-04). "Real Differences between OT and CRDT under a General Transformation Framework for Consistency Maintenance in Co-Editors". Proceedings of the ACM on Human-Computer Interaction. 4: 1–26. arXiv:1905.01518. doi:10.1145/3375186.
  9. ^ "Frequently Asked Questions". fluidframework-docs.azureedge.net. Retrieved 2020-11-02.
  10. ^ "Fluid Framework". fluidframework-docs.azureedge.net. Retrieved 2020-11-02.
  11. ^ 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.
  12. ^ "Collabora Online SDK". Archived from the original on 2021-03-01. Retrieved 2021-09-02.
  13. ^ 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.
  14. ^ "Live Share for VS Code". Retrieved 2022-02-26.
  15. ^ "Teletype for Atom". Retrieved 2022-02-26.
  16. ^ "FREE No-Code App, Analytics AI, Blockchain, Excel&Web 3.0 Collaboration Platform". PowerSheet.ai. Retrieved 2020-06-08.
  17. ^ "Fluid Framework". fluidframework-docs.azureedge.net. Retrieved 2020-11-02.
  18. ^ "Collaboration Engine". Vaadin. Retrieved 2020-11-02.
  19. ^ "Mozilla Labs : TogetherJS Technological Overview". togetherjs.com. Mozilla Labs. Retrieved 2023-01-12.
  20. ^ "Meet Collaboration Engine: The simplest way to build collaborative web apps". Vaadin. Retrieved 2020-11-02.
  21. ^ "Collaboration Engine". Vaadin. Retrieved 2020-11-02.
  22. ^ "A sneak-peek at the future of Vaadin's real-time collaboration features". Vaadin. Retrieved 2020-11-02.
  23. ^ "Introducing Vaadin Flow and Fusion". Vaadin. Retrieved 2020-11-02.
  24. ^ 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.