[net.unix-wizards] a description of vsh

pn (12/18/82)

Here is a copy of intro.ms for vsh:

.de VS
.I Vsh
..
.TL
A Visual Command Processor
for the
\s-2UNIX\s0 Operating System
.so author
.AB
.VS
is a visual interactive command processor or shell for the
.UX
[1] operating system.
.VS
is an attempt to provide a command processor for
high-bandwidth video terminals.
This orientation results in the printing of much more information
than provided by traditional command processors.
This orientation also results in closer control
over what is printed so nothing unintentionally
scrolls off the top of the screen.
The following set of papers describe
.I Vsh.
The first,
"A Visual Command Processor for the \s-2UNIX\s0 Operating System,"
describes the goals of
.VS
and how successfully they have been met.
The second,
"Vsh Code Organization,"
describes the implementation.
The third is a user's manual.
Finally, the appendix contains copies of the help files
available to the online user.
.AE
.PP
.so footnote
.ls 2
.SH
Introduction.
.PP
A program tends to complement its input/output devices.
For example,
batch programs interface to high speed printers.
A batch program's output tends to be lengthy and detailed,
since the printing costs little and extra detail
may obviate the need for extra runs.
Existing
.UX
programs have the opposite tendency since
they were usually built for slow, hardcopy terminals.
Because printing takes so much time,
messages tend to be terse,
and information is printed only when specifically requested.
High-bandwidth video terminals benefit from a different orientation:
One does not worry excessively about the time it takes to print
messages.
Instead, one is
concerned about losing information off the
top of the screen before it is used.
.SH
Operation.
.PP
.VS
is an attempt to apply this alternative strategy to a command processor.
.VS
is highly visual.
It automatically prints a considerable amount of information,
and makes sure that information does not
scroll off the top of the screen.
.PP
.VS
is organized around the
.UX
file system.
This file system has a hierarchical structure which can be
represented as a tree.
Each node in the tree is a directory and each leaf a file.
Each node and leaf has a name.
To reference a file one specifies the string of names
which traverses the file system from the root to the desired file.
One may also reference files relative to one's working directory.
This directory may be set
to any accessible directory in the file system.
.PP
.VS
operates by automatically displaying
the members of the working directory.
Each member is labeled with a lower case letter
in the fashion of an indexed menu.
To select a member one presses its corresponding letter.
After selection,
.VS
determines the nature of the file and takes appropriate action.
If the member contains \s-2ASCII\s0 text,
.VS
calls on the editor.
If the member is a directory,
.VS
makes it the working directory and displays its files.
.VS
recognizes many other types of files
as described in the user's manual.
.PP
Directories with a large number of members
cannot be displayed in a single screen.
Such directories are broken down into single-screen pages.
These pages are selected by typing in their corresponding number.
To select a file in such a directory,
one first selects the page, then the file.
.PP
One can do more than select files and directories.
By pressing upper-case letters and special characters
one can select commands.
There is a set of basic commands
which allow one to create and delete files,
invoke compilers, and perform other basic functions.
One may also define new commands in terms of the basic commands
and in terms of other programs,
and in this way create a personalized environment.
.PP
Although the
.VS
program is not particularly large,
it has a large number of features.
The difficult part in implementing
.VS
was connecting these parts together so they would coexist
in a harmonious fashion.
I believe the parts do fit together in a clean manner.
The companion document to this paper,
"Vsh Code Organization,"
covers the details of how
.VS
really works.
.SH
Visual Techniques.
.PP
The hallmark of visual software is careful control of output.
Relevant information appears on the screen when needed,
and does not scroll off the top before use.
Because one can only put so much information on a screen,
it is possible to jump between displays
in an easy, natural manner.
I believe
.VS
does satisfy these criterion.
.PP
The ease of jumping between displays was an important
consideration during the design of
.I Vsh.
This emphasis makes
.VS
an ideal tool for browsing through the
.UX
file system,
for one can move easily between the various directories and files.
This convenience also extends to the operation of compilers.
When one compiles a program,
the compiler error messages are collected in a file and displayed.
One then selects an error message from the display,
and
.VS
determines the line and file the message references.
An editor is then called,
editing the file starting at the offending line.
When the error is fixed,
one can return to the error display to select another.
This is a large improvement compared to
just dumping the error messages on the terminal,
because the risk of losing the errors off the top of the screen
before use is eliminated.
.PP
A visual editor called
.I Vi
[2]
has been well received in Berkeley
where one finds little use of the standard editor.
.I Vi
is similar to
.I Vsh;
it automatically displays information (the file being edited)
and is based on short, often single keypress, commands.
A command processor, however, is not an editor.
One does not find the dramatic improvement of
.I Vi
over the standard editor when one uses
.I Vsh.
Part of the problem is that
.VS
does not have the full power and flexibility of the standard
.UX
command processor.
It seems clear that the use of single-keypress commands was
just too restricting.
A richer command language is necessary.
.PP
Historically,
.VS
was not the first visual command processor, but was inspired by
The University of Illinois \s-2PLATO\s0 [3] system.
With \s-2PLATO\s0, everything is visual.
This orientation is in part a result of \s-2PLATO\s0's
computer assisted instruction emphasis,
and in part a reflection on the nature of the \s-2PLATO\s0 terminal
which cannot scroll.
My goal was to merge the best features of \s-2PLATO\s0 and
.UX
philosophies.
A result of this synthesis is
.I Vsh.
.PP
A major problem with \s-2PLATO\s0 is that there is no alternative
to the visual, interactive way of doing things.
If one wants to edit a block,
one cannot specify the block by name.
One must select it from the display.
The
.VS
.B F
command allows one to select a file by name,
easing the problem somewhat.
A major difficulty remains;
one cannot easily consider writing a script of commands for
.I Vsh.
Such a script with its single-keypress commands would be unreadable.
Clearly,
one needs a traditional command processor for many applications.
The issue is whether it is worthwhile
to learn both modes of interaction.
At Berkeley,
people are willing to use both types of editors.
Perhaps people will embrace two shells.
.SH
Further Work.
.PP
It would be interesting to see
.VS
go beyond its current restrictive status
and implement a universally applicable visual shell.
This shell would be the focus of a visually oriented programming system
as available in Xerox's Interlisp [4] system.
One can imagine countless features.
One would be able to split the screen into sub-displays
and run a separate process in each display.
One would be able to recall previous displays.
These features could support utilities such as split-screen editors.
Communications between users would be facilitated.
Messages from other users would appear in a special display,
rather than just showing up at the bottom of the screen.
One could allow others to monitor one's own displays.
.PP
Many questions need to be addressed in such a system,
including the appearance of the user and operating system interfaces,
and the appearance of the terminal.
The use of multiple screens, cursors, touch panels,
special keysets, and intelligent terminals are areas which
ought to be addressed.
What ever its drawbacks,
.VS
is a step in this direction.
.SH
Conclusion.
.PP
The major flaw of
.VS
is that it cannot act as a complete command processor, although
I believe such a command processor can be built as part of
a visually oriented programming system.
Building such a system would be a major endeavor.
For the time being,
.I Vi
and
.VS
can provide the flavor of such a system
and inspire people to build it.
.bp