[comp.sys.apollo] Aegis Vs. Unix

ram@nucsrl.UUCP (06/02/87)

      I can't stand this anymore.  All you guys claim AEGIS is far superior
      to any UNIX implementation, but fail to state explicitly as to what
      makes it superior.

      Stating popularity as reasons for superiority is like comparing
      IBMs with non-IBMs.  Just 5 years back, anybody mouthing UNIX would
      have been frowned upon.  Based on technical merits alone, what is
      it that makes AEGIS superior/inferior?

      I am no UNIX guru and so would like to know what's wrong in using
      /dev/kmem(Perhaps if I am a guru,I would be die-hard fan of /dev/kmem:-)).

      How would AEGIS compare with MACH? 


-------------------
Renu Raman				UUCP:...ihnp4!nucsrl!ram
1410 Chicago Ave., #505			ARPA:ram@eecs.nwu.edu
Evanston  IL  60201			AT&T:(312)-869-4276               

P.S:  Could anybody mail me pointers to papers/articles on the
      implementation of AEGIS

krowitz@mit-kermit.UUCP (David Krowitz) (06/03/87)

Ok, here's why I myself think that AEGIS is better than Unix ...

1) The distributed file system is an integral part of the OS, not layered
   on top as an afterthought. All file systems on all machines in the network
   are co-equal in AEGIS. In NFS the foreign file systems are mounted
   beneath your local file system and your file system, in turn, is mounted
   beneath their file system. With AEGIS their is no concept of a 'foreign'
   file system -- all disks on all machines are equally accessable.

2) Better file protection. Unix gives you only group, owner, and world (everyone)
   protections. Even the old Decsystem-10 operating system (TOPS-10) gave you
   the ability to specify exceptions to these three classes (and TOPS-10 predates
   Unix by about 10 years). Their are people in my 'group' who are complete
   idiots -- I don't want to have to trust them with my files, but I have to
   let other people in my group have access to them. I can't do this with Unix
   style file protections. It is quite easy to do with ACLs (regardless of the
   operating system, AEGIS, TOPS-10, etc). Claims that ACLs are 'too hard to
   understand' are heard frequently from the Unix camp. I've never had a problem
   with them. I can make my ACL for a file as simple or as complicated as I
   wish, and I usually leave them pretty simple. The way most ACL systems work
   is that the OS scans down the list of entries for the file in question and
   finds the first entry that matches the user-id (either directly, or via a
   wild card match) and applies the protection corresponding to that entry.
   Here's an ACL list which would correspond to the Unix-style protection :

     me.%.%.%                             matches 'me' for all groups, projects, and nodes
     %.my_group.%.%			  matches other people in my group next
     %.%.%.%				  matches everyone else last.

3) A better file system. Apollo calls it and 'object oriented' file system.
   Basically, files have types. The system can tell you whether a file contains
   ascii text, fixed-length binary records, variable-length binary records,
   bitmaps, whatever. The Unix file system has no concept of this. Files are
   simply strings of bytes and your program has no way of telling what kind
   of bytes are in a particular file. Under Unix program may write a special
   code are the beginning of a file (called a magic number) so they can
   recognize their own output, but other programs may not check this code and
   can easily read it as part of the data. Programs must rely upon the user
   always feeding them the correct input files -- otherwise you get the old
   garbage in, garbage out. Unix enthusiasts consider this feature a blessing.
   They can write programs which can do anything they want with a file\
   (including screwing it up completely). The AEGIS file system knows what 
   kind of data is in a file ands reads it accordingly. Your program can
   check that it's reading the correct kind of file without depending on
   someone else having put the correct magic number in the file. It can also
   handle multiple types of input file very easily because the operating system,
   not the user program, handles the job of getting the data extracted from
   the file in the proper format. If you *really* want to play with the raw
   bytes in the file you can do that with AEGIS also. There is a seperate set
   of system calls for doing this.

3) Memory mapped I/O. It's simply faster than the byte oriented I/O found in
   the standard Unix kernal. Many performance-oriented vendors who use Unix
   are rewriting their kernals to use memory mapped I/O, AEGIS already has it
   as the underlying basis  of the file system. As a user you see no differnce
   in you programming ... the system is simply faster.

4) Better organized system librarys and manuals. All AEGIS system calls for
   a particular set of operations have similar names. For instance, all of
   the input/output calls have names like IOS_$READ, IOS_$WRITE, IOS_$DELETE
   (you get the picture). It simply makes it easier for the non system hacker
   types to remember what call they are looking for and where to find it in
   the manual. If you are a system guru and know all of the OS manuals by
   heart this doesn't make any difference, but most of us can't remember what
   the name of the particular call we wanted. At least if I know that it had
   something to do with process control I can look for calls beginning with
   PROC_$. This also makes it easier to find sections of my programs which 
   are doing particular operations. If I'm having trouble with a bug in the
   formatting of my I/O I can simply have the editor search for the string
   'VFMT_$' and I can find *all* of the places where I'm formatting my I/O.

5) An extensible file system. Not only does AEGIS have file types, but you
   can create your own new types and instruct the file system how to deal
   with them. We can create a new kind of object which implements a
   'backup copy' concept quite easily (ie. a special kind of link which
   first tries a directory on node_1, and if it is not available (the
   node is down or whatever), then tries a backup directory on node_2) Unix
   has no provision for this. If the node containing your library is
   unavailable, then you're just out of luck (well, you can re-link your
   directories by hand, or redefine an environment variable, but you've
   got to recognize the problem by your self and correct it on your own.
   The Unix file system won't do it for you, and you can't write your own
   extension to the file system to do it, either).

