Course Documents
     Main Page
     Contact Information
     Course Announcement
     Schedule and Syllabus
     Course Participants
     Discussion Forum
     Swiki Chat
     Lecture Material
     Independent Research
     Previous Course
Swiki Features:
  View this Page
  Edit this Page
  Printer Friendly View
  Lock this Page
  References to this Page
  Uploads to this Page
  History of this Page
  Top of the Swiki
  Recent Changes
  Search the Swiki
  Help Guide
Related Links:
     Atlas Program
     Center for LifeLong Learning and Design
     Computer Science Department
     Institute of Cognitive Science
     College of Architecture and Planning
     University of Colorado at Boulder
Collaborative Editor Group

Team Member

Adam: adam.torgerson[at]colorado[dot]edu

Final Report 4/27

Presentation Slides: pres.pdf

First Progress Report 4/4

Second Progress Report 4/13

Goal and Objective

I would like to create an initial prototype of a collaborative text editor, in the vein of SubEthaEdit to enable users to collaborate on a text document.


Effective collaboration across time and distance has been a popular goal for some time now. But my recent experiences of trying to collaborate with others for group projects, especially for collaborative coding, there is not much out there besides SubEthaEdit, which is a closed commercial product that only runs on OS X. Given that my development environment is GNU/Linux and I prefer to use Open Source software, this is not an acceptable solution. In one instance of trying to collaboratively edit a document, I used a terminal reflection screen (VNC) to view a common file with another editor. Even under this setup only one person was able to type directly into the text file at a time.

SubEthaEdit uses the Rendezvous (a minimal configuration network discovery protocol) and IP network protocols to enable users to edit a a common document simultaneously. A user would launch the application, initiate a document, and enable sharing. Another user would then join the shared editing session. Each member would choose a unique color to display their contribution to the document. As the user types in their window, SubEthaEdit would display the resulting text immediately on the other user's view of the document.

SubEthaEdit also supports direct integration with instant message that would allow users to interact apart from the collaborative text. This feature allows for user interaction that supports the collaboration process.


I propose the following high level tasks. First, the existing features of SubEthaEdit will be analyzed for its collaborative approach and implementation for elements that we can reuse and those that need to be improved upon. Based on the analysis, I will create an initial development plan that will emphasize software component reuse due to the short project deadline. I hope to reuse a good open source text editor and integrate the needed network support.

Specific Challenges

  • Can I reuse an editing component from an Open Source project? I am not interested in building an editor, so it would be ideal if I could modify an existing editor or editing framework to support collaboration.

  • Editor design: There are many decisions to be made with regard to what editor/editing framework I will use, also which programming language that will be used for implementation, and whether to use a binary network protocol, XML, and/or an RPC scheme.

  • Can I integrate Zeroconf to support Rendezvous-like behavior?

  • Should I try to integrate with an existing chat client? Using an existing chat client may have drawbacks, the user needs the chat software installed and usually needs an account with the main chat servers. I could also build a simple chat interface component into the editor itself.

  • Can we enhance the interaction model to incorporate off-line collaborative activity? If so, is there any way to integrate swiki activity into the editor?

Relationship to Course

The proposed project directly addresses the theme of design for collaboration. I hope to integrate both a conceptual approach in understanding collaborative editing and a practical protocol which myself and members of my research group can use for collaborative code editing.

View this PageEdit this PagePrinter Friendly ViewLock this PageReferences to this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide