Douglas C. Engelbart. Study for the Development of Human Augmentation Techniques. Final Report under Contract NAS1-5904, SRI Project 5890 for NASA Langley Research Center, Stanford Research Institute, Menlo Park, Ca., July 1968.


1 On-Line User Systems
    1A Introduction
      1A1 The user features outlined below are essentially common to both facilities, but the particulars are given for the new multiconsole system.

      1A2 The basic facility will have the following characteristics:

        1A2A 12 CRT consoles, of which usually 10 will be located in offices of AHI research staff. Each console may operate entirely independent of the others.
        1A2B Each individual has private file space, and the group has community space also, on a high-speed disc with a capacity of 96 million characters.
        1A2C The system is not intended to serve a general community of time-sharing users, but is being shaped in its entire design toward the special needs of the "bootstrapping" experiment.
    1B Work Stations
      1B1 The display at each of the work stations (see Frontispiece) is provided on a high-resolution, closed-circuit television monitor.
        1B1A The alphanumeric keyboard hs 94 normal characters in two cases. A third-case shift key provides for future expansion, and five special keys are used for system control.
      1B2 Cursor Device (Mouse)
        IB2A The mouse (see Fig. 2) produces two analog voltages as the two wheels rotate, each changing in proportion to the X or Y movement over the table top.
          1B2A1 These voltages control -- via an A/D converter, the computer's memory, and the display generator -- the coordinates of a tracking spot with which the user may "point" to positions on the screen.
          1B2A2 Three buttons on top of the mouse are used for special control.
        1B2B A set of experiments comparing twithin our techniques of interaction) the relative speed and accuracy obtained with this and other selection devices showed the mouse to be better than a light pen or a joy stick (English et al., 1965; English et al., 1967).
          1B2B1 Compared to a light pen, the mouse is generally less awkward and fatiguing to use, and it has a decided advantage for use with scan-raster, write-through storage tube, projection, or multiviewer display systems.
      1B3 Five-Key Handset
        1B3A The five-key handset has 31 chords or unique key-stroke combinations. In one of the five "cases," these are interpreted as lower-case letters and punctuation. In another, the letters are interpreted as upper case. (The keystroke codes for the letters A to Z are the binary combinations for to 26.) Two other cases contain digits and special characters; the fifth case is "control case."
          1B3A1 A particular chord (the same chord in each case) will always transfer subsequent input-chord interpretations to control case.
          1B3A2 In control case, one can delete through recent input, specify underlining for subsequent input, transfer to another case, visit another case for one character or one word, etc.
          1B3B One-handed typing with the handset is slower than two-handed typing with the standard keyboard. However, working with one hand on the handset and one on the mouse, the coordinated interspersion of control characters and short literal strings from one hand with mouse-control actions by the other yields considerable advantage in speed and smoothness of operation.
            1B3B1 For literal strings longer than about ten characters, one tends to transer from the handset to the normal keyboard.
            1B3B2 Both from general experience and specific experiment, it seems that enough handset skill to have its presence begin to pay off can generally be achieved with about five hours' practice -- beyond this, skill grows with usage.
    1C Structure of Files
      1C1 Our working information is organized into files, with flexible means for setting up indices and directories and for moving files in and out of storage. Each file is itself highly structured in its internal organization.
        1C1A The specific structure of a given file is determined by the user, and is an important part of his conceptual and study-manipulate treatment of the file.
      1C2 The introduction of explicit "structuring" to our working information stems from a very basic feature of our conceptual framework (Engelbart, 1963) regarding means for augmenting human intellect.
        1C2A With the view that the symbols one works with are supposed to represent a mapping of one's associated concepts, and further that one's concepts exist in a "network" of relationships as opposed to the essentially linear form of actual printed records, it was decided that the concept-manipulation aids derivable from real-time computer support could be appreciably enhanced by structuring conventions that would make explicit (for both the user and the computer) the various types of network relationships among concepts.
        1C2B As an experiment with this concept, we adopted some years ago the convention of organizing all information into hierarchical structures, with provisions for arbitrary cross-referencing among the elements of a hierarchy.
          1C2B1 The principal manifestation of this hierarchical structure is the breaking up of text into arbitrary segments called "statements," each of which bears a number showing its serial location in the text and its "level" in an ''outline" of the text.
        1C2C To set up a reference link from Statement A to Statement B, one may refer in Statement A either to the location number of B or to the "name" of B. The difference is that the number is vulnerable to subsequent structural change, whereas the name stays with the statement through changes in the structure around it.
          1C2C1 The convention is that the first word of a statement will be treated as the name for that statement, if it is enclosed in parentheses. For instance, Statement 0 on the screen of the Frontispiece is named "AFI". References to these names may be embedded anywhere in other statements, for instance as "see(spec)," with special format allowing a viewer to know explicitly that this refers to a statement named "spec". The reference may also appear as a string of characters in a context such that the viewer can infer the referencing.
          1C2C2 This naming and linking, when added to the basic hierarchical form, yields a general structuring capability that is quite flexible. These structuring conventions are expected to evolve relatively rapidly as our research progresses.
        1C3 For some material, the structured statement form may be undesirable. In these cases, there are means for suppressing the special formatting in the final printout of the structured text.

        1C4 The basic validity of this approach has been well established by our subsequent experience.

          1C4A We have found that in both off-line and on-line computer aids, the conception, stipulation, and execution of significant manipulations are made much easier by the structuring conventions.
          1C4B Also, in working on line at a CRT console, not only is manipulation made much easier and more powerful by the structure, but a user's ability to get about very quickly within his data and to have special "views" of it generated to suit his need are significantly aided by the structure.
        1C5 We have come to write all of our documentation, notes, reports, and proposals according to these conventions, because of the resulting increase in our ability to study and manipulate them during composition, modification, and usage. Our programming systems also incorporate the conventions. We have found it to be fairly universal that after an initial period of negative reaction in reading explicitly structured material, one comes to prefer it to material printed in the normal form.
    1D Studying Files
      1D1 We use computer aids for two principal "studying" operations: (I) locating and positioning the user's view to particular passages within a file, and (2) constructing special views of the material beginning with that passage.
        1D1A In normal, off-line document studying, a person often does the first type of operation, but the second is like a scissors-and-staple job and is rarely done just to aid one's studying.
        1D1B (A third type of service operation that will undoubtedly be a significant aid to studying is question answering. We do not have this type of service.)
      1D2 Controlling Location of Displayed "View"
        1D2A Designating a "point" in the file to which one wants to "go", i.e. at which he wants the construction of his next display view to begin, is usually done by specifying a given "view-start" statement within the file. Such a designation may be made in several ways:
          1D2A1 By direct selection when the statement is visible on the display -- the statement (actually any character within the statement) is simply pointed to with the mouse.
          1D2A2 By indirect "marker" selection -- where the statement is not on the display but the user has previously placed a temporary, named marker on some character of the statement, he can select that character (and thus the statement) by giving the name of the marker. Our control procedures make this essentially as quick and simple as a direct-screen selection.
          1D2A3 By furnishing either the name or the location number of the statement, which can be done in either of two basic ways:
            1D2A3A Typing it in from the keyboard
            1D2A3B Selecting a word from the file that is the name or number (or contains it within the special reference-link word format) -- and this may be done either directly or via an indirect marker selection.
        1D2B Specifying where to go relative to a designated statement -- a user may request that he be taken to a particular statement bearing a specified structural relationship to the one specifically identified. For instance, after identifying Statement 3E4 by one of the above means (assume it to be a member of the list 3E1 through 3E7), a user may ask to be taken to its:
          1D2B1 Successor, i.e. Statement 3E5
          1D2B2 Predecessor, i.e. Statement 3E3
          1D2B3 List Tail, i.e. Statemnt 3E7
          1D2B4 List Head, i.e. Statement 3E1
          1D2B5 List Source, i.e. Statement 3E
          1D2B6 Sub-head, i.e. Statement 3E4A.
        1D2C Besides being taken to an explicitly identified statement, a user may ask to go to the first statement in the file (or the next after the current location) that contains a specified word or string of characters.
          1D2C1 He may specify the search string either by direct screen selection, or by indirect marker selection.
      1D3 Controlling Form of View
        1D3A The "normal" view beginning at a given location resembles a frame cut out from a long scroll upon which the statements are printed in sequential order. Such a view is displayed in the Frontispiece.

        1D3B Otherwise we have three independently variable view-specification conditions that may applied to the construction of the displayed view: level clipping, line truncation, and content filtering.

          1D3B1 Level and Truncation Specifications
            1D3B1A Given a specified level parameter, L (L=1,2,....,ALL), the view generator will first put on the display the designated view-start statement, and thereafter proceed as for the normal case except skipping over all statements whose "level" in the hierarchy is greater than L. (For example, Statement 3E4 is third level, 3E second, 4B2C1 fifth, etc.)
              1D3B1A1 Thus to see only first-, second-, and third-level statements, one specifies L=3.
            1D3B1B Given a specified truncation parameter, T (T=1,2,...,ALL), the view generator will display only the first T lines of each statement.
          1D3B2 Content Specification
            1D3B2A Given specifications for desired content (written in a special high-level content-analysis language), the view generator will display only those statements that have the desired content. One can test for the existence of simple strings, or logical combinations thereof, or for such things as having the word "memory" within four words of the word ''allocation".
        1D3C ''Freezing" Statements
          1D3C1 One may also preempt an arbitrary amount of the upper portion of the screen for holding a collection of "frozen" statements. The remaining lower portion is treated as a reduced-size scanning frame, and the view generator follows the same rules for filling it as described above.
          1D3C1A The frozen statements may be independently chosen or dismissed; each may have line truncation independent of the rest; and the order in which they are displayed is arbitrary and readily changed. Any screen-select operand for any command may be selected from any portion of the display.
        1D3D Figures 3 and 4 show views generated from the same starting point with different level-clipping parameters. This example happens to be of a program written in our Machine-Oriented language (MOL, see below).
Fig. 3 View of Part of an MOL Program
Level Parameter = 2, truncation parameter = 1
Fig. 4 View of Part of an MOL Program
Same as Fig. 3, but with Level Parameter = all
Fig. 5 View of Part of a CML Program, Showing Use of Reference Hopping
The top six statements are "frozen."
        1D3E Figure 5, showing a view of a program written in our Control Metalanguage (CML, see below), demonstrates the freezing feature, where Statements 4C, 4C2, 3B, 3B1, 3B2, 3B3, and 3B4 are frozen, and Statements from 3J on are shown normally with L =3, T = 1.
          1D3E1 The freezing here was used to hold for simultaneous view four different, functionally related process descriptions; the subroutines (named +bug1spec and +wait) were located each by use of the "hop-to-name" feature described above.
    1E Modifying Files
      1E1 Here we use a standard set of operations, specifying with each operation a particular type of data entity. (The upper-case letters below are the single-letter designators used for specifying operations and entities.):
        1E1A Operations: Delete, Insert, Replace, Move, Copy

        1E1B Entities (for structure manipulation): Statement, Branch (statement plus all substructure), Group (sublist of branches), or Plex (complete list of branches)

        1E1C Entities (within statements): Character, Text (arbitrary string), Word, Visible (print string), Invisible (gap string).

      1E2 Structure may also be modified by joining statements or by breaking a statement into two at a specified point.
    1F Outputting Files
      1F1 Files may be sent to any of a number of different output devices to produce hard copy -- upper/lower-case line printer, on-line high-quality typewriter, paper tape to drive various off-line typewriters, or via magnetic tape to an off-line CRT-to-film system from which we can produce xerox prints, multilith masters, or microform records. NOTE: not all of these are implemented at present.
      1F2 Flexible format control may be exercised in this process by means of specially coded directives embedded in the files -- running headers, page numbering, line lengths, line centering, suppression of location numbers, indenting, right justification (hyphenless), etc. are controllable features.
    1G Compiling and Debugging Programs
      1G1 Source-code files written in any of our home-built compiler languages (see below), or in the SDS 940 assembly language (ARPAS, in which our compiler output is produced) may be compiled under on-line control.
      1G2 For debugging, we have made a trivial modification to the SDS 940's time-sharing monitor so as to operate the DDT loader-debugger from our CRT displays. Though it was designed to operate from a Teletype terminal, this system gains a great deal in speed and power by merely showing with a display the last 26 lines of what would have been on the Teletype output.
    1H Calculating
      1H1 The same small innovation as mentioned above for DDT enables us to use the CAL system from a display terminal.