6) Better system management utilies. WBAK/RBAK combine the best features
   of 'tar' and 'dump'. 'tar' can backup individual files and trees, but
   it can't handle a multi-tape backup. 'dump' can handle multi-tape
   backups, but you have to dump an entire file system (read 'disk partition')
   you can't backup just the files/directories you want. WBAK/RBAK can do
   both (and uses industry standard (ie. OS independent, not just Unix
   standard) ANSI labelled tapes to do it). INVOL and SALVOL are much easier
   to use and the Unix 'fsck' and 'diskf' utilities. I suppose that some
   people really want to deal with the number of cylinders, tracks, and
   sectors per track of their disks; but I'd rather just specify how many
   partitions I want on the disk and their sizes. I'll let the program
   figure out what that means in terms of tracks/sectors and block sizes.
   Yes, the Unix utilities will let me do anything I want (as long as I know
   how to do it), including destroying the file system with a single mistyped
   command. What I really want to do is to manage my twenty machines with
   as little work as possible and save the complicated disk utilities for
   an emergency when I'm working with a system service rep. who knows what
   he/she's doing.

7) A more consistant and better shell. If I want to create a file/link/directory
   the command is crf/crl/crd, not 'cp /dev/null'/ln/mkdir. The file-name
   wild cards are more powerfull and can be used in both the input and
   output file names. (ie. you can copy the portion of the name which matched
   the wild card in the input name to the same (or different) location in
   the output name). It is easier to teach novice, no computer science major,
   users to use the AEGIS shell than it is to teach them the C shell. The
   commands are simply easier to remember.


I could go on like this for awhile. The major point I'm trying to make is that
AEGIS is a newer operating system than Unix and was designed to take the best
features of Unix and combine them with the advances in OS designs that had been
made since Unix was developed in the 1970's. It's capabilities are a superset
of those of Unix, and while Unix can be made to run on top of the AEGIS
kernal, the reverse is not true. I think that Apollo has taken the correct
approach, which is to make both the BSD4.2, SYS V, and AEGIS shells and libraries
run as co-equals on top of a single, technically advanced kernal rather than
forcing a choice between a SYS V or a BSD4.2 kernal, both of which would
represent a step backwards. There are quite a few people who *insist* that
it isn't *real* Unix unless the kernal is so similar to the Vax implementation
of BSD4.2 that they can muck around in /dev/kmem. They are WRONG! Many Unix
vendors, Sun included, are rewriting major portions of the kernal simply to
improve performance, not to mention adding new features. Writing code which
depends on poking around directly into the guts of the OS rather than going
through a well defined user interface (ie. a system call) is writing non-portable
code -- non-portable from one version of the OS to another version on the same
machine. User communities which insist that they can't live without this style
of programming wind up locking themselves into obsolete architectures and
operating systems. Look at the IBM mainframe people, still saddled with the
IBM 360 architeture 25 years after it was developed.


                                   -- David Krowitz

mit-erl!mit-kermit!krowitz@eddie.mit.edu
mit-erl!mit-kermit!krowitz@mit-eddie.arpa
krowitz@mit-mc.arpa
(in order of decreasing preference)

Erstad@HI-MULTICS.ARPA (06/03/87)

Add to David Krowitz's list

   8) An extremly consistent set of command line switches.  If I use a
command referencing a node, I know the option is '-n', and I know the
different specifications I can use in identifying the node - they're the
same for all commands.  If I want to list directories, I use a -ld; it
doesn't matter if I'm doing a directory command, a tape archive command,
a copy command, or whatever.  And so on.

Regardin7 - Consistent and better shell.  I agree for the most part.
The one big place Apollo goofed here which consistently messes up new
users is crd vs dlt.  Why not crt or dld?  Most of it is much better,
though.

scottj@cae780.UUCP (06/04/87)

In article <870603192007.915098@HI-MULTICS.ARPA> Erstad@HI-MULTICS.ARPA writes:
>
>Add to David Krowitz's list
>
>   8) An extremly consistent set of command line switches.  If I use a
>command referencing a node, I know the option is '-n', and I know the
						  ^^^^^
>different specifications I can use in identifying the node - they're the
>same for all commands.
>

Except for the 'crp' command where you use '-on'.


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
FROM:   Scott A. Jordahl, Tektronix/CAE Systems Division
UUCP:   tektronix!teklds!cae780!scottj
	{ihnp4, decvax!decwrl}!amdcad!cae780!scottj 
        {nsc, hplabs, resonex, qubix, leadsv}!cae780!scottj 
ADDR:   5302 Betsy Ross Drive, Santa Clara, CA  95054
AT&T:   [408] 748-4727 [direct]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Erstad@HI-MULTICS.ARPA.UUCP (06/04/87)

> Except for the 'crp' command where you use '-on'.

True.  The problem is that -N is the "standard" switch for two things -
a node identification and a process name.  Since the CRP command has
both switches, something has to give.

One could either argue that such doubling up on switch meanings is
either poor implementation or unavoidable (i.e.  one wants a set of
switches describing every possible option which are unique, meaningful
and short - which may be an overconstrained problem).  Not having a
crystal ball, I won't guess at which reason applies.

