Message-ID: <bnews.ucb.1181>
Newsgroups: fa.editor-p
Path: utzoo!decvax!ucbvax!C70:editor-people
X-Path: utzoo!decvax!ucbvax!C70:editor-people
From: C70:editor-people
Date: Sat May 29 03:15:32 1982
Subject: Re: EDITOR discussion on TOPS-20
Posted: Tue May 25 21:16:48 1982
Received: Sat May 29 03:15:32 1982

>From RWK@SCRC-TENEX@MIT-AI Tue May 25 19:22:34 1982
[Editor's note:  I have taken the liberty of appending two related messages
  from RWK into this one message.  The first message advertises itself as
  "flame", but both present a great many important observations. /jq]

I'm getting tired of seeing a barrage of opinions in the form of
dogmatic statements.  I think it's about time I make a few strong
statements of my own.

    Date:    20-May-82 9:36PM-EDT (Thu)
    From:    Steve Wood <Wood at YALE>
    I have already implemented a change to TOPS-20 that provides a
    significant improvement in the interactive response time of a display
    editor, while at the same time reducing the number of process wakeups.
    It works and is in use everyday here at Yale.  My suggestion is that
    EMACS could be changed to take advantage of the changes to the monitor.
    What would have to be changed?

    There should be a one to one mapping between file positions and display
    positions.  This would require long lines to be clipped instead of
    wrapped;
This is completely, absolutely unacceptable.  Any editor which hides long
lines is completely unusable in many environments, such as any environment
I've ever been in.  Such an editor is BROKEN, a mere fragment of an editor.
The change is also completely gratuitous, since it is quite acceptable to
wake up the editor in this unusual case.
    control characters to be displayed as a single high-lighted
    character; tabs to be expanded to spaces; 
This isn't acceptable either, since EMACS supports that majority of terminals
that don't have highlighting modes.  It is also doesn't buy you anything.
If you're really going to do up/down cursorpositioning commands in the monitor
(which I don't think would make an appreciable difference) then just position
it.  Let the editor figure out the mapping when it finally gets control and
finds out the new cursor position.  Inserting into the middle of the tab
would require the editor to handle it so it could move the cursor before
inserting to the begining of the TAB, but this would be no more disconcerting
than the current TAB behaviour.  Actually, maybe it should instead just insert
the necessary spaces actually put it in the place the cursor moved to.  THAT
would be an improvement, I think.  Converting the file's tabs to spaces and
making the user work with spaces is a fine user-interface idea, but ignores
the reality that the files may NEED tabs for whatever program.
    next/previous line and
    forward/backward character to move by screen positions and not by file
    positions.  
They already *DO* work by screen position.  What they DON'T do is extend a
line beyond the end.  It should be no problem to tell the monitor where the
line ends, if you really wanted to do this.
		Would these changes be fatal to EMACS users?  I don't see
    how as they would only improve what is already a very good editor.
I would refuse to use it.  So would a lot of other people, I'm sure.  I'd
keep around a non-performance-enhanced version and use that instead.

Many editor designers have taken the attitude that they know better than
the designers of EMACS what an EMACS-child should look like.  It has
been my experience that they have often been very, very wrong.  EMACS
was in a very real sense designed on the experiences of a very large
community of users, and end up breaking some of the most important
features.  This does not mean that an editor has to be identical before
I would accept it.  But I do wish people would not start calling
features very many people consider essential "obsolete" and such.

And don't underestimate the importance of compatibility in command
sets.  Editor designers don't seem to realize that people who use
their editors use other editors too.  I find that all the good ideas
in the world can't overcome an incompatible command set (especially
if the editor isn't extensible enough to fix it!) or a single bad
idea like line-truncation.

So please, I really don't want to hear more about changing EMACS's
COMMANDS to make it easier to implement the monitor.

	I think this is more of a TOPS-20 issue than it is an editor issue.
    Certainly, if you are only going to try to make improvements in the
    performance of a specific editor.  I think such an attitude is a mistake
    when making changes to an operating system.
It seems to me that you're trying to redesign the editor around the operating
system.  This has to be the biggest mistake of them all.  I consider the
attitude of "operating system efficience over user interface" to border on
criminal.  And all for the sake of optimizing what will be a minor fraction
of the commands -- I can only shake my head in disgust.

----------------------------------------------------------------

    Date:    22-May-82 1:24AM-EDT (Sat)
    From:    Steve Wood <Wood at YALE>
	    Date:    20-May-82 3:06PM-EDT (Thu)
	    From:    Steve Wood <Wood at YALE>
	    However the design of EMACS is such that you could not change
	    the stream editing model that EMACS presents to the user.  The
	    mapping between file positions and display positions is buried
	    at the lowest level of the implementation.  I know this is
	    true of the TECO implementation and I suspect it is true of
	    the LISP-based versions of EMACS.

	I wish I knew what this meant.  If I did, I might be able to tell
	you about some of the LISP-based versions of EMACS.

    In order to make the mapping between file positions and screen positions
    be one to one, the following changes would have to be made.
    Unfortunately not all of these changes are not possible using the
    extension language and the editor kernel itself would have to be hacked.

    First tabs would have to be stored as spaces, by changing the tab
    command to insert the appropriate number of spaces instead of a single
    tab character.  You would also have to hack file input to convert tabs
    to spaces.  Control characters are displayed as two characters, which
    can't be changed without hacking the low level display primitives.
    Long lines are wrapped onto succeeding lines.  Making it so they are
    clipped instead would also require modifications to the low level
    display routines.  All movement commands could be changed to allow
    movement to non-existent file locations, by automatically inserting
    enough blanks so that the file does exist at the cursor location.  If
    you did this, you would have to change the file output logic to remove
    any extraneous blanks caused by moving the cursor past the end of a
    line or the file, but not making any other changes.

    Probably all of this is doable with existing Emacs implementations,
    except for the modifications to the low level display routines, as
    the redisplay algorithm is not accessable to the user.  I don't know
    what affect these changes would have on other Emacs commands.

    -Steve

 Well, in all LISP-based editors I know of, tabs are stored as Tabs.
(Ten-space-wide in Multics EMACS). I went into why this is necessary (we
know why it is unfortunate) in my recent flame.  I might try making ^N
do the "right thing" with Tab's in ZWEI (the base for the ZMACS editor
on the Lisp Machine which is also used in a number of contexts which are
not strictly text-editing).  I.e ^N would move the cursor to
more-or-less the right place, and if you tried to insert there it would
add enough spaces.  The redisplay algorithm is available to the user in
all the Lisp-based editors.  (This doesn't mean the code is easily
changable, but any user can replace it in his init or whatever).

I say "more-or-less" because of another problem: The 2-D array of
fixed-width characters model is bankrupt and obsolete.  Documents
and even programs make use of fonts of variable widths.  TAB's are
not the only character which is of non-standard width!  ZWEI tries
hard to move as close to the same vertical position, since the 2-D
array is one of many competing models which are useful to the
user in various circumstances.

The "stream" of characters model that you so despites is another model
which has its own uses.  So much so that the Lisp-based editors provide
it to users (in addition to the 2-D array model, the paragraph model,
etc), despite the fact that they do not represent it that way internally
at all.  In at least ZWEI and Multics Emacs, text is represented as a
doubly-linked list of lines.

This wealth of different models for the text is one of the things that
makes EMACS so powerful.  It also means that optimizing ^N and ^P is not
that important.  Look to your M-A and M-E (forward and backward
sentence), your M-B and M-F (fowrdard and backward word) etc.  If these
commands cannot respond adaquately fast, I would seriously recommend
against buying that machine.  Building them into the monitor is not the
way to go!

What is needed is to optimize the most common ones to minimize the load
on the system.  (I've seen somewhere a frequency table of various types
of commands in some EMACS-like editor.  My recollection is that C-N and
C-P were down in the noise; I'm sure this is true of my own usage.  Does
anybody recall seeing these statistics somewhere?)  Echoing and
sequential paging are the only reasonable canidates for further monitor
support that I can believe in without solid frequency-of-use statistics
to back them up.

Message-ID: <bnews.ucb.1199>
Newsgroups: fa.editor-p
Path: utzoo!decvax!ucbvax!C70:editor-people
X-Path: utzoo!decvax!ucbvax!C70:editor-people
From: C70:editor-people
Date: Sun May 30 00:46:33 1982
Subject: The Recent Roast
Posted: Thu May 27 06:39:35 1982
Received: Sun May 30 00:46:33 1982

>From C70:daemon  Thu May 27 01:08:32 1982
I have just reviewed the set of messages that have been flying over
TOPS-20 and E-P.  I am afraid things got really out of hand.  A little
background is in order.

At Yale, for better or worse until recently we were isolated from the
rest of the TOPS-20/Emacs world and hence developed a lot of our own
software.  We have a slightly different (note I didn't say "better")
tradition of screen editors.  Yale editors have stressed aspects of
editing different from Emacs.  We do not consider ourselves amateurs
on the subject of editors and resent the attitude that "Emacs has solved
all these problems and why are you telling us about your bogus editor".
The basic style of Yale editor has been in use here for 10 years; people
like it.  The current Yale editor, Z, has been in serious, production
use for several years.

I would like to think that discussions about differences between Z
and Emacs could be to each's benefits.  Let's not all get our defenses
up so high that we can't learn from each other's experiences.  Please
do not take any mention of problems with Emacs as an all-out attack.
If some of our messages have sounded a bit extreme it is only because
being in a minority we feel we have to speak strongly so people will
notice our alternatives.  Despite this, I think some people reacted
over-defensively to Steve Wood's first message.

At Yale, only 2 people out of a community of hundreds of users use
Emacs over Z.  This is not to denigrate Emacs; Emacs is a very
good editor and has many features Z lacks (note also that Z has features
that Emacs lacks).  My point is that we should all have realized that
arguments of the form:

    (Editor X has n-hundred users & has feature Y) =>
        (feature Y must be necessary for a good editor &
         any editor which doesn't have it must clearly be inferior and useless)

are just not credible.  People use all sorts of editors for all sorts
of reasons not necessarily having to do with the quality and features
of the editor compared to other editors (e.g. it was the first one
they learned; it is the one that is supported best at a particular
site; use of other editors is socially frowned upon).  We all know
this, don't we?  I am not ashamed to say that a main reason Z is used
most heavily at Yale is because it was here first, and is well-supported
here.  I would be hard-pressed to believe that the Emacs story is much
different at the sites at which it is used.  I don't think anyone has
the ability to fully factor out the incidental reasons for a particular
editor's use in judging an editor's quality.  Thus, I think for the
purposes of electronic forums I think we would do well to stay away
from issues of features near and dear to various people's hearts
(believe me -- I am probably as grossed out by lines being wrapped
at the right as you are about their being invisible off the right;
what does it prove?  I believe you when you say you like wrapping better
and I would hope you would respect my preference).

The core of the original discussion was monitor support to improve
the performance of editors.  My reaction to the proposed TEXTI changes
is that people were not thinking about the more global issue:  how
does the implementation and user interface of an editor affect the
kinds of things one might reasonably consider adding to an OS to
increase the performance of the editor?  That is, if you are interested
in improving performance, when do you consider changing editor styles?
Or to put it another way, when do you not bother to not strive for
the last iota of efficieny in an editor that has design properties
that prevent significant optimization along a particular dimension?

Subtract out any parts of Steve Wood's message that you might find
offensive and what you have is not an attack on Emacs.  Rather you
have a statement that says:  look what different (and hopefully more
extensive) kinds of support you can give to an editor if it has a
particular model.  Whether you like the style or not is another matter.
Suffice it to say that some large number of people like the Yale-style
editor enough that someone (Steve) considered techniques to support
it in the OS, then implemented those techniques and got a significant
win out of it.  This information should be added to the editor
designer's bag of information he uses when building editors.  It is
up to him to evaluate the model AND the efficiency of implementation.
Say, if he (and his user community) are ambivalent between the 1-D
and 2-D models he can use this piece of (dare I say "experimental")
information to help in making his choice about which model to use.

                    -- Nat
-------

Message-ID: <bnews.ucb.1235>
Newsgroups: fa.editor-p
Path: utzoo!decvax!ucbvax!C70:editor-people
X-Path: utzoo!decvax!ucbvax!C70:editor-people
From: C70:editor-people
Date: Wed Jun  2 03:07:22 1982
Subject: evaluating editors
Posted: Tue Jun  1 16:23:21 1982
Received: Wed Jun  2 03:07:22 1982

>From reid@Shasta@Sumex-Aim Tue Jun  1 16:07:50 1982
The issue of getting users for text editors, and of Yale's isolation,
is important, and I'd like to comment on it a bit.

In this systems business of ours, it is extremely difficult to evaluate
the quality of a piece of work. There are no mathematical proofs to
read through, no pages of data and graphs to peruse, no airtight
physics experiments that can be run to check hypotheses. Instead we
rely on our designers' instincts, evaluating systems as we explore
them. If a system is good, we might use it, steal its ideas by copying
it, rave about it to our friends, or even in some cases abandon
everything we had been doing to make the incompatible change to the new
system. If a system is bad, we might ignore it, poke fun at it, flame
at how ignorant it is, or perhaps try to evaluate why it is bad so that
we (collectively) do not make that mistake again. Sometimes systems are
bad because they are based on bad models; other times they are bad
because they are programmed badly; perhaps they are bad because they
are internally inconsistent. There are many reasons that systems can be
good or bad.

In about 1976, or thereabouts, we at CMU (where I was at the time) got
a copy of the source and documentation for the Yale Editor "E". Craig
Everhart and I struggled valiantly to get it running, and after burning
the better part of a month on it, we gave up. It was written to run
under Tops-10, but it assumed the existence of very extensive changes
to the monitor, including the dreaded SCNSER. It was politically
unacceptable at CMU to make such major and incompatible changes to the
monitor, and it just wasn't going to work without them, so we stopped.
"E" also was written to use a particular terminal (I forget the brand)
and no other, but the manufacturer of that terminal had gone out of
business. So we couldn't even dial Yale long distance and use the
editor over the phone: we didn't have the right brand of terminals. So
despite our interest in exploring this interesting-looking editor, we
were not able to evaluate it properly because we could not use it.

At about that same time, give or take half a year, the EMACS editor
started appearing on TOPS-20 systems around the network. I had access
to SRI-KL, and EMACS supported all of the various terminals that were
around. I was able to use EMACS, learn it, and assimilate its ideas.

Naturally I think that EMACS is the better of the two editors, because
I was able to use EMACS and not just hear about it. When I teach
students about text editors, I include the EMACS model of editing as a
major focus, and I don't even mention the existence of either "E" or
"Z" from Yale, despite my beliefs that they might actually be good
editors.

Now my primary computing comes from a VAX Unix, Shasta, and on that
system we can run three worthwhile editors: Jim Gosling's EMACS, Rand's E
(a.k.a. NED), and Bill Joy's VI. I don't know who at Rand is the main
force behind E. And as I think and talk about editors, it is very
convenient to be able to draw examples from these three working models.
 From what I've heard about Yale's Z, its editing model is fairly
similar to Rand's E, but since Rand's E is exportable and fairly
universal, while Yale's Z is not, I will probably end up associating
and attributing those ideas to Rand and not to Yale.

The moral of my ramble is this: if what you are trying to do is to
write a good editor for your own people to use, then you are free to do
whatever you want. If what you are trying to do is influence the
opinion of the C.S. research community, and hence the directions and
ideas of future editors, you have to make your system available to them
to be evaluated. These people are not fooled by rhetoric nor persuaded
by hearsay.

Brian Reid

Message-ID: <bnews.ucb.1250>
Newsgroups: fa.editor-p
Path: utzoo!decvax!ucbvax!C70:editor-people
X-Path: utzoo!decvax!ucbvax!C70:editor-people
From: C70:editor-people
Date: Thu Jun  3 05:52:54 1982
Subject: Re: evaluating editors
Posted: Thu Jun  3 01:18:35 1982
Received: Thu Jun  3 05:52:54 1982

>From Mishkin@YALE Thu Jun  3 01:14:55 1982
I fully sympathize with your painful experience trying to bring up
bogus software.  In case it is still not clear:  Z runs on unmodified
TOPS-20 systems as well as on our own modified monitor.  I completely
agree with you that exporting (or "exporting") software which has
bizarre monitor dependencies is totally unacceptable.

I can not comment on earlier generations of Yale hackers from which
the present Tools (incl.  Z) work is totally divorced.  However, we
have strived very hard to make our software robust and exportable.
Every single tool we send out is documented.  All our code is written
in a high level language (Bliss; higher than MACRO anyway) and uses
a shared runtime library.  Z is terminal independent and it is very
easy to add new terminal types to Z since it uses a termcap-like
facility (i.e. it uses terminal descriptor files).

In characterizing our "isolation" I should have mentioned that, to a
certain extent, in retrospect we consider this a boon:  had we been
on the net, we probably would have absorbed that large set of random
programs written in MACRO instead of developing a coherent set of
utilities and a environment for writing them.

                -- Nat

Message-ID: <bnews.ucb.1272>
Newsgroups: fa.editor-p
Path: utzoo!decvax!harpo!npois!ucbvax!C70:editor-people
X-Path: utzoo!decvax!harpo!npois!ucbvax!C70:editor-people
From: C70:editor-people
Date: Sat Jun  5 01:30:26 1982
Subject: Re: evaluating editors
Posted: Fri Jun  4 03:37:36 1982
Received: Sat Jun  5 01:30:26 1982
Reply-To: ople

>From gaines@RAND-UNIX Fri Jun  4 03:32:14 1982
Since I have been associated from the beginning with a family of related
editors, it seems appropriate for me to discuss some ideas in the context
of the history of those editors.  The daddy of them is an editor developed
by Ned Irons in 1967 at the Institue for Defense Analyses (IDA) in
Princeton.  Ned designed and implemented a timesharing system for the CDC
6600, and as part of it designed what we at the time called a "full screen"
editor, to distinguish it from line-at-a-time editors.  The decendents of
this initial editor include E at Yale (where Ned went in 1969), NED at Rand
in 1964 (guess where the name came from) (done by Walt Bilofsky, now the
Software Toolworks), and (as a copy of NED) the Apple Pie editor.  Dave
Crocker worked briefly extending NED while he was at Rand, but the real
extensions which transformed it into the current E editor from Rand were
done by Dave Yost.  The lastest version, with really quite a lot of
goodies, is E15.  Those who want information about it should contact Mike
Wahrman <Mike at Rand-unix>.

The original editor had very little: forward and back a page (screen) or
line, cursor movement and insert.  Ever heard of insert?  It didn't mean
insert mode, in contrast to overwrite mode.  The controller for the
terminals available in 1967 required a separate function key that was
interpreted to mean that the screen was now correct, and therefore could be
inserted in the file.  The individual keys were not passed back to the 6600
as each character was struck.  Instead the refresh memory (stored in the
controller, which supported several terminals) was modified.  I mention
these details because the hardware strongly colored the model of editing
that evolved.  The hardware made it essential to view the screen as a
blackboard with a little peice of the file on it.  The non-function keys
and the cursor control buttons allowed one to rearrange his little
blackboard, and then later indicate by hitting "insert" that this was how
the file being edited should now be updated.

The terminals were specially modified to have many function buttons, and as
time went on new functions began to be added to the IDA editor.  However
they never included an insert mode capability, since the hardware couldn't
support it.  Thus the intial orientation of this class of editors was
determined.

As an aside to a discussion of purely editor matters, in the IDA system the
command executive was invoked from within the editor, and as a consequence
the system had some very pretty aspects.  Until I saw the Multics command
executive being invoked from within EMACS, I was not able to find another
system that could provide some of the nice effects that this permits.

As I said, Irons' initial editor didn't have very much.  But you could get
a lot done.  Almost immediately, though, Franz Djorup (still at IDA)
started extending the editor.  Eventually he and Irons published a paper in
CACM (early 1971, I believe).  The great leap forward was the invention
"pick" and "put" (sugggested by Bob Cave, who is also still at IDA).  In
this class of editors "pick" and "close" copy lines to a temporary buffer
("close" also deletes them from the file) and "put" copies these lines from
the buffer to a designated point in the file.  Before these came along,
various attempts to write programs that would rearrange a file in a nice
way were tried, all almost unuseable.  The capability to rearrange a file
by marking sections, together with the ability to move a cursor around the
screen, are among the prinicipal elements that make editors powerful, in my
view.

The Yale E editor had some extensions from the IDA editor, and some
changes, but retained the flavor of the IDA editor.  I have not seen it in
10 years, and don't remember its details, but I recall noticing at the time
that the most striking differences bore a relation to the hardware being
used (the PDP 10 running TOPS 10, and the funny terminals Irons found --
made by Sugarman, I vaguely recall).  Insert mode was possible with that
system, I think.  Someone with more experience may wish to comment on the
major features in E that differ from the IDA editor.

The major advance made by Bilofsky was to free the editor from line size
limitations and to permit the use of several windows on the same CRT.  This
required dealing with issues such as what to do when the two windows were
displaying some or all of the same section of a file, and a change was made
in one window.  Bilofsky also added the capability to execute a command
from within the editor, possibly sending a marked block of the text being
edited as input to the command.  This was doable with reasonable effort
because of Unix pipes and the way the Unix shell works.

The E15 editor of Dave Yost is Bilofsky's NED in spirit, but reworked from
the ground up.  Many new features have been added.  Everyone seriously
interested in editors should look at it just for the range of ideas it
displays.

I haven't seen the Yale Z editor, but I would suspect derives from the
editors already mentioned.  Various people were going back and forth
between Yale and Rand during the 1970's, including Ned Irons.  Again,
others familiar with it may wish to comment.

With the Rand editors, the model I described above has changed slightly.
Now a better model is that the editor supports a workspace that extends
indefinitely to the right and down, and that may be initialized with the
contents of a file.  The screen is a window into this workspace.  The user
can position his window to display any portion of the workspace, and can
move his cursor where he will within the window.  For activities that do
not involve insertion of characters, the analogy of a blackboard that
extends indefinitely to the right and down is quite good.  Insertion of
lines, characters, or blocks (multiple lines or line fragments) cause
immediate movement down or to the right of some of the blackboard.  One
need not, when using a blackboard, explicitly supply white space (black
space??).

The E15 editor embodied so many features that I though it was getting to be
about as good as one could expect in an editor.  Then I saw EMACS.  It was
a surprise and a delight to me as a computer scientist.  I found the idea
that one could build in some knowledge of the domain of the text being
edited very exciting.  This clearly is a step in the direction we keep
striving to go with computers: reduce the work of someone using a computer
by having it do as much as possible under the user's control.  Furthermore,
the fact that to a degree it is possible to build in additional knowledge
is another large plus.

Having seen EMACS, I got another suprise when I saw my first good word
processor.  While not extensible as EMACS is, knowledge of some nice
aspects of printed language are built into the best of them that do not
appear in general-purpose editors.  A real effort has been made in them to
follow the idea of "what you see is what you get", in contrast to the edit
+ nroff approach in which most special formatting is simply described for a
later pass through a formatter.  There is a limitation, though, to the
"what you see is what you get" approach: terminals cannot display what can
be printed.  This is true at the top end of the quality scale, in that
typsetters and printers can do things that even the high resolution bit-map
terminals being offered today cannot do.  It is also true on a relative
scale; the cost of good display quality terminals is high relative to the
cost of printing equipment for organizations that need lots of terminals.

In closing this note, I would like to make some comments about the 2D
versus 1D debate that has been going on.  The model I have described above
is a slight extension of the 2D view.  It seems to me that this model is
more general than the "edit-the-file" model (I don't think the term 1D is
very descriptive of what goes on in EMACS).  It seems to me that the cases
when one must append white space at the right end of a line or after the
last line in a file are so rare that it is best taken care of by a file
reformatter, and that aside from this capability the "indefinite
blackboard" model gives the user more power than the edit-the-file model,
while giving up nothing else.  Certainly it is nice to be able to position
the cursor by reference to the semantic constructs the editor has been
taught to recognize.  But as when making marks on a real blackboard, it is
also nice to be able to get to a point in the workspace independently of
these semantics.  I think the edit-the-file model is simply restrictive to
no significant advantage.  Unfortunately, at least in the LISP version of
EMACS on Multics, I don't think it is changeable through EMACS extensions,
but rather would require major surgery.  Those who only have familiarity
with the edit-the-file model should take a look at the many goodies related
to the indefinite blackboard model Yost has built into E15 to see how much
power that model really has.

Message-ID: <bnews.ucb.2201>
Newsgroups: fa.editor-p
Path: utzoo!decvax!ucbvax!ARPAVAX:C70:editor-people
X-Path: utzoo!decvax!ucbvax!ARPAVAX:C70:editor-people
From: C70:editor-people
Date: Wed Oct 27 03:41:01 1982
Subject: Z editor usage statistics
Posted: Mon Oct 25 08:32:08 1982
Received: Wed Oct 27 03:41:01 1982

>From Wood@YALE Mon Oct 25 08:01:24 1982
For the past three weeks, I have been collecting statistics about the
usage of the Z editor here at Yale.  We have two DEC2060's, connected
to over 400 terminals campuswide, via a Gandalf PACX box.  The majority
of the terminals in use at Yale are Datamedia 1521s, running at 9600
baud.  The user community includes students, faculty and staff of the
Computer Science Department, as well as many users from other
departments.

Highlights:

    - over 22,000,000 inputs, 5500 hours of elapsed time in the editor
      (45 hours of CPU time).

    - Users spend more than half their time on the computer using the
      editor.

    - Graphic characters + cursor keys account for almost 90% of user
      input.  Editing commands and window movement commands account
      for an additional 7%, with everything else in the noise margin.

    - 85% of all characters echoed in insert mode, are past the end
      of the line and thus can be echoed as if the editor is in replace
      mode.  For users that run in insert mode all the time, the figure
      is over 90%.

    - The local modifications to the TOPS-20 operating system that do
      immediate echoing of graphic characters and cursor keys, echoed
      75% of all input characters in real time.  Currently the editor
      does not take advantage of end of line echoing when in insert
      mode.  If it did, this figure would be closer to 82%.

The following is a summary of the statistics for all terminal types
and skill levels.  If you are interested in a further breakdown, you
can FTP the following files:

    [YALE]/usr/anonymous/z-term.stats
        subtotals by terminal type (Datamedia, Ambassador, TVI, Apollo, etc.)

    [YALE]/usr/anonymous/z-skill.stats
        subtotals by skill level (novice, intermediate and expert).

    [YALE]/usr/anonymous/z-detail.stats
        same as what follows, except with details on graphic character
        frequency and command argument usage.


Editor usage:
    Total Elapsed time:      10886:58:24
        Editor elapsed time:  5574:23:17  51.20%
        Editor CPU time:        44:59:20
Editor invocations:            79117
    New editor started:            10806
    Old editor continued:          68311
        from parent process:           22429
        from Session manager:          45882
            via sm escape:                 37592
            via sm command escape:          4762
            via sm program escape:          3528
Input statistics:
    Total command input:        22826481
        graphic characters:         10010397  43.85%
            replace mode:                8151386  35.71%
            insert mode:                 1859011   8.14%
                within a line:                258549   1.13%
                past end of line:            1600462   7.01%
        editor commands:            12361970  54.16%
            cursor commands:            10296336  45.11%
                right                        3991580  17.49%
                left                         3308209  14.49%
                down                         1461983   6.40%
                up                            802373   3.52%
                newline                       551727   2.42%
                tab                           121189   0.53%
                home                           20258   0.09%
                endLine                         9695   0.04%
                pWord                           7800   0.03%
                mWord                           6501   0.03%
                setCursor                       6324   0.03%
                begLine                         3239   0.01%
                backTab                         2401   0.01%
                mParagraph                      1728   0.01%
                pParagraph                      1329   0.01%
            editing commands:            1192967   5.23%
                cDelete                       421556   1.85%
                sDelete                       336097   1.47%
                sInsert                       159025   0.70%
                lDelete                       100707   0.44%
                lInsert                        96793   0.42%
                put                            43032   0.19%
                pick                           16690   0.07%
                wDelete                        15217   0.07%
                replace                         2918   0.01%
                qReplace                         932   0.00%
            window commands:              432235   1.89%
                pLines                        144801   0.63%
                pPages                         90110   0.39%
                mPages                         64676   0.28%
                pSearch                        46158   0.20%
                mLines                         39848   0.17%
                mark                           23044   0.10%
                mSearch                        17903   0.08%
                setWindow                       5695   0.02%
            basic commands:               209297   0.92%
                arg                           165311   0.72%
                insertMode                     20674   0.09%
                cancel                         13089   0.06%
                meta                            6025   0.03%
                noFunc                          1672   0.01%
                quote                           1417   0.01%
                nop                              652   0.00%
                textArg                          457   0.00%
            file commands:                 71871   0.31%
                setFile                        71121   0.31%
                refresh                          602   0.00%
                undelete                         148   0.00%
            exit commands:                 81313   0.36%
                sm                             45649   0.20%
                exit                           31220   0.14%
                moveSM                          4257   0.02%
                push                             187   0.00%
            program commands:              57057   0.25%
                balance                        52991   0.23%
                compile                         3850   0.02%
                comment                          216   0.00%
            document commands:             14945   0.07%
                fill                            7189   0.03%
                justify                         3119   0.01%
                spell                           2671   0.01%
                upperCase                        711   0.00%
                lowerCase                        384   0.00%
                capitalize                       360   0.00%
                center                           286   0.00%
                flushLeft                        183   0.00%
                flushRight                        42   0.00%
            status commands:                5869   0.03%
                information                     3166   0.01%
                assign                          1367   0.01%
                help                            1031   0.00%
                execute                          155   0.00%
                initialize                       142   0.00%
                save                               6   0.00%
                bExecute                           2   0.00%
        Macros:                         2165   0.01%
        Text argument input:          451949   1.98%
            graphic characters:           421886   1.85%
            movement commands:             13308   0.06%
            editing commands:              16755   0.07%
    Total input characters:     22875606
        echoed by monitor:          17055341  74.56%
        shifted with <shift>:         482539   2.11%
Cancel command usage:
    #cancel interrupts:             1113
    #cancelled arguments:           4570
    #cancelled text args:           2369
    #cancelled editors:              932
Number of autosaves:               38403
-------