2 Off-Line User Systems
    2A This is the third stage in the evolution of our Off-Line Text-Manipulation System (FLTS).
      2A1 The first stage was the "Z-Code System" (described in Engelbart, 1965, where it was actually used to do the initial writing for the entire report. It was implemented on a CDC 160A and was used solely for original preparation of paper-tape computer-throughput text, where it allowed selective deletion of most-recent typing.
      2A2 The second stage was the addition to the above of a processor that permitted the merging with previously established computer-held files of new input containing new text material as well as instructions to change both old and new material. This system enabled the complete development of documents to be carried out with computer aid, where an arbitrary succession of cycles of addition, modification and reorganization could be carried out. This version of FLTS was described in Engelbart and Huddart, 1965 (which was developed in its entirety with the aid of this text-manipulation system).
    2B For this third stage, implemented on our CDC 3100, a set of features were specified to extend and improve those of the earlier systems mentioned above.
      2B1 The result is a powerful system for computer processing of textual material prepared off-line on any device which produces punched paper tape or cards; input may be direct or via a computer memory device -- i.e., text stored on a disc may be accessed by the system and handled as if it had been read in directly.
      2B2 The output of the system is punched paper tape for use on a Teletype, Flexowriter, or Dura automatic typewriter; alternatively the text may be output to a file in computer memory for later use.
    2C Basic Features of FLTS
      2C1 This off-line system is fully compatible with our CDC 3100 on-line system (NLTS). They both use the same file-structuring conventions and the same hard-copy output processor. Either system can operate on files produced by the other.
      2C2 With FLTS, a newly typed entry file may address any prior text, either within itself or within a previously generated file.
      2C3 New statements within these existing structures may be inserted simply by typing an appropriate (perhaps interpolative) location number.
      2C4 A prior statement together with its entire substructure (this construct is called a "branch") may be moved to any part of the addressed information structure, merely by designating the new location number (perhaps interpolative) for the referenced statement. Its substructure retains the same relative structural position to the referenced statement in its new location.
      2C5 A branch may be deleted simply by referring to its location number (as it appears in the printout, regardless of intervening -- but as yet unexecuted -- specifications for structural modifications which may eventually result in a new location number being assigned to the referenced statement).
      2C6 The text content of any statement may be replaced by merely designating its location number, then typing in the replacement text.
      2C7 The text content of any statement may be copied, either as a new statement at a newly specified location number, or as material to be appended to the end of an existing statement.
      2C8 Newly typed text content may be appended to any designated prior statement. This new text may include any of the editing instructions described below.
      2C9 Within any statement, embedded instructions (special sequences of text characters) may be included (or appended, see above) to specify additions or modifications to that statement.
        2C9A Using any one of three different means, a point in the text lying between the statement start and the instruction may be specified.
        2C9B Then one can either specify a string of characters to be inserted at that point, or specify that all of the characters from that point forward through the instruction are to be deleted.
          2C9B1 It is permissible to include, within the string of characters being inserted at the reference point, an instruction to cause material preceding that point to be deleted -- thus effecting a replacement operation.
          2C9B2 One means of specifying the reference point is by quoting a string of characters and specifying whether the reference point is just "in front of" or just "in back of" the first occurrence of this string (within the statement).
          2C9B3 Another means of designating a reference point is to count lines, words, and characters relative to the instruction.
          2C9B4 The third means is to count lines, words, and characters as follows:
            2C9B4A Lines forward from the beginning of the statement or backward from the end of the statement
            2C9B4B Words forward from the beginning of the line or backward from the end of the line
            2C9B4C Characters forward from the beginning of the word or backward from the end of the word.
    2D Special Features
      2D1 When addressing several prior files, whose ranges of statement numbers may overlap and thus threaten ambiguity in their referencing, the user may specify that for his current purposes, each of these files is to have a (different) specified sequence of characters prefixed to every one of its location numbers.
        2D1A This allows him to establish temporary, unique referencing to each statement of each file, by prefixing that statement's location number with its file's assigned prefix characters.
        2D1B He may thus assemble any number of files into one large structure, within which he may move, copy, delete, and insert statements and substructure sections to effect an arbitrary delete/merge/rearrangement.
      2D2 A user may identify different intervals of his new input as pertaining to independent FLTS jobs, merely by specifying a unique "sequence number" for each job.
        2D2A To switch his attention (i.e., his associated input material) to a different job, he need only specify the associated new sequence number, and begin typing material for the second job.
        2D2B When this new input is subsequently processed by FLTS, the computer will initially isolate the various segments of input occurring between successive sequence-specification points.
        2D2C Then, to assemble the relevant new input for each job, it will collect those segments that begin with the sequence-specifying number that corresponds to that job (as communicated to FLTS by the computer operator).
        2D2D This provision allows a person sitting at his paper tape punching typewriter to shift his input typing back and forth between various tasks with great flexibility.
    2E The off-line system will allow direct interaction with the disc files, allowing an off-line user to modify any file, or merge and modify any sets of files, without the bother of so much intermediate paper tape.