freedman@calgary.UUCP (06/04/87)

Having had our Apollos (6 3000s and a DSP90) for about 8 months now,
I thought I'd post a list of our users' likes and dislikes to add to
the UNIX vs. Aegis discussion.  Our users are typically Computer science
faculty, grad students, and research assistants working on a wide variety
of problems such as A.I., user interfaces, and data-compression.

The Downside
============

Filenames don't work the same between Unix and Aegis due to Aegis's case
insensitivity and intolerence of certain characters.  This means that novice
users have to be told "you can use the right-hand mouse button to edit your
file, but it doesn't work on your .login or .cshrc".  Aegis programs also have
problems with UNIX filenames (try typing in "acl .login" for example).

Some bsd4.2 programs are missing.  It is a hassle to not have convenience
programs such as "talk" on the system (we are running 9.2.5 since 9.5 has STILL
not arrived).

Some bsd4.2 programs just plain old don't work, such as strip.

Strangely, some UNIX programs can do things that corresponding Aegis programs
can't.  For example, with "rm", you can remove a sysboot file, but with
"dlf" you can't.

Some programs have serious bugs in them, such as who (which doesn't tell you
who is logged in to your node unless they are logged in to the display
manager).

While some parts of the system are well thought out, others are not.  This
results in some things being trivial to implement, and some other similar
things being close to impossible.  For example, creating a remote process
that runs a shell script is simple, but creating one that runs remotely in 
the background after you log out is hard.  Writing graphics programs is 
simple, but writing a text only terminal emulator is hard (the DM will
let you do *nearly* everything that you need to do under program control
but not quite, and GPR requires you to re-implement by hand all of the stuff
that DM lets you do before you can add the one or two extra functions
that you need.  Have you ever tried to get program control of an editable
text area, for example?  It turns out that you can either give up the
ability to have control of input, or you can give up the ability to make
changes to text on the screen.  This is fairly frustrating.

The dynamic linking really only goes half-way.  Multics, for example, has a
full implementation of dynamic linking, where links are made (and can be broken
and remade) on-the-fly as needed.  Both programs and external data are treated 
similarly with regard to linking.  Aegis on the other hand only allows
dynamic linking to happen in the form of pre-loading of libraries into
your address space.  For multics types, the difference is quite major.

The files-as-memory/memory-as-files single level store Aegis concept also only
goes half way.  True, you can map a file into your address space, but you
have to worry about how big its going to get, unmapping it, etc.  Again,
looking at multics, if you have a pointer to a segment (a multics file), 
thats all there is to it.  No worrying about how big it is or anything.

The logout process is painful for unix users.  If you have background processes
running, or if you have foreground processes such as emacs running, then
logging out becomes a real chore.  Once you have typed "lo",  Aegis tries
to kill off all of your processes, and it seems to take it up to one
minute to realize that it can't (God knows why) kill off your emacs or rlogin.
During this time, you wait.  You cant do anything.  Once the minute is up,
you are asked if you want to blast all of your processes, which you do,
since you dont know any better.  This gets you logged out, but leaves
a mess on the disk, which is only salvaged the next time you do a salvol,
which involves taking own the system.  Painful.

The DM editor does not understand about su's or new logins.  If you su
to gain access to a file, the DM will still refuse you access.

The use of the cursor is a bit painful.  The area in which the cursor must
be in order for you to type is far too small.  Having the cursor in the
non-writeable portion of the window should still allow one to type in the 
window's writeable portion.  This is a fundamental flaw due to the same
cursor being used for both pointing and text insertion.

One of our users said that "It's not real UNIX unless I don't have
to know Aegis to use it".  This condition is not sufficient, but it is
necessary.  You can't administer the system without using Aegis.  You can
just about barely use the system as a user without knowing Aegis (until
your processess need blasting ;-<  ).

Although UNIX and Aegis programs work together, there are some
inconveniences involved.  For example, the Aegis help program will not access
UNIX man pages, and vice versa.

Some Aegis programs respond very badly to being STOPped (ie with a
SIGTSTP signal).  They go off into never never land.  Also, the magic 
incantation for signalling a SIGTSTP from the DM is dq -c 120028.  However
this number is never explained in any of the documentation.  Why 120028 and
not 120027?

The vt100 program and server is really awful.  Any time any of our users have 
used it, they have had trouble.  For example, the vt100 server is started 
each time the termcap tgetent routine is called.  Not only does this take 
forever to start up, but it doesnt respond to SIGTSTP's correctly.  Thus
emacs is not easily paused.

Having non-newline-terminated strings sent to stdout is a real trick.  No
amount of flushing seems to be able to reliably get the strings to the screen.
This is using printf and flush with the 9.2.5 C compiler.

Some administrative tasks are quite painful, such as moving a master
registry or renaming a node that is a registry 'site'.

The DM's lack of control functions (such as if, while) is quite limiting.
FOr example, if you want backspace to wrap around when it reaches the
beginning of a line in the DM editor, tough luck.

The process scheduling and/or paging is not good.  It is frustrating to type
a character into a window that is just running a shell, and have it take 
3 seconds to echo back just because you have been recently using another 
process which needed a lot of memory.  (of course, once your 1st character
has come back, your 2nd and subsequent characters are echoed quickly, its just 
the initial context switch that takes a long time.)  

Some users would like ALL keys on the keyboard to be self-repeating.  At the 
very least this should be a DM option.  Currently, certain keys are self-
repeating (such as backspace) and certain ones arent.

Serial ports do not seem to be accessable from any node except the ones that
they are connected to.

Users can trash files that they shouldn't be able to trash by using the DM.
Eg:  Bring up a help window on some help file (type help acl, for example)
and then use the pn command to write the window to a file in your current 
directory.  Hint:  Make a copy of the file first.  The help file will be 
trashed, and you may well not have access to the pn'd file in your current
directory!

I'm not convinced that the security works on the system.  This is not to say
that I have evidence that it doesn't (although the above example casts
large doubts), but rather to say that Apollo seems to have gone for
security through obscurity.  I just plain don't know what's going on down there
in the kernel, and without source code, I have no way of finding out.  There
don't seem to be any technical manuals available (at least the local Apollo 
office doesn't seem to be able to come up with any for us).

There is no apparant support for grey-scaling on the monochrome displays.

The Aegis shell is yet another example of half of an excellent program.
The language features are in general good, unless you want to do something
really outragous like find the number of arguments to a shell script!
Shell scripts do execute quite fast, though.  There are no history or
alias features, which means that people won't use it!

THe Display manager hates tabs, which is a pain under UNIX, because
certain program need tabs, such as make.


The Upside
==========

The transparency of the network enrironment is really excellent.  There
is really no need to worry about where one is working or where ones
files reside.

The reliability of both the system software and the hardware is excellent.
Our fileserver has never ever crashed, and has only gone down when we
wanted to install new software or salvage the disk space lost due to
blasted processes).

The system is fairly easy to administer (with the odd exception).  It is
really nice to be able to install new software by just typing install
and then typing in the name of the piece of software to install.
Its also nice not to have to worry about the hardware too much when
salvaging disks, etc.

The DM provides some very good features, such as a completely reprogrammable
keyboard, a transcript of your whole session, cut-and-paste, an acceptable
editor, etc.

The compilers give mostly intelligable error messages.

The UNIX is fairly close to vax bsd4.2 -- the differences are highly
annoying, mind you, but not usually a problem to get around.  Differences
include different constant values, some different constant names in include
files, lack of /dev/kmem, etc.

The DIALOGUE user interface package is quite easy to use, and is fairly
powerful, although it is not very flexible if you want to do something
in a way different from the way it thinks things should be done.

The DSEE source code manager is quite powerful, although like the rest of the 
system, there are fairly obvious features missing that make doing certain
"simple" things difficult (like moving a library from one system to another).

The dynamic linking, although limited, is still immensly useful.  It means
that program development goes quicker, and programs end up being smaller.

The object-oriented filesystem is great.  For example, one of the demo
programs that comes with the system is a sort of NFS-only-better.  It
allows programs running on apollos to access remote filesystems over
ethernet with the appropriate driver on the remote system.  To the local
programs, the files are just normal files accessed in the normal way.
No kernel mods needed, all user-level stuff, no risk of crashing the system.

The graphics stuff is good, fast, powerful, and easy to use.

Aegis programs generally have a consistant set of command line options.

The interprocess communication is good and fast.

The debugger is excellent, allowing debugging of forking processes,
graphic processes. etc.  -- and it works, too.



Philosophical
=============

There are some puzzling things about the Apollo system.  In many ways it
is a half-finished very good product trapped by evolving hardware.  For 
example, for a system with extensive graphics capability, there are very few 
graphically-oriented tools.  -- edfont, prfd, netmain and maybe a couple of
others.  But at the same time, support for serial terminals which are
textually oriented is lacking.  The tools that are there tend to have
some excellent features that work very well, but they tend to be side-by-
side with wished-for features that are missing.  I hope that Apollo
keeps improving its products in order to bring the whole system up to the
level of some parts of its tools.  In the mean time, I like using the Apollos
because they give me the power of UNIX plus half the power of Multics, plus
the things that neither UNIX or Multics have built in, such as graphics.
But at the same time, each time I use them, I get frustrated by the lack of 
orthoganality of the quality of the system's features.

	Dan Freedman
		The University of Calgary Computer Science Department.

thompson@calgary.UUCP (06/04/87)

Dan and I came up with a number of the comments which he posted. After he
posted it, we came up with a few others:

====================
        PRO
====================

The protected subsystem idea is both powerful and convienent. The ease with
which a group of programs and files can be isolated and controlled using the
protected subsystem tools is impressive

====================
        CON
====================

It is not apparently possible, without borrowing the entire display, to
obtain information regarding the user's activities (i.e. mouse movement,
button and key events, etc.) outside of the windows associated with a
process.

There appears to be no way to add system global error codes which will be
recognized by the error_$ system calls, or 'stcode'. While this is not really
a problem on UNIX systems, the ability to have defined codes for errors
occuring in site created systems would promote consistancy with the provided
error reporting characteristics of the system.

