nudocs

command module
v0.0.0-...-1d5e4ec Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 23, 2018 License: MIT Imports: 9 Imported by: 0

README

NUDocs

NUDocs is a system for collaborative editing (think Google Docs). Unlike Google Docs, however, it is 100% peer-to-peer. There is no centralized server, and no hierarchy among the peers. It also contains a pluggable interface, so each user can use whichever text editor they prefer, provided that they implement our protocol. In theory, any extensible text editor will work. Plugins have so far been developed for Emacs and the browser.

Background

Computer supported cooperative work (CSCW) has been around since the late 1980s, prompted by the seminal work Concurrency Control in Groupware Systems. This initial algorithm proposed a peer-to-peer system, however, it was later discovered to be incomplete [COR95].

Most modern implementations like Google Docs rely on a centralized server. This offers certain advantages, like being able to create a total ordering of operations that happen on distributed nodes. It has costs as well though, like forcing users to trust a central authority.

The way we chose to get around this issue is by using the REDUCE algorithm, which is a peer-to-peer operational transformation algorithm [SUN98].

Operational Transformation

Operational transformation is a method for maintaining consistency and correctness between different sites running the collaborative editing software. The basic idea is that when an edit is proposed by a user (by them typing it into their editor), the change happens immediately for them, just as if they were typing in a regular text document. Then it sends that that operation to the other peers. The other peers will transform the operation they have received against their state, which may have changed if they made concurrent edits, or received edits from another site earlier. After the operation has been transformed, it is then applied to the document by the peer.

Demo

The following is a recording of a live document sharing session. The top half of the screen was the session happening through the Emacs interface. The bottom half of the screen was recorded on a different computer and is using the browser interface. The two videos were later spliced together. The Emacs debug log is also being printed in the top right corner.

Presentation

View our slides here.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL