Collaborative real-time editor
A collaborative editor is a form of collaborative software application that allows several people to edit a computer file using different computers, a practice called collaborative editing. There are two types of collaborative editing: real-time and non-real-time. In real-time collaborative editing (RTCE), users can edit the same file simultaneously, whereas in Non-real-time collaborative editing, the users do not edit the same file at the same time (similar to revision control systems). Collaborative real-time editors generally permit both the above modes of editing in any given instance.
History
The first instance of a collaborative real-time editor was demonstrated by Douglas Engelbart in 1968, in The Mother of All Demos. Actual implementations of the concept took several decades to appear.
Instant Update was released for Mac OS in 1991 from ON Technology.[1] Later, a version for Microsoft Windows was released as well, allowing real-time collaboration across these two operating systems. Instant Update relied on a work group server to coordinate documents updated in real time on multiple clients.
More recently, SubEthaEdit is Mac-based, and leverages the Mac Bonjour communications platform. SubEthaEdit won numerous awards, and was initially offered free of charge. But later it became commercial because there were not enough voluntary donations to keep it free. The Gobby collaborative editor aims to be very similar to SubEthaEdit,[citation needed] and is cross-platform and open source.
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 (now called Google Docs), (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, 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] EtherPad was the first web editor to provide a smooth, character-by-character real-time text performance,[citation needed] something that previously was only available in desktop editors.
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 subsequently 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 in JavaScript entirely and built on top of node.js.
Technical challenges
This article 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.[8]
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, such as on Apple's iPhone platform. 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.[9] 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.
Recent developments
With advances in internet capacity, collaborative video editing is also becoming mainstream. Collaborative TV production is possible, in which the directors, producers and editors, all of whom contribute to the post-production process, are able to work together remotely. Web-based non-linear editing systems allow collaborative editing of video, similar to the way in which collaborative text editors have worked for text. See Comparison of video editing software and Real-time video editing.
The increasing popularity of WiFi enabled mobile devices, such as Apple's iPhone, has also driven the development of collaborative tools. While simplistic in comparison to real-time video editing software, these applications allow users of mobile devices to create and edit documents over the wireless network. NetSketch was the first collaborative application for the iPhone, and focused on real-time collaborative drawing.[10]
List of current editors
Real-time collaborative text editing software
Software
- Abiword (multi-platform, although Mac OS X version does not allow collaboration) is a free software, open source editor that added a real-time collaborative editing plugin AbiCollab in the 2.6 release. This editor is the basis for the collaborative Write activity on the OLPC XO-1.[11]
- ACE (Linux, Microsoft Windows, Mac OS X, Solaris, FreeBSD) is a free software, collaborative text editor.
- ActiveState Komodo is an Integrated development environment that allows for real-time code collaboration (Version 7)
- Coda (Mac OS X).
- CoWord (Microsoft Windows) converts Microsoft Word into a real-time collaborative word processor and allows multiple users to collaboratively edit the same Word document at the same time.
- GNU Emacs provides basic collaborative editing support under the X Window System, using the "make-frame-on-display" command. It can also use the Obby protocol through the plugin Rudel.
- Gobby (Linux, Microsoft Windows, Mac OS X) is a free software, open source collaborative editor using the Obby protocol.
- HMCE (hierarchical multi-cursor editor) (Linux/GPL) is Free Software. It supports editing a tree-hierarchy of lines.
- ICT is a framework that allows multiple users to edit a shared document with unmodified, heterogeneous single-user editors.
- Microsoft Office version 2010 (for Windows) and 2011 (for Mac) support simultaneous edits if the document is stored on a SharePoint server or on SkyDrive.
- Microsoft SharePoint Workspace, previously known as Groove — a third party product acquired after its release by Microsoft — is a desktop application that supports simultaneous edits of documents stored on SharePoint
- MoonEdit (Linux, Microsoft Windows, FreeBSD) is free for non-commercial use and allows basic collaborative editing.
- SubEthaEdit (Mac OS X).
Browser-based
- Adobe Buzzword
- Apache Wave - formerly "Google Wave" has been discontinued by Google; however, other companies and open source projects continue to offer software supporting (or aiming to support) the Wave Protocol.
- beWeeVee
- Cloud9 IDE
- CodeBunk[12] - Online collaborative real-time editor with support for compiling and running computer programs in several languages. Also provides a Video chat interface.
- Etherpad - open sourced after Google acquired and shut down the company
- EasyPad[13] - Free open source collaborative text-editor running on every shared host without database
- Firepad[14][15] - An open source, realtime, collaborative code and text editor based on Firebase.
- Google Docs
- Koding - Online Development Environment owned by Koding, Inc. which allows software developers to program and collaborate online in the browser without the need to download software development kits.
- Kune - Open source federated collaborative real-time environment specialized in group work, with social-networking features.
- Novell Vibe
- OneDrive - onlines storage with web based Office Web Apps and text editor for simultaneous collaboration
- Owncloud version 6 supports "Owncloud documents" for collaborative editing of rich text documents[16]
- ShowDocument
- ThinkFree
- XaitPorter - Collaborative Writing tool with automated formatting, numbering and layout. Integrated workflow and ability to reuse content from database.
Other real-time collaborative editing software
- Borland CodeWright has a CodeMeeting feature that supports chatting and exclusive file editing (1 user per file).
- Creately is a real-time collaborative diagramming application with supporting features like project and user management.
- Eclipse has two plugins called DocShare and Saros, that allow real-time collaborative editing of documents (DocShare) or projects (Saros).
- EditGrid supports real-time event-driven collaborative editing of spreadsheets on the web.
- eXpresso supports real-time asymmetric collaboration of Excel spreadsheets in a browser.
- Inkscape compiled with --enable-whiteboard offers the Pedro XMPP client, for collaborative drawing of vector graphics in Jabber instant messaging/chat environments.
- LucidChart is real-time collaborative diagramming web application built using HTML5 and other web-standards.
- Marratech is commercial software with a whiteboard function.
- Pidoco is a commercial web-based real-type wireframing and prototyping editor.
- Visual Studio has a plugin called VS Anywhere that allow real-time collaborative editing to support pair programming and Interactive code review features.
- Zoho Sheet provides browser-based real-time collaborative editing of spreadsheets.
See also
- Collaborative editing
- Collaborative document review
- List of collaborative software — Non-real-time collaborative software
- Distributed computing
- Operational transformation
- Revision control
- Paint chat
- Oekaki
- Real-time text — describes collaborative and non-collaborative applications, and refers to technical protocols.
References
- ^ "User manual".
- ^ 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.
- ^ Dan Farber (2008-02-27). "JotSpot reincarnated as Google Sites". CNET News.
- ^ 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.
- ^ Operational transformation
- ^ Microsoft Live Communications Marketed as real time but not real time in the sense of this article.
- ^ NetSketch The first collaborative editing application for the iPhone.
- ^ Rahul Sundaram (2008-05-08). "AbiWord Team Interview". Red Hat.
- ^ CodeBunk: Online Collaborative Editor and Compiler.
- ^ EasyPad: Free and Open Source RTCE.
- ^ Anthony Ha (2013-04-14). With Firepad, Firebase Adds Real-Time Text Collaboration To Its App Platform
- ^ Firepad: Open source collaborative code and text editing
- ^ "Owncloud 6 features". Retrieved 17 April 2014.
External links
- community-wiki: collaborative editor, a node page to coordinate the development of collaborative editors
- Say goodbye to collaboration, an article explaining the importance of Co-operation, also known as Real-Time Collaboration.
- Importance of User Interface Mock-Ups