Context

(concurrent text editor)

A peer-to-peer document-sharing application that allows groups of users to easily collaborate, supports intermittent connectivity, and provides intelligent merge and commit services.

Get Context

In the long history of humankind (and animal kind, too) those who learned to collaborate and improvise most effectively have prevailed.

Charles Darwin, in support of our group’s P2P design

Prototype

The Context prototype is a shell text editor that implements our conflict resolution strategy. It works wherever Java does. Run java -jar context.jar and see for yourself.

Download Context 

Proposal

The Context proposal outlines the representation of a document stored at each peer, along with the protocol and algorithms the nodes use to exchange updates.

View Proposal  

Paper

The Context research paper describes the design and evaluation of the full system in detail. Reading it will put our synchronization and fault-tolerant mechanisms into context.

View Paper  

CommandShortcutDescription
new_user username nu Creates a document copy for username
switch_user username su Switches to the document copy owned by username
merge username1 username2 m Merges the document copies of username1 and username2
add sentence a Appends sentence to the end of the working copy
insert index sentence i Inserts sentence at location index
delete index d Deletes sentence at location index
modify index new_sentence mod Changes sentence at location index to new_sentence
move old_index new_index mv Moves sentence at location old_index to location new_index
move_block start_index-end_index new_index mvb Moves a block of sentences at locations start_index to end_index to location new_index
commit commit_name c Commits the working copy under commit_name
print_committed commit_name pc Prints out the document committed under commit_name