{ insert silly comment/standard disclaimer (there's a difference?) here }

-- 
-------------------------------------------------------
Bruce Thompson
University of Calgary , Computer Science Department
	(403)220-3538 (office)

peterson@utah-cs.UUCP (John W Peterson) (06/05/87)

Re: Dynamic linking:  Apollo actually has had the ability to load (and reload)
new libraries on the fly.  They just never documented it (grumble grumble..)

Re: Tab characters and the DM not reading '.login' - try fixing your
key definitions (hint: look at /sys/dm/bsd4.2_keys2, "stab" and "r3").

Speaking of cryptic key defs, many of the flames about the Apollo posted
here are really flames about the DM (and it's illegitimate child,
vt100_server).  And they're not unjustified - the DM was hot stuff in
1982, but relative to the rest of the world it hasn't gotten much
warmer.

If you are running a B&W DN3000 with 4 meg or more of memory, and you 
want "a unix box", you should very seriously consider running the X
window system instead of the DM.  All those obnoxious misfeatures of
vt100 and pads you can't control go away, and your machine looks just
like your Suns, HP's, uVaxen, etc (assuming you run X on those too).
For a large part of the user community at Utah, their Apollo specific
knowledge is simply "log in and type 'X'".  (Actually, they generally
also know how to unwedge the TCP server...)

Now, I did say a B&W DN3000 with 4 meg or more of memory.  X runs nowhere
near as fast as the DM, and we've found that on older Apollos the
performance isn't quite acceptable; but on DN3000's it's OK.  This really
isn't X's fault, the Apollo port has been around less than a year, vs.
half a decade of careful tweaking for the DM.  Perhaps this will even
out when Apollo offically releases their X implementation.

Cheers,
jp

srt@CS.UCLA.EDU (06/09/87)

Robert Reed writes:

   The point of all this is that despite my willingness to hack in order to
   develop sufficient tools in a given environment, I come very quickly to
   conclusions about the effectiveness of those tools in providing a
   reasonable environment.  Some tools rarely get in my way (e.g.  Gosling
   Emacs).  Some tools constantly get in my way (e.g.  AEGIS, DM, debug,
   etc.)...

   I can do things with an Emacs package driving the UNIX dbx debugger that
   would make users of debug drool with envy...

It seems to me that many of the people who are dissatisfied with the Apollos
are people who come from a one-window, command-line oriented operating
system like Unix.  In that kind of environment, Emacs running sub-processes
is a dream come true, because it gives you a kind of multi-window
functionality.  That comes for free on the Apollos - you can liberate
yourself from this kind of one-window thinking.

You can't simply look at the Aegis command-line interpreter independent of
the environment it operates in.  Sure, if you want to fire up your Apollo
with one window and treat it like an extremely expensive workstation, you
are going to be dissatisfied with the environment.  That's the wrong way to
use it.  You don't need to run your editor and your debugger in the same
window.  Run them in different windows and move between them however and
whenever you want.  Share information, cut and paste, etc.

Much of the functionality of the C-shell isn't needed on the Apollos.  I
rarely use the history functions (!!, etc.) on the Apollos because "Again"
and C&P are so much handier, and I'm sure there are other examples.

This argument has degenerated from a discussion of the command-line
interpreters on the Apollo to a comparison of Aegis commands to other
operating systems on other machines.  I personally don't feel there is much
to be gained from this discussion, since these things tend to be a matter
of religion and personal biases.

   One very quickly runs out of gas strictly within the DM.  Its editing
   facilities are a joke.  I'm sure the DM editor satisfies novice text
   entry...

I don't think the DM editor is a joke, though it obviously is not nearly as
flexible as a powerful Emacs.  Many of the most common editor functions are
supplied in the DM, and the most important customizations can be handled
(key binding, macros).  It is annoying not to be able to write
paren-balancing or "electric-C" mode, but I think Apollo made the right
choice in providing a simple, extensible and blindingly fast text editor
rather than trying to implement some kind of mega-editor in an attempt to
please everyone.

ram-ashwin@YALE.ARPA (Ashwin Ram) (06/09/87)

>  Date: Mon, 08 Jun 87 23:28:17 PDT
>  From: srt@CS.UCLA.EDU
>
>  Robert Reed writes:
>
>     One very quickly runs out of gas strictly within the DM.  Its editing
>     facilities are a joke.  I'm sure the DM editor satisfies novice text
>     entry...
>
>  I don't think the DM editor is a joke, though it obviously is not nearly as
>  flexible as a powerful Emacs.  Many of the most common editor functions are
>  supplied in the DM, and the most important customizations can be handled
>  (key binding, macros).  It is annoying not to be able to write
>  paren-balancing or "electric-C" mode, but I think Apollo made the right
>  choice in providing a simple, extensible and blindingly fast text editor
>  rather than trying to implement some kind of mega-editor in an attempt to
>  please everyone.

I totally disagree.  You're thinking of Emacs as a "single window terminal
editor", for which case your arguments hold.  Imagine, however, that the DM
was one unified Emacs, each DM window being like an Emacs window but without
the dumb terminal restrictions, the DM command window being the minibuffer,
and so on.  You still get cut and paste between windows, you still get
independent shells running in independent windows, you still get input pads
to those shells, and the rest of the things you and I both love.  But you
also get different Emacs-like modes in those windows, customizable keys *and*
keymaps, local/mode-specific key bindings, extensibility (the DM command
language is surely a joke), electric modes, and so on.

You get an Emacs running directly on the graphics of the Apollos, utilizing
the full capabilities of these slick machines, not one you have to
laboriously start up in a vt100 window.  I think this can be blindingly fast
without sacrificing *real* editing facilities.

I don't think the DM editor even satisfies novice text entry.  It doesn't
even have word wrap at the end of the line, let alone a decent undo function.

-- Ashwin Ram --

ARPA:    Ram-Ashwin@yale
UUCP:    {decvax,linus,seismo}!yale!Ram-Ashwin
BITNET:  Ram@yalecs

ram-ashwin@YALE.ARPA (Ashwin Ram) (06/09/87)

A point I'd like to clarify about my message -- I wasn't making a Unix vs.
Aegis argument, but a DM vs. Emacs one.  I was only claiming that it would be
real nice if the DM editor *was* Emacs, suitably enhanced to take advantage
of the Apollo workstation.

As far as Unix vs. Aegis goes, there are some features of Unix that I like
(and use), but if I were forced to use one or the other exclusively, I'd go
for Aegis.  I think it would be a pity if Apollo abandoned Aegis completely.
The current setup -- primarily Aegis, but allowing me to use some Unix stuff
where it's better or more familiar -- suits me (as a user, not a system
programmer) just fine.  Of course, it would be nice if some of the Unix stuff
that people liked could be integrated into Aegis (like TEST(1) vs. EXISTF,
APROPOS, upper/lower-case filenames, etc., at the user level, or like
cleaning up PGM_$ARGs at the system programmer level).

-- Ashwin.

bobr@zeus.UUCP (06/10/87)

In article <8706090628.AA29741@zeus.CS.UCLA.EDU> srt@CS.UCLA.EDU writes:

    It seems to me that many of the people who are dissatisfied with the
    Apollos are people who come from a one-window, command-line oriented
    operating system like Unix.  In that kind of environment, Emacs running
    sub-processes is a dream come true, because it gives you a kind of
    multi-window functionality.  That comes for free on the Apollos - you
    can liberate yourself from this kind of one-window thinking.

Give me a break!  I am quite familiar with windowing systems, their
strengths, and their weaknesses.  One common failing of windowing systems is
that there is no choice but to treat each window as a separate virtual
terminal with a completely different environment.  With no context,
everything must be specified in a fully qualified form.  While running Emacs
with multiple windows, a context is established and shared among the
subwindows managed by Emacs.  Functionally, this is no less a windowing
environment than the "true windows" provided by the DM, but in some
respects, it is more.  This shared context can provide a level of
cooperation among windows that is not easily obtained in the DM windows
model.

    You can't simply look at the Aegis command-line interpreter independent
    of the environment it operates in.  Sure, if you want to fire up your
    Apollo with one window and treat it like an extremely expensive
    workstation, you are going to be dissatisfied with the environment.

I normally have a minimum of four windows running.  One contains an emacs
process with up to five or six separate panes.  One is used for compiling
and running programs (I still haven't been able to solve the AEGIS bug which
causes some Emacs subprocess support to hang).  These first two tile the
entire screen (excluding the DM command line).  I also have a window for the
debugger, though I would rather run this as one or more panes in the Emacs
window.  A forth window runs /com/sh, because /bin/csh still has some bugs
in it that prevent some programs from running properly.  Running them under
/com/sh seems to alleviate the problems.  As I said in my previous post, I
generally will work a system to its limits.  I have not ignored the
capabilities of multiple windows, but I have discovered their weaknesses.

    You don't need to run your editor and your debugger in the same window.
    Run them in different windows and move between them however and whenever
    you want.  Share information, cut and paste, etc.

Consider the advantage of running the debugger as a subprocess of your
editor.  The most obvious advantage is simple navigation about a multi-file
program.  I don't need to type "env MCHAN_C\create_process\" to get to that
context for debugging.  I just "^X^Gcreate_process^J" which takes me right
there.  I can brouse the file easily without concern for line numbers.  I
don't need to guess at line numbers and have "env" tell me that such and
such a number doesn't exist.  When I find the line I want to breakpoint, I
have a function key mapped to "ESC-Xdbx-break^J" which computes the line
number and feeds a command to dbx to actually place the breakpoint.  Other
function keys have been similarly mapped to functions for single stepping,
printing values and continuing to the next breakpoint.  When I discover a
bug, I'm generally right at the place I need to be to fix it

Multiple DM windows offer no advantages over this method of debugging.  It
goes without saying that I do have another window which is actually running
the program I am debugging.

    Much of the functionality of the C-shell isn't needed on the Apollos.  I
    rarely use the history functions (!!, etc.) on the Apollos because
    "Again" and C&P are so much handier, and I'm sure there are other
    examples.

"again" and "cut and paste" are a bearly adequate replacement for csh
history functions.  The problem is interposed program output, which causes
command lines to be scrolled off the page, requiring a lot of keystrokes to
find an reexecute commands.  A better solution than either of these is the
technique used in the ksh where simple key sequences pan back through the
history file, selecting those lines which were specifically entered as
commands.  I'd rank the csh second in usability of this function and the DM
last.

    I don't think the DM editor is a joke, though it obviously is not nearly
    as flexible as a powerful Emacs.  Many of the most common editor
    functions are supplied in the DM, and the most important customizations
    can be handled (key binding, macros).  

I disagree that the DM provides facilities for performing the most important
customizations.  It provides facilities for supporting the most easy to
implement customizations, i.e. simple string replacements.  There are some
important things that can be done, such as binding SHELL to /etc/start_csh,
but the lack of conditionals and parameters means that lots of simple
functions which are easy to produce in other macroprocessors are impossible
to do in the DM.
-- 
Robert Reed, Tektronix CAE Systems Division, bobr@zeus.TEK

slade-stephen@YALE.ARPA (Stephen Slade) (06/10/87)

        Much of the functionality of the C-shell isn't needed on the Apollos.  I
        rarely use the history functions (!!, etc.) on the Apollos because
        "Again" and C&P are so much handier, and I'm sure there are other
        examples.
    
    "again" and "cut and paste" are a bearly adequate replacement for csh
    history functions.  The problem is interposed program output, which causes
    command lines to be scrolled off the page, requiring a lot of keystrokes to
    find an reexecute commands.  A better solution than either of these is the
    technique used in the ksh where simple key sequences pan back through the
    history file, selecting those lines which were specifically entered as
    commands.  I'd rank the csh second in usability of this function and the DM
    last.
    
Note: the DM's "undo" command serves exactly this function when typed to 
an input pad.  This is usually much more convenient than history hacking
or "again" with cut and paste.  In a departure from accepted practice, I
shall refrain from expressing any deep sentiments about adherents of the
UNIX user interface beyond those implicit in the following verse.

    "Eunuchs, abortive Platonists and priests
     Speak always very wisely about love."
        - Theodore Spencer, An Act of Life (1944)

--Stephen Slade
-------

benoni@ssc-vax.UUCP (06/11/87)

In article <8706090628.AA29741@zeus.CS.UCLA.EDU>, srt@CS.UCLA.EDU writes:
> Much of the functionality of the C-shell isn't needed on the Apollos.  I
> rarely use the history functions (!!, etc.) on the Apollos because "Again"
> and C&P are so much handier, and I'm sure there are other examples.

Totally false!!!!!  Alot of our users started that way and hated it.
It requires *mousing* and *window scrolling* that is tedious and
time consuming.  The c-shell is not only faster but contains many more
practical benefits. 

> I don't think the DM editor is a joke, though it obviously is not nearly as
> flexible as a powerful Emacs.  
The DM editor is a joke.  It was built for non-computing types that 
ocassionally log on and won't have to learn or remember anything.
Amazingly, within one group, four people started out using the DM.  They
all gave it up in favor of VI.  Reasons :
	* documentation(!!!)
	* the DM deals terribly with CONTROL characters
	* balancing symmetrical characters
	* macros 
	* ab
	* ability to set modes
	* VI is everywhere, DM editor is only on Apollo 

Even some of the Apollo developers seem to distance themselves from the
DM editor. A couple of us once got into a discussion about the merits
of the DM editor and VI and they had to admit VI was the more powerful
editor.  Emacs provides even nicer features and am looking foreward to using it.

Speaking of Aegis consistency -

	ACL name1       => gives the acls for the named file or directory
	ACL name1 name2 => clones the acls of name2 on name1

Why didn't they write a CPACL for copy acl.  People munge their files
and directories by thinking they are going to get the acls for two
objects.

hwarkentyne@watdragon.UUCP (06/12/87)

In article <1290@ssc-vax.UUCP> benoni@ssc-vax.UUCP (Charles L Ditzel) writes:
>In article <8706090628.AA29741@zeus.CS.UCLA.EDU>, srt@CS.UCLA.EDU writes:
>> Much of the functionality of the C-shell isn't needed on the Apollos.  I
>> rarely use the history functions (!!, etc.) on the Apollos because "Again"
>> and C&P are so much handier, and I'm sure there are other examples.
>
>Totally false!!!!!  Alot of our users started that way and hated it.
>It requires *mousing* and *window scrolling* that is tedious and
>time consuming.  The c-shell is not only faster but contains many more
>practical benefits. 

I wrote software on an Apollo for two years and never had a problem
retrieving previous commands using Aegis.  
By putting a "hold" on the input window and pressing the "undo"
button, I could easily recover whole sequences of commands and
inputs for editing and/or repetition.
No mousing and only minimal window scrolling is needed.
I found this method much easier than using the history capability
of the c-shell.

Anyway, whether or not Mr. Ditzel finds Aegis deficient with respect
to retrieving previous commands, I found it extremely useful and
would jump at the chance to work again on an Apollo in an Aegis
environment.

Ken Warkentyne

nazgul@apollo.uucp (Kee Hinckley) (06/13/87)

In article <1819@zeus.TEK.COM> bobr@zeus.UUCP (Robert Reed) writes:
> "again" and "cut and paste" are a bearly adequate replacement for csh
> history functions.  The problem is interposed program output, which causes
> command lines to be scrolled off the page, requiring a lot of keystrokes to
....

One of these days I will get around to posting all of my keydefs (this sounds
simple, but actually they are split up so different ones get loaded on different
machines).  Anyway.  In the meantime here is my again key.  I still use ! in
the csh for recent commands, but this is in some ways more powerful.


kd  R2      twb -t;au;twb -b;twb -r;\%[%@#>=-$D:B][0-9 -=S$]?*@&'Key: '\;
                / /;ar;dr;tr;xc AGAIN_BUF;pb;tb;tl;ti;tb;tr;xp AGAIN_BUF;
                twb -b;pb;tb;tr     ke
kd  R2U     ke
kd  R2S     twb -t;au;twb -b;twb -r;\%[%@#>=-$D:B][0-9 -=S$]?*@&'Key: '\;
                / /;/ /;dr;tr;xc AGAIN_BUF;pb;tb;tl;ti;tr;xp AGAIN_BUF;tr   ke


The first version gets the command, the second gets the arguments.  In both
cases it prompts for a wildcard to match on the command line.  Just pressing
return will result in the last command.  They key thing to change here is the
contents of the regular expression in []s.  These indicate the first 2 characters
of your prompt.  If you only ever have one prompt then you could just say
\%ab?*...\ or some such, but usually I have multiple environments and this
is set up to work in all my shells, DSEE, the debugger, and a number of 
other environments.  For instance, let's say you wanted to take care of the
Aegis shell (sigh) and DSEE.  Then you would say '[$D][ S]'

Enjoy.

Oh well, while I'm at it.  Here are my window setup keydefs for a BW DN3000.

(000,000)dr;(000,063)idf

(065,000)dr;(671,496)   wdf 1
(673,000)dr;(1279,496)  wdf 2
(065,498)dr;(671,994)   wdf 3
(673,498)dr;(1279,994)  wdf 4
(065,000)dr;(671,496)   wdf 5
(673,000)dr;(1279,496)  wdf 6
(065,498)dr;(671,994)   wdf 7
(673,498)dr;(1279,994)  wdf 8

kd  NP7     twb -l;dr;(065,000)wg;twb -r;twb -b;dr;(671,496)wg;tl ke
kd  NP4     twb -l;dr;(065,000)wg;twb -r;twb -b;dr;(671,994)wg;tl ke
kd  NP1     twb -l;dr;(065,000)wg;twb -r;twb -b;dr;(671,496)wg;twb -l;twb -b;dr;(065,994)wm;tl   ke

kd  NP8     twb -l;dr;(065,000)wg;twb -r;twb -b;dr;(1279,496)wg;tl ke
kd  NP5     twb -l;dr;(065,000)wg;twb -r;twb -b;dr;(1279,994)wg;tl ke
kd  NP2     twb -l;dr;(065,000)wg;twb -r;twb -b;dr;(1279,496)wg;twb -l;twb -b;dr;(065,994)wm;tl   ke

kd  NP9     dr;(1279,000)wm;twb -l;twb -b;dr;(673,496)wg;tl    ke
kd  NP6     dr;(1279,000)wm;twb -l;twb -b;dr;(673,994)wg;tl    ke
kd  NP3     dr;(1279,000)wm;twb -l;twb -b;dr;(673,496)wg;twb -r;twb -b;dr;(1279,994);wm;tl    ke

This will set up your screen psuedo-tiled (which in my mind is better than
tiled, but...)

                     +-----+-----+
                    I|     |     |
                    C|     |     |
                    O+-----+-----+
                    N|     |     |
                    S|     |     |
                     +-----+-----+

With the number keys used to put windows in their places according to which
keypad key you press.  Note that the movement commands don't *always* work,
in particular DSEE can only be placed with them on the right hand side.


And use these to get things in and out of Icons (or invisible windows)
without using the mouse.  You either type the name of the window or a
group (created with ^G).

kd  ^G      wgra @&'Group: '    ke;     # Add to group
#kd  ^E      wi -w @&'Group: '   ke;     # Make visible
#kd  ^W      wi -i @&'Group: '   ke;     # Make invisible
kd ^W   icon -i @&'Group: '   ke
kd ^E   icon -w @&'Group: '   ke


Enough for now.

                                                -kee
-- 
UUCP: {mit-erl,yale,uw-beaver}!apollo!nazgul  ARPA: apollo!nazgul@eddie.mit.edu
I'm not sure which upsets me more; that people are so unwilling to accept
responsibility for their own actions, or that they are so eager to regulate 
everyone else's.

benoni@ssc-vax.UUCP (06/15/87)

In article <2915@watdragon.UUCP>, hwarkentyne@watdragon.UUCP writes:
> By putting a "hold" on the input window and pressing the "undo"
> button, I could easily recover whole sequences of commands and
> inputs for editing and/or repetition.
> No mousing and only minimal window scrolling is needed.
> I found this method much easier than using the history capability
> of the c-shell.
True. You can backtrack and *that* is useful but by no means an
adequate replacement for the csh history and command line editing features.
Somehow '!v' (= vi anyfile.c) seems relatively easier than searching 
"whole sequences of commands". 
The previous example given however was extolling the virtues of 
"again" something i find of limited use because of the scrolling 
and mousing. 

A particularly nice feature available in csh is upon logging in to
be able to see what your last 25 or so commands were the last time
you were logged on - i am sure with some hacking Apollo's DM might be
able to replicate this - but you will never catch me trading in csh
for the weaker DM.  The point being the csh already has these type of
things built in and i would prefer to write scripts that extend
csh to my needs AND THE SCRIPTS ARE *PORTABLE* TO OTHER 
*NON-APOLLO* MACHINES.

krowitz@mit-kermit.UUCP.UUCP (06/15/87)

I *would* be nice to be able to have portable display manager scripts,
but let's face it, there are no two vendors which use the same display
manager today. X-windows will be available from many vendors in a year
or so, but it is currently not a product.

I'm not certain what all the debate about the DM vs. csh history feature
is about ... The DM operates just as well in a BSD4.2 window as in an
AEGIS window. I use whichever feature (DM vs. !!) is more convenient at
the particular moment. I think we have to  make the distinction between
what features a display manager needs to have and what features the command
processor (the shell) should have.


                                   -- David Krowitz

mit-erl!mit-kermit!krowitz@eddie.mit.edu
mit-erl!mit-kermit!krowitz@mit-eddie.arpa
krowitz@mit-mc.arpa
(in order of decreasing preference)