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 many from 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 visions.

A 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 such a hierarchy and such a hierarchy comprised one file. The text and topology were 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 normally supplied by the reader but it was possible to provide a default viewspec in a link (q.v.). Most or all of the 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.
The first statement of the file.
The first child of the current statement.
The next sibling.
The previous sibling.
The last sibling.
The parent of the current statement.
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.

A subtree indicated by its root.
A set contiguous siblings. Indicated by first and last sibling.
A portion of a statement. Indicated by first and last character.
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.

This system matured as micro processors were arriving and to use the system would reasonably require a special terminal which was a commercial ‘glass teletype’ whose behavior was defined by a micro processor. The Augment group and added special Augment savvy code and a bit of hardware to the terminal. This allowed the host to move text on the screen and insert new text at arbitrary places. The hardware lacked a bit map but supported an 80 by 48 array of ASCII characters. The microprocessor also shipped mouse movements to the host that kept a map of what it had put on the screen. The microprocessor also delivered key-chord events to the host. Augment provided WYSIWYG to tree editing.