The main motivation for this note is to describe the hierarchy in Engelbart’s Augment (NLS) system. These ideas stimulate discussion of the good and the bad in hierarchical software design.

When Doug Engelbart and much of his staff came to Tymshare, they brought the NLS system which ran on the PDP-10. NLS was renamed ‘Augment’ for marketing reasons. An augment system ran on one computer and while there were plans to federate Augment systems on different computers, the computers stood alone in my Augment experience. Many simultaneous users would access one computer remotely and thus collaborate.

There were many elements to the Augment system but I restrict myself here to the hierarchical text system which prefigured the web and achieved some of Ted Nelson’s hypertext goals.

The body of Augment text was composed of statements linked into a tree or acyclic graph with a distinguished root. For text to exist in the Augment system, it had to be situated somewhere in the hierarchy. The tree was mutable but modifications that would make text unreachable or introduce cycles were prevented.

There was a several parameter ‘viewspec’ which determined how the tree structure was mapped to the screen. Viewspecs were meant to be supplies by the reader but it was possible to provide a default viewspec in a link (q.v.). Most or all of the potential ways of displaying the text made the tree structure evident. Critical among these display modes were truncations of the tree, usually a depth truncation. Statements were usually displayed as paragraphs. It was easy and quick to change viewspecs and an experienced user might do so many times per minute.

The Augment system organized text files in directories much like the current notion of Unix directories, which themselves form a hierarchy. A full location specification would consist of a hierarchical path name followed by ‘within file’ navigation information. Protection (read access, read-write access) was provided by the OS at the file level.

Augment provided links within the text which could be followed with a mouse click. The address within the link was visible and might include an alternate file name. Beyond the optional file name came a sequence of navigational items which were sequentially followed. I remember the following:

Quoted text
The file would be searched forward from the current position for a statement containing the text.
Author Assigned Name
A statement might begin with parenthesized text which would serve as a navigational target.
Acquisition number
A number assigner to a statement as it was created. Such numbers are not reused within a file. Some view specs showed the acquisition number.
“.o”
The first statement of the file.
“.d”
The first child of the current statement.
“.n”
The next sibling.
“.p”
The previous sibling.
“.t”
The last sibling.
“.u”
The parent of the current statement.
“.h”
The first sibling
Combinations such as “.dtpp”
The same as “.d”, “.t”, “.p,”, “.p” sequentially.

Almost everyone used the chording keyset to enter commands. A keyed “JL” would cause “Jump Link” to appear at the top of the screen. A subsequent mouse click on a link would take you the place described by the link. “JB” (=> Jump Back) followed by an OK click would consult a stack of recent places.

There were several sorts of portions of the tree with established names.

Branch
A subtree indicated by its root.
Plex
A set contiguous siblings. Indicated by first and last sibling.
Text
A portion of a statement. Indicated by first and last character.
Words
A portion of a statement. Indicated by first and last word.
There were others. To move a contiguous sequence of statements, and their progeny, to another place you would type “MP” (=> Move Plex beginning?) then click first statement (=> ending?) click second statement (=> to where?) and click on statement after which the text was to be moved.

The system provided simultaneous windows on the screen to show distant parts of the same or different files. It was thus possible to click on several places for these complex commands.


personal use personal use; Wiki comp; sss; in passing; context of code

Review of famous demo Offer to fill in details.