WIP text editor

April 12, 2007


The WIP text editor is a work-in-progress text editor. The source code will be released as free software. The immediate goal is to develop a Web-based programmer's text editor suitable for editing Web pages, program code, and other plain text documents. The project is also a test bed for approaches to browser-based user interfaces and associated server components. It supports collaboration, with multiple users simultaneously editing the same text. As a Web-based editor, text files are not stored on the user's local hard drive but on the server. The server does not store the text itself, but rather records an action sequence from which the text is recreated. A new editor is created through a Web interface, and has a URL. Many of the keyboard commands are inspired by vi, and the editor is modal, like vi. Editing is line-oriented, and the action sequence and collaboration features are generally line-granular.


The current version, 0.1, is an early alpha release and has extremely limited functionality. It should be regarded as a development project only and not as a practically usable text editor. A few of many known limitations:

Design and Implementation

The server side component is a very simple REST service. Each editor has it's own URL and is backed by a simple text file on the server. Editing actions are appended to this file. The current state of the text document is generated and maintained in the JavaScript client. Updates are requested from the server by the client and the server implements hanging-GET via an Apache module. The architecture is very simple on the server side and flexible enough to support other interactive, multi-client applications other than text editing.

Action Sequences

This editor demonstrates the approach of storing a record of all user actions rather than merely storing the result of those actions. Editing actions on text include deleting a line, adding a line, changing the text of a line, and operations on sets of lines. This approach is not limited to text documents; for example, an editor which stored the entire history of editing on a raster image would be much more useful than one which does not. It is not necessary to 'save' the document, since the complete history is saved. This feature also enables collaboration, as changes can be easily propagated among multiple users.

Current Version

Version 0.1 consists of a single collection, which links to individual editors. Editors can be created, but not deleted, named, or otherwise managed (except by the server admin) in this version.

Version 0.2

The goal for the next version is to support the basic daily text editing needs of the author, and rudimentary collaborative editing. Planned 0.2 features include: