Colloquium at Stanford
The Unfinished Revolution


Memorandum

Date: Sat, 29 Jan 2000 21:35:54 -0800

From:   Eric Armstrong
eric.armstrong@eng.sun.com>
Reply-To: unrev-II@onelist.com

To:     unrev-II@onelist.com"

Subject:   [unrev-II] Possible Editor and Architecture

This note covers a possible editor and some architecture ideas. The information here is based on some email conversations that grew out of the literate programming group, with the idea of using source code stored in XML to encourage literate programming.

[The project for maintaining source code in XML is slated to have it's web page at...

http://extende.sourceforge.net/

But that page isn't active yet. We're still trying to figure out why the mailing list doesn't work and sort out other admin issues.]

Goal

One of the goals for that project has been extensible XML editor -- one in which you can subclass existing code to modify it's behavior and then use the subclass in place of the original. That way, you can change not only the menu arrangements and keystroke assignments, but the very operation of the editor itself. (The major benefit of that strategy is that allows building up a repository of editor objects that operate in ways that are familiar to a variety of users. The resulting "editor construction kit" lets you build the editor of your dreams, or at least one you are familiar with.)

Possible Editor

One option is to use the Apache editor, modifying it to achieve the desired level of extensibility. Another option is to use a Java-based XML recently developed by Grzegorz Skorupa. Grzegorz was kind enough to put it under a FreeBSD license and make the source available at http://pikosoft.dragontiger.com/index_en.html.

(This is the first editor I've seen that works along the lines I had envisioned -- with a JTree for structure and a secondary pane for content. Most don't present what I consider a reasonable interface to the user. Adept being a notable, and expensive, exception.)


Possible Architecture

As part of the eXtenDE project, Warner Ornstine (who suggested its name) has been working on an "Extension Cord Architecture" that allows new components to be added or replaced in an existing application. [He is currently examining JEdit, to see if it's EditBus can be used, or modified to work, with XML. JEdit is at:

http://www.gjt.org/~sp/jedit.html

This work is still in a very early stage, and exists only as a top level outline right now. However, that architecture might well be appropriate for the initial DKR prototype.

The heart of the architecture is Cord Manager, which manages all active Extensions and passes information from Plugs to Outlets.

The primary extensions are:

Plugs - these send information to the Cord Manager Outlets - these accept information from the Cord Manager

Finally, a Cord may consist of many Plugs and Outlets.

Sincerely,


Eric Armstrong
eric.armstrong@eng.sun.com


Copy to:

  1. warnero@eng.sun.com,
  2. Grzegorz Skorupa