Path: sparky!uunet!stanford.edu!rutgers!uwvax!brownie.cs.wisc.edu!so From: s...@brownie.cs.wisc.edu (Bryan S. So) Newsgroups: comp.unix.wizards,comp.unix.shell,comp.unix.misc Subject: The Problem with UNIX Message-ID: <1992Nov9.172715.16367@cs.wisc.edu> Date: 9 Nov 92 17:27:15 GMT Sender: n...@cs.wisc.edu (The News) Organization: University of Wisconsin, Madison -- Computer Sciences Dept. Lines: 30 I am doing research on UNIX command line interface problems. I am sure everyone has his/her favorite UNIX troubles, would you post or email me what's your favorites? What should have been done by UNIX to resolve that problem in general? Does anybody know of excellent papers in this area? I know about Norman's "The Trouble with UNIX". To start the discussion, consider the following problems: cat a b > b This is a general problem of trying to modify the input file. rm -filename_with_a_hyphen This is a general problem of name clash (clashing filename with command options.) mail somebody < a.out Sending binary file should be uuencoded first. This is a general type conflict problem. Bryan So
Path: sparky!uunet!haven.umd.edu!darwin.sura.net!jvnc.net! netnews.upenn.edu!gynko!rsk From: r...@gynko.circ.upenn.edu (Rich Kulawiec) Newsgroups: comp.unix.wizards,comp.unix.shell,comp.unix.misc Subject: Re: The Problem with UNIX Message-ID: <96927@netnews.upenn.edu> Date: 10 Nov 92 14:18:06 GMT References: <1992Nov9.172715.16367@cs.wisc.edu> Sender: n...@netnews.upenn.edu Followup-To: comp.unix.wizards Organization: GSP Whitewater Slalom Racing Team Lines: 13 Nntp-Posting-Host: gynko.circ.upenn.edu In article <1992Nov9.172715.16...@cs.wisc.edu> s...@brownie.cs.wisc.edu (Bryan S. So) writes: >Does anybody know of excellent papers in this area? I know >about Norman's "The Trouble with UNIX". Norman's paper is (a) a decade out-of-date and (b) extraordinarily inaccurate, as it was when published. In my opinion, it represents the uninformed rantings of someone who is simply too lazy to read the manuals and therefore should not be using a computer at all. I'd suggest Rob Pike's 'cat -v considered harmful' as an excellent starting point. ---Rsk
Newsgroups: comp.unix.wizards Path: sparky!uunet!charon.amdahl.com!pacbell.com!ames!saimiri.primate.wisc.edu! zaphod.mps.ohio-state.edu!uwm.edu!daffy!uwvax!brownie.cs.wisc.edu!so From: s...@brownie.cs.wisc.edu (Bryan S. So) Subject: Re: The Problem with UNIX Message-ID: <1992Nov11.210729.11676@cs.wisc.edu> Sender: n...@cs.wisc.edu (The News) Organization: University of Wisconsin, Madison -- Computer Sciences Dept. References: <1992Nov9.172715.16367@cs.wisc.edu> <96927@netnews.upenn.edu> Date: Wed, 11 Nov 1992 21:07:29 GMT Lines: 15 Concerning Don Norman's paper "The Trouble With UNIX", Datamation 27, r...@gynko.circ.upenn.edu (Rich Kulawiec) writes: >Norman's paper is (a) a decade out-of-date and (b) extraordinarily >inaccurate, as it was when published. In my opinion, it represents >the uninformed rantings of someone who is simply too lazy to read the >manuals and therefore should not be using a computer at all. I agree it's a decade old but can you indicate why it's inaccurate? To me, some problems like "cat a b > b" are obviously undesirable designs and still unsolved after more than a decade. Bryan
Path: sparky!uunet!think.com!rpi!crdgw1!rdsunx.crd.ge.com!rdsunx!barnett From: barn...@grymoire.crd.ge.com (Bruce Barnett) Newsgroups: comp.unix.wizards Subject: Re: The Problem with UNIX Message-ID: <BARNETT.92Nov12092045@grymoire.crd.ge.com> Date: 12 Nov 92 14:20:45 GMT References: <1992Nov9.172715.16367@cs.wisc.edu> <96927@netnews.upenn.edu> <1992Nov11.210729.11676@cs.wisc.edu> Sender: use...@crd.ge.com (Required for NNTP) Reply-To: barn...@crdgw1.ge.com Organization: GE Corp. R & D, Schenectady, NY Lines: 15 In-Reply-To: so@brownie.cs.wisc.edu's message of Wed, 11 Nov 1992 21:07:29 GMT Nntp-Posting-Host: grymoire.crd.ge.com In article <1992Nov11.210729.11...@cs.wisc.edu> s...@brownie.cs.wisc.edu (Bryan S. So) writes: > To me, some problems like "cat a b > b" are obviously undesirable > designs and still unsolved after more than a decade. It has been solved. There are at least two solutions: 1) Educate the user. After all the system did exactly what the user told it to do. 2) in csh/tcsh, do "set noclobber" grymoire% set noclobber grymoire% touch a b grymoire% cat a b >b b: File exists. -- Bruce Barnett <barn...@crd.ge.com> uunet!crdgw1!barnett
Path: sparky!uunet!know!mips2!news.bbn.com!noc.near.net!nic.umass.edu! news.mtholyoke.edu!news.byu.edu!hamblin.math.byu.edu!sol.ctr.columbia.edu! zaphod.mps.ohio-state.edu!uwm.edu!daffy!uwvax!brownie.cs.wisc.edu!so From: s...@brownie.cs.wisc.edu (Bryan S. So) Newsgroups: comp.unix.wizards Subject: Re: The Problem with UNIX Message-ID: <1992Nov12.231845.14014@cs.wisc.edu> Date: 12 Nov 92 23:18:45 GMT References: <96927@netnews.upenn.edu> <1992Nov11.210729.11676@cs.wisc.edu> <BARNETT.92Nov12092045@grymoire.crd.ge.com> Sender: n...@cs.wisc.edu (The News) Organization: University of Wisconsin, Madison -- Computer Sciences Dept. Lines: 34 Concerning "cat a b > b", barn...@crdgw1.ge.com writes: >It has been solved. There are at least two solutions: > 1) Educate the user. After all the system did exactly what > the user told it to do. > 2) in csh/tcsh, do "set noclobber" > >grymoire% set noclobber >grymoire% touch a b >grymoire% cat a b >b >b: File exists. >-- >Bruce Barnett <barn...@crd.ge.com> uunet!crdgw1!barnett No, the above are not solutions. 1. We should assume some stubborn users cannot be educated. I claim without proof such users exist. 2. set noclobber is not a solution because a solution should prepend a to b. I propose a real solution to this problem. Change the internal policy of UNIX, so that when any file is used as both input and output, like cat a b > a or cat a b > b UNIX should read and buffer all input before opening the output with "w". Bryan
Path: sparky!uunet!ferkel.ucsb.edu!taco!rock!stanford.edu!ames! elroy.jpl.nasa.gov!usc!hela.iti.org!cs.widener.edu!dsinc!netnews.upenn.edu!gynko!rsk From: r...@gynko.circ.upenn.edu (Rich Kulawiec) Newsgroups: comp.unix.wizards Subject: Re: The Problem with UNIX [Includes ANCIENT Usenet traffic] Message-ID: <97393@netnews.upenn.edu> Date: 13 Nov 92 00:24:02 GMT References: <1992Nov9.172715.16367@cs.wisc.edu> <96927@netnews.upenn.edu> <1992Nov11.210729.11676@cs.wisc.edu> Sender: n...@netnews.upenn.edu Organization: GSP Whitewater Slalom Racing Team Lines: 1389 Nntp-Posting-Host: gynko.circ.upenn.edu I've included a sharchive at the end of this with the full text of Don Norman's paper and some comments that various netfolks made at that time. If I recall correctly, this was the first instance of a Usenet forgery -- he claimed that the paper was sent without his knowledge -- and so a couple of the messages deal with that issue rather than with the points raised in his paper. I got quite a kick out of reading these messages again 11 years later; it's kind of interesting to look back on these with a decade's perspective. By the way, you'll notice a paucity of headers in those old messages; that might make identifying people difficult. I believe that "ber" is Brian Redman, csvax.mark is Mark Horton, jej is James Jones, nowicki is Bill Nowicki, mo might be Mike O'Brien, and utzoo!henry is Henry Spencer. In article <1992Nov11.210729.11...@cs.wisc.edu> s...@brownie.cs.wisc.edu (Bryan S. So) writes: >Concerning Don Norman's paper "The Trouble With UNIX", Datamation 27, >r...@gynko.circ.upenn.edu (Rich Kulawiec) writes: > >>Norman's paper is (a) a decade out-of-date and (b) extraordinarily >>inaccurate, as it was when published. In my opinion, it represents >>the uninformed rantings of someone who is simply too lazy to read the >>manuals and therefore should not be using a computer at all. > >I agree it's a decade old but can you indicate why it's inaccurate? > >To me, some problems like "cat a b > b" are obviously undesirable >designs and still unsolved after more than a decade. Nearly every problem that Norman addressed himself to was a function of the shell, not of Unix. "cat a b > b" is solvable at the shell level, should it ever really become necessary to do so. (I personally think that people who type that deserve what they get, and that there's no need to fix it, but I digress.) Let me quote some choice nuggets from his paper and comment on them: DN > I would have written a program that listed the contents onto DN > the terminal, perhaps stopping every 24 lines if you had DN > signified that you were on a display terminal with only a 24 DN > line display. To the designers of Unix, however, such a DN > solution lacks elegance. Unix has no basic listing com- DN > mand, but instead you must use a program meant to do some- DN > thing else. "more" was already around and in widespread use when he wrote this. In fact, Norman mentions that he's using 4BSD in his paper. DN > In Unix, if you wanted to list the contents of a file DN >called "HappyDays", you would use the command named "cat": DN > cat HappyDays DN >Why cat? Why not? After all, said Humpty Dumpty to Alice, DN >who is to be the boss, words or us? The use of an alias, or 1-line shell script, easily provides the functionality of "cat" by any name the user desires. DN > The standard text editor is called Ed. Ding. DN > [...] and Unix move (mv) and copy (cp) operations will DN > destroy existing files without any warning. "mv -i". "cp -i". Also around when he wrote his paper. DN> The bad news is that Berkeley Unix is jury-rigged on DN> top of regular Unix, so it can only patch up the faults: it DN> can't remedy them. This belies the contributions of the CSRG team. DN > The listing program is called "more" (as in, DN > "give me more"). Ah, so he does know about "more"; then why berate "cat"? DN > A common theme runs through the com- DN > mands: don't be nice to the casual user -- write the system DN > for the dedicated expert. The system is a recluse. It uses DN > weird names, and it won't speak to you, not even if spoken DN > to. For system programmers, Unix is a delight. It is well DN > structured, with a consistent, powerful philosophy of con- DN > trol and structure. My complaint is simple: why was not DN > the same effort put into the design at the level of the user? Actually, here, he's dead right. Unix was written for programmers by programmers, and the biggest mistake we've ever made as a community was trying to dumb it down so that the average clueless user could use it. Let 'em have Macintoshes. Gimme back "dsw". ---Rsk # This is a shell archive. # Remove everything above and including the cut line. # Then run the rest of the file through sh. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # rumor.shrink # rumor.ber # rumor.bh # rumor.clyde # rumor.eps # rumor.greg # rumor.henry # rumor.henry2 # rumor.jej # rumor.jerry # rumor.mark # rumor.mark2 # rumor.mo # rumor.nowicki # rumor.swd # This archive created: Thu Nov 12 18:58:11 1992 # By: Rich Kulawiec (GSP Whitewater Slalom Racing Team) cat << \SHAR_EOF > rumor.shrink From cincy!duke!decvax!utzoo!datamat!rumor Sat Aug 1 23:37:27 PDT 1981 The Truth about UNIX: fa.unix-wizards The truth about Unix: The user interface is horrid Donald A. Norman Department of Psychology and Program in Cognitive Science Center for Human Information Processing University of California, San Diego La Jolla, California 92093 (to appear in Datamation) Unix is a highly touted operating system. Developed at the Bell Telephone Laboratories and distributed by Western Electric, it has become a standard operating system in Universities, and it promises to become a standard for the large micro- mini- systems for home, small business, and educational setting. But for all its virtues as a system -- and it is indeed an elegant system -- Unix is a disaster for the casual user. It fails both on the scientific principles of human engineering and even in just plain common sense. The motto of the designers of Unix towards the user seems to be "let the user beware." If Unix is really to become a general system, then it has got to be fixed. I urge correction to make the elegance of the system design be reflected as friendliness towards the user, especially the casual user. I have learned to get along with the vagaries of its user interface, but our secretarial staff persists only because we insist. And even I, a heavy user of computer systems for 20 years have had difficulties: copying the old file over the new, transfer- ring a file into itself until the system collapsed, and removing all the files from a directory simply because an extra space was typed in the argument string. In this arti- cle I review both the faults of Unix and also some of the principles of Cognitive Engineering that could improve things, not just for Unix, but for computer systems in gen- eral. But first, the conclusion; Unix fails several simple tests. Consistency: The command names, language, functions and syntax are inconsistent. Functionality: The command names, formats, and syntax seem to have no relationship to their functions. Friendliness: Unix is a recluse, hidden from the user, silent in operation. "No news is good news" is its motto, but as a result, the user can't tell what state the system is in, and essentially, is completely out of touch with things. Cognitive Engineering: The system does not understand August 2, 1981 - 2 - about normal folks, the everyday users of Unix. Cognitive capabilities are strained beyond their limits, the lack of mnemonic structures places large loads of memory, and the lack of interaction puts a strain on one's ability to retain mentally exactly what state the system is in at any moment. (Get distracted at the wrong time and you lose your place -- and maybe your file.) What is good about Unix? The system design, the generality of programs, the file structure, the job structure, the powerful operating system command language (the "shell"). To bad the concern for system design was not matched by an equal concern for the human interface. One of the first things you learn when you start to decipher Unix is how to list the contents of a file onto your terminal. Now this sounds straightforward enough, but in Unix even this simple operation has its drawbacks. Sup- pose I have a file called "testfile". I want to see what is inside of it. How would you design a system to do it? I would have written a program that listed the contents onto the terminal, perhaps stopping every 24 lines if you had signified that you were on a display terminal with only a 24 line display. To the designers of Unix, however, such a solution lacks elegance. Unix has no basic listing com- mand, but instead you must use a program meant to do some- thing else. In Unix, if you wanted to list the contents of a file called "HappyDays", you would use the command named "cat": cat HappyDays Why cat? Why not? After all, said Humpty Dumpty to Alice, who is to be the boss, words or us? "Cat", short for "con- catenate" as in, take file1 and concatenate it with file2 (yielding one file, with the first part file1, the second file2) and put the result on the "standard output" (which is usually the terminal): cat file1 file2 Obvious right? And if you have only one file, why cat will put it on the standard output -- the terminal -- and that accomplishes the goal (except for those of us with video terminals who watch helplessly as the text goes streaming off the display). The Unix designers are rather fond of the principle that special purpose functions can be avoided by clever use of a small set of system primitives. Their philosophy is essentially, don't make a special function when the side- effects of other functions will do what you want. But there are several reasons why this philosophy is bad; August 2, 1981 - 3 - 1. A psychological principle is that names should reflect function, else the names for the function will be difficult to recall; 2. Side-effects can be used for virtue, but they can also have unwarranted effects. Thus, if cat is used unwisely, it will destroy files (more on this in a moment). 3. Special functions can do nice things for users, such as stop at the end of screens, or put on page headings, or transform non-printing characters into printing ones, or get rid of underlines for terminals that can't do that. Cat, of course, won't stop at terminal or page boundaries, because if it did that, why that would disrupt the concate- nation feature. But still, isn't it elegant to use cat for listing? Who needs a print or a list command. You mean "cat" isn't how you would abbreviate concatenate? gee, it seems so obvious to us. Just like _f_u_n_c_t_i_o_n _U_n_i_x _c_o_m_m_a_n_d _n_a_m_e c compiler cc change working directory chdir (cd in Berkeley Unix) change password passwd concatenate cat copy cp date date echo echo editor ed link ln move mv remove rm search file for pattern grep Notice the lack of consistency in forming the command name from the function. Some names are formed by using the first two consonants of the function name, unless it is the editor which is abbreviated "ed" and concatenate which is "cat" or "date" or "echo" which are not abbreviated at all. Note how useful those 2 letter abbreviations are. See how much time and effort is saved typing only 2 letters instead of -- heaven forbid -- 4 letters. So what is a little inconsistency among friends, especially when you can save almost 400 milliseconds per command. Similar statements apply to the names of the file directories. Unix is a file oriented system, with hierarch- ical directory structures, so the directory names are very important. Thus, this paper is being written on a file named "unix" and whose "path" is /csl/norman/papers/CogEngineering/unix. The name of the top directory is "/", and csl, norman, papers, and CogEngineer- ing are the names of directories hierarchically placed August 2, 1981 - 4 - beneath "/". Note that the symbol "/" has two meanings: the name of the top level directory and the symbol that separates levels of the directories. This is very difficult to justify to new users. And those names: the directory for "users" and "mount" are called, of course, "usr" and "mnt." And there are "bin," "lib," and "tmp." (What mere mortals might call binary, library, and temp). Unix loves abbrevi- ations, even when the original name is already very short. To write "user" as "usr" or "temp" as "tmp" saves an entire letter: a letter a day must keep the service person away. But Unix is inconsistent; it doesn't abbreviate everything as 2 or 3 letter commands. It keeps "grep" at its full four letters, when it could have been abbreviated as "gr" or "gp". (What does grep mean, you may ask. "Global REgular expression, Print" -- at least that's the best we can invent, the manual doesn't even try to say. The name wouldn't matter if grep were something obscure, hardly ever used, but in fact it is one of the more powerful, frequently used string processing commands. But that takes me from my topic.) Do I dare tell you about "dsw"? This also turns out to be an important routine. Suppose you accidentally create a file whose name has a non-printing character in it. How can you remove it? The command that lists the files on your directory won't show non-printing characters. And if the character is a space (or worse, a "*"), "rm" (the program that removes files) won't accept it. "dsw" was evidently written by someone at Bell Labs who felt frustrated by this problem and hacked up a quick solution. Dsw goes to each file in your directory and asks you to respond "yes" or "no," whether to delete the file or keep it (or is it to keep it or delete it -- which action does "yes" mean?). How do you remember dsw? What on earth does the name stand for? The Unix people won't tell; the manual smiles its wry smile of the professional programmer and says "The name dsw is a carryover from the ancient past. Its etymology is amusing." (The implication, I guess, is that true professionals never need to use such a program, but they are allowing it to be released for us novices out in the real world.) Which __________________________ Verification of my charges comes from the experiences of the many users of Unix, and from the modifications that other people have been forced to make to the sys- tem. Thus, the system of Unix I now use is called The Fourth Berkeley Edition for the Vax, distributed by Joy, Babaoglu, Fabry, and Sklower at the University of California, Berkeley (henceforth, Berkeley Unix). They provide a listing program that provides all the features I claim a user would want (except a sensible name -- but Berkeley Unix even makes it easy to change system names to anything you prefer). August 2, 1981 - 5 - operation takes place if you say "yes": why the file is deleted of course. So if you go through your files and see important-file, you nod to yourself and say, yes, I better keep that one, type in yes, and destroy it forever. Does dsw warn you? Of course not. Does dsw even document itself when it starts, to remind you which way is which? Of course not. That would be talkative, and true Unix programmers are never talkative. (Berkeley Unix, has finally killed dsw, saying "This little known, but indispensible facility has been taken over...". That is a fitting commentary on standard Unix: a system that allows an "indispensible facility" to be "little known.") The symbol "*" means "glob" (a typical Unix name: the name tells you just what action it does, right?). Let me illustrate with our friend, "cat." Suppose I want to put together a set of files named paper.1 paper.2 paper.3 and paper.4 into one file. I can do this with cat: cat paper.1 paper.2 paper.3 paper.4 > newfilename Unix provides "glob" to make the job even easier. Glob means to expand the filename by examining all files in the directory to find all that fit. Thus, I can redo my command as cat paper* > newfilename where paper* expands to {paper.1 paper.2 paper.3 paper.4}. This is one of the typical virtues of Unix; there are a number of quite helpful functions. But suppose I had decided to name this new file "paper.all". After all, this is a pretty logical name, I am combining the separate indi- vidual files into a new one that contains "all" the previous ones. cat paper* > paper.all Disaster. I will probably blow up the system. In this case, paper* expands to paper.1 paper.2 paper.3 paper.4 paper.all, and so I am filling up a file from itself: cat paper.1 paper.2 paper.3 paper.4 paper.all > paper.all Eventually the file will burst. Does nice friendly Unix check against this, or at least give a warning? Oh no, that would be against the policy of Unix. The manual doesn't bother warning against this either, although it does warn of another, related infelicity: "Beware of 'cat a b > a' and 'cat b a > a', which destroy the input files before reading them." Nice of them to tell us. The command to remove all files that start with the word "paper" rm paper* becomes a disaster if a space gets inserted by accident: rm paper * for now the file "paper" is removed, as well as every file in the entire directory (the power of glob). Why is there not a check against such things? I finally had to alter my August 2, 1981 - 6 - version of rm so that when I said to remove files, they were actually only moved to a special directory named "deleted" and they didn't actually get deleted until I logged off. This gave me lots of time for second thoughts and for catch- ing errors. This also illustrates the power of Unix: what other operating system would make it so easy for someone to completely change the operation of a system command for their own personal satisfaction? This also illustrates the evils of Unix: what other operating system would make it so necessary to do so? (This is no longer necessary now that we use Berkeley Unix -- more on this in a moment.) The standard text editor is called Ed. What a problem that turned out to be. It was so lovely that I spent a whole year using it as an experimental vehicle to see how people dealt with such awful things. Ed's major property is his shyness; he doesn't like to talk. You invoke Ed by say- ing, reasonably enough, "ed". The result is silence: no response, no prompt, no message, just silence. Novice are never sure what that silence means. What did they do wrong, they wonder. Why doesn't Ed say "thank you, here I am" (or at least produce a prompt character)? No, not Unix with the philosophy that silence is golden. No response means that everything is ok. If something had gone wrong, then it would have told you (unless the system died, of course, but that couldn't happen could it?). Then there is the famous append mode error. To add text into the buffer, you have to enter "append mode." To do this, one simply types "a", followed by RETURN. Now everything that is typed on the terminal goes into the buffer. (Ed, true to form, does not inform you that it is now in append mode: when you type "a" followed by "RETURN" the result is silence, no message, no comment, nothing.) When you are finished adding text, you are supposed to type a line that "contains only a . on it." This gets you out of append mode. Want to bet on how many extra periods got inserted into text files, or how many commands got inserted into texts, because the users thought that they were in com- mand mode and forgot they had not left append mode? Does Ed tell you when you have left append mode? Hah. This problem is so obvious that even the designers knew about it, but their reaction was to laugh: "hah-hah, see Joe cry. He just made the append mode error again." In the tutorial introduction to Ed, written at Bell Labs, the authors joke about it. Even experienced programmers get screwed this way, they say, hah hah, isn't that funny. Well, it may be funny to the experienced programmer, but it is devastating to the beginning secretary or research assistant or student who is trying to use friendly Unix as a word processor, or as an experimental tool, or just to learn about computers. Anyone can use Unix says the programmer, all you need is a sense of humor. August 2, 1981 - 7 - How good is your sense of humor? Suppose you have been working on a file for an hour and then decide to quit work, exiting Ed by saying "q". The problem is that Ed would promptly quit. Woof, there went your last hour's work. Gone forever. Why, if you would have wanted to save it you would have said so, right? Thank goodness for all those other people across the country who immediately rewrote the text editor so that us normal people (who make errors) had some other choices besides Ed, editors that told you politely when they were working, that would tell you if they were in append or command mode, and that wouldn't let you quit without saving your file unless you were first warned, and then only if you said you really meant it. I could go on. As I wrote this paper I sent out a mes- sage on our networked message system and asked my colleagues to tell me of their favorite peeves. I got a lot of responses, but there is no need to go into detail about them; they all have much the same flavor about them, mostly commenting about lack of consistency, about the lack of interactive feedback. Thus, there is no standardization of means to exit programs (and because the "shell" is just another program as far as th system is concerned, it is very easy to log yourself off the system by accident). There are very useful pattern matching features (such as the "glob" * function), but the shell and the different programs use the symbols in inconsistent ways. The Unix copy command (cp) and the related C programming language "stringcopy" (strcpy) have reversed order of arguments, and Unix move (mv) and copy (cp) operations will destroy existing files without any warning. Many programs take special "argument flags" but the manner of specifying the flags is inconsistent, varying from program to program. As I said, I could go on. The good news is that we don't use standard Unix: we use Berkeley Unix. History lists, aliases, a much richer and more intelligent set of system programs, including a list program, an intelligent screen editor, a intelligent set of routines for interacting with terminals according to their capabilities, and a job control that allows one to stop jobs right in the middle, startup new ones, move things from background to foreground (and vice versa), examine files, and then resume jobs. And the shell has been ampli- fied to be a more powerful programming language, complete with file handling capabilities, if--then--else statements, while, case, and all the other goodies of structured pro- gramming (see the accompanying box on Unix). Aliases are worthy of special comment. Aliases let the user tailor the system to their own needs, naming things in ways they themselves can remember: self-generated names are indeed easier to remember than arbitrary names given to you. August 2, 1981 - 8 - And aliases allow abbreviations that are meaningful to the individual, without burdening everyone else with your clev- erness or difficulties. To work on this paper, I need only type the word "unix," for I have set up an alias called "unix" that is defined to be equal to the correct command to change direc- tories, combined with a call to the editor (called "vi" for "visual" on this system) on the file: alias unix "chdir /csl/norman/papers/CogEngineering; vi unix" These Berkeley Unix features have proven to be indispens- able: the people in my laboratory would probably refuse to go back to standard Unix. The bad news is that Berkeley Unix is jury-rigged on top of regular Unix, so it can only patch up the faults: it can't remedy them. Grep is not only still grep, but there is an egrep and an fgrep. But worse, the generators of Berkeley Unix have their problems: if Bell Labs people are smug and lean, Berkeley people are cute and overweight. Programs are wordy. Special features proliferate. Aliases -- the system for setting them up is not easy to for beginners (who may be the people who need them most). You have to set them up in a file called .cshrc, a name not chosen to inspire confidence! The "period" in the filename means that it is invisible -- the normal method of directory listing programs won't show it. The directory listing pro- gram, ls, comes with 19 possible argument flags, that can be used singly or in combinations. The number of special files that must be set up to use all the facilities is horrendus, and they get more complex with each new release from Berke- ley. It is vey difficult on new users. The program names are cute rather than systematic. Cuteness is probably better than the lack of meaning of standard Unix, but there are be limits. The listing program is called "more" (as in, "give me more"), the program that tells you who is on the system is called "finger", and a keyword help file -- most helpful by the way -- is called "apropos." Apropos! who can remember that? Especially when you need it most. I had to make up an alias called "help" which calls all of the help commands Berkeley provides, but whose names I can never remember (apropos, whatis, whereis, which). __________________________ The system is now so wordy and so large that it no longer fits on the smaller machines: our laboratory machine, a DEC 11/45, cannot hold the latest release of Berkeley Unix (even with a full complement of memory and a reasonable amount of disc). I write this paper on a Vax. August 2, 1981 - 9 - One reader of a draft of this paper -- a systems pro- grammer -- complained bitterly: "Such whining, hand- wringing, and general bitchiness will cause most people to dismiss it as over-emotional nonsense. ... The Unix system was originally designed by systems programmers for their own use and with no intention for others using it. Other hackers liked it so much that eventually a lot of them started using it. Word spread about this wonderful system, etc, the rest you probably know. I think that Ken Thompson and Dennis Ritchie could easily shrug their shoulders and say 'But we never intended it for other than our personal use.'" All the other users of Unix who have read drafts of this paper agreed with me. Indeed, their major reaction was to forward examples of problems that I had not covered. This complaint was unique. I do sympathize with the spirit of the complaint. He is correct, but ... The "but" is that the system is nationally distributed, under strict licensing agreements, with a very high charge to industry, and nominal charges to educational institutes. Western Electric doesn't mind getting a profit, but they have not attempted to worry about the product. If Unix were still what it started to be, a simple experiment on the develop- ment of operating systems, then the complaints I list could be made in a more friendly, constructive manner. But Unix is more than that. It is taken as the very model of a proper operating system. And that is exactly what it is not. In the development of the system aspects of Unix, the designers have done a magnificent job. They have been creative, and systematic. A common theme runs through the development of programs, and by means of their file struc- ture, the development of "pipes" and "redirection" of both input and output, plus the power of the iterative "shell" system-level commands, one can combine system level programs into self-tailored systems of remarkable power with remark- able ease. In the development of the user interface aspects of Unix, the designers have been failures. They have been dif- ficult and derisive. A common theme runs through the com- mands: don't be nice to the casual user -- write the system for the dedicated expert. The system is a recluse. It uses weird names, and it won't speak to you, not even if spoken to. For system programmers, Unix is a delight. It is well structured, with a consistent, powerful philosophy of con- trol and structure. My complaint is simple: why was not the same effort put into the design at the level of the user? The answer to my complaint is a bit more complex. There really are no well known principles of design at the level of the user interface. So, to remedy the harm that I may have caused by my heavy-handed sarcasm, let me attempt to provide some positive suggestions based upon the research August 2, 1981 - 10 - that has been done by me and by others into the principles of the human information processing system. Cognitive Engineering is a new discipline, so new that it doesn't exist: but it ought to. Quite a bit is known about the human information processing system, enough that we can specify some basic principles for designers. People are complex entities and can adapt to almost anything. As a result, designers are often sloppy, for they can design for themselves without realizing the difficulties that will be faced by other users. Moreover, there are different lev- els of users: people with a large amount of knowledge of the device they are about to use are quite different from those who lack a basic understanding. Experts are different than novices. And the expert who is normally skilled at the use of some systems but who has not used it for awhile is at a peculiar level of knowledge, neither novice nor expert. The three most important concepts for system design are these: 1. Be consistent. A fundamental set of principles ought to be evolved and followed consistently throughout all phases of the design. 2. Provide the user with an explicit model. Users develop mental models of the devices with which they interact. If you do not provide them with one, they will make one up themselves, and the one they make up is apt to be wrong. Do not count on the user fully understanding the mechanics of the device. Secretaries and scientists alike will share a lack of knowledge of a computer system. The users are not apt to understand the difference between the buffer, the working memory, the work- ing files, and the permanent files of a text edi- tor. They are apt to believe that once they have typed something into the system, it is permanently in their files. They are apt to expect more intelligence from the system than the designer knows is there. And they are apt to read into comments (or the lack of comments) more than you have intended. Feedback is of critical impor- tance, both in helping to establish the appropri- ate mental model and in letting the user keep its current state in synchrony with the actual system. 3. Provide mnemonic aids. Human memory is a fragile thing. Actually, for most purposes it is con- venient to think of human memory as consisting of two parts: a short-term memory and a long-term memory (modern cognitive psychology is developing more sophisticated notions than this simple two- August 2, 1981 - 11 - stage one, but this is still a valid approxima- tion). Short-term memory is, as the name sug- gests, limited in duration and quantity: about five to seven items is the limit. Thus, do not expect a user to remember the contents of a mes- sage for much longer than it is visible on the terminal. Long-term memory is robust, but it faces two difficulties: getting stuff in so that it is properly organized and getting stuff out, so that it can be found when needed. Learning is difficult, unless there is a good structure, and it is visible to the learner. The system designer must provide sensible assistance to the user so that the material can be structured. There are lots of sensible memory aids that can be provided, but the most powerful and sensible of all is understanding. Make a system so that it can be understood and the memory follows with ease. Make the command names ones that can be understood, where the names follow from the function that is desired. If abbreviations must be used, adopt a consistent policy of forming the abbreviations. Do not deviate from the policy, even when it appears that it would be easier for a particular command to deviate: inconsistency is an evil. Remember the major problem of any large-scale memory is finding the information that is sought, even if the information is there someplace. We retrieve things from memory by starting off with some description of the information we seek, use that description to enter their memory system in an attempt to match against the desired information. If the designer uses cute names and non-standard abbreviations, our ability to generate a valid description is impaired. As a result, the person who is not expert and current in the use of the system is apt to flounder. There are many ways of formatting information on termi- nals to provide useful memory and syntax aids for users. With today's modern terminals, it is possible to use menus, multiple screens and windows, highlighted areas, and with full duplex systems, automatic or semi-automatic command completion systems. The principles for these systems are under active study by a number of groups, but none are directly relevant to my critique of the UNIX operating sys- tem. UNIX is designed specifically so that it can be used with a wide variety of terminals, including hard copy termi- nals. The problem with Unix is more fundamental. Unix does not provide the user with a systematic set of principles; it August 2, 1981 - 12 - does not provide a simple, consistent mental model for the user, consistent not only in the shell but in the major sys- tem programs and languages; it does not provide the user with simple memory aids that can be used to learn the system structure and then, when one is not completely current in the use of a particular command, still to be able to retrieve (or better, derive) what is needed. There are essentially no user help files, despite the claim that all the documentation is on-line via the command named man (for manual, of course). But "man" requires you to know the name of the command you want information about, although it is the name that is probably just the information you are seek- ing. System designers take note. Design the system for the person, not for the computer, not even for yourself. People are also information processing systems, with varying degrees of knowledge, varying degrees of experience. Remember, people's short-term memories are limited in size, and they learn and retrieve things best when there is a con- sistent reason for the name, the function, and the syntax. Friendly systems treat users as intelligent adults who, like normal adults, are forgetful, distracted, thinking of other things, and not quite as knowledgeable about the world as they themselves would like to be. Treat the user with intelligence. There is no need to talk down to the user, nor to explain everything. But give the user a share in understanding by presenting a consistent view of the system. __________________________ SHAR_EOF cat << \SHAR_EOF > rumor.ber From uucp Fri Aug 14 11:59:42 1981 remote from pur-ee NAharpo.423 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!mhtsa!harpo!ber NThu Aug 13 23:31:58 1981 NYAUF NGee whiz. Bitch bitch bitch. There is better documentation than Nmanual pages provided with your unix system. The manual page Nis a brief description of a command, routine or concept. It's a starting Npoint, and frequently enough. If you want to know more, look at the source. N NI think the page for lorder is terrific. I never use lorder for anything Nother than ordering libraries, and to have an example right there is great. N NAll this crap about UNIX being unfriendly and UNIX lacking documentation Nand so on is just that. UNIX is an operating system. It's clean, concise, Nand clear (at least traditionally). The beauty of the environment that Ngenerally surrounds a unix is that it is easilly growable by the people Nthat use it. If some turkey writes a poor manual page, then unix is blamed. NLook at all the crap you have to deal with at IH because they won't permit Na public directory for NON-STANDARD this and that. Well I guess they want Nto make sure nobody polutes their system. That stinks. But that's the only Nway your going to censor it. At least you can point your finger directly Nat the computer center staff. N NIf you don't like a command or documentation your free to avoid it. NOr better yet, improve it! Unix provides an excellent program development Nenvironment. If you can't figure out what a syntax error is, ask someone. NYou'll find dozens of experts in every hallway. Why? Because it's relatively Neasy to comprehend. N NPlease don't start restricting creativity with naming standards and style Nstandards and how many lines are permitted in a subroutine ... NThat's almost tolerable for a project, but unix isn't a number 7 electronic Nsump pump. Just because management feels that 'C' and UNIX are the do-all Nto end-all doesn't make it so. And the attempts to fit that misconception Nare ruining a perfectly good environment. N NWhy don't you send your comments to the MINI-SYSTEM newsletter in the Nform of a modification request? I'ld like to see an OFFICIAL response. N N(deep breath) N NNow I feel better. Let's face it, unix is not geared to the naive user. NSo what? It's great for the knowledgable user. Why bring the level Nof excellence down to least common denominator? For a profit! Yeh well Nthat's another story. But let's try to raise the level of the users. SHAR_EOF cat << \SHAR_EOF > rumor.bh From uucp Fri Aug 14 11:39:22 1981 remote from pur-ee NAucbvax.2619 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards NTue Aug 11 09:14:54 1981 Nunix on large machines N>From BH@SU-AI Tue Aug 11 09:06:37 1981 NSince KLH doesn't seem to have answered the request for details on Nwhy UNIX isn't perfect for big machines, let me try: N N1. The file system is flaky. UCB is working on some aspects of Nthis problem but not all. They seem to be fixing the problems in Nwhich a disk block is added to one list BEFORE it's removed from Nanother, which is how the file system is compromised by a system Ncrash. But they aren't changing the fact that overwriting a file N(a creat with an existing name) deletes the old file right away Nrather than on a successful close, nor are they adding an exclusive Naccess discipline to the kernel. (About once a month or so my N/etc/passwd disappears when several people try to change their Npasswords or create new accounts at once, despite supposedly Nfoolproof lock-file code in the user programs.) N N2. Debugging facilities leave a lot to be desired. You can't Ntype instuctions in to adb, so it's hard to patch code. The Nsymbol table doesn't know about things like fields in a struct, Nso symbolic debugging only partly exists. You can't use adb Nstandalone to poke at a crashed system. N N3. Many smaller, easily-fixed things show that UNIX was designed Nwith a small machine in mind. One example: the result of compiling N"foo.c" should be called "foo", not "a.out". Clearly they designed Nthe naming convention for a machine without much disk space, in which Nit was antisocial to have executable files for more than one program Nat a time! N N4. There are terminals in the world other than the model 37 TTY. NThe UCB termcap package makes it possible for there to be a few Nhuge, hairy user programs which support displays. But there needs Nto be kernel support (or the equivalent in shell support, with Nall other user level tty interaction funneled through the shell, Nwhich would be awkward) for things like automatically dividing the Ndisplay screen into pieces for different processes. The user must Nbe able to type escape sequences of some sort to control which piece Nhse's typing into right now. It should be possible to write a NTRIVIAL user program which can still fit into this display Ndiscipline, e.g., it shoul be able to type a control-L and have that Nmean "clear my piece of the screen". N N5. Some things aren't written as efficiently as they might be. N NThere's more, but this will do to begin the discussion. Mind you, NI think UNIX is wonderful in many ways. Pipes are great, filters Nare great, process trees are great, etc. Many of the flaws in UNIX Ncould be fixed in a more or less compatible way. (Not the one about Ndeleting the old file too soon, though.) (By the way, yes I know Nyou can program around it. The difference between an okay system and Na great system is that you don't have to program around the great Nsystem, you can program THROUGH it!) It's not that the future Nlarge-computer standard operating system should look nothing like NUNIX, it's that the standard large-computer UNIX needs some redesign Nbefore it gets ossified as a standard. N N N SHAR_EOF cat << \SHAR_EOF > rumor.clyde From uucp Fri Aug 14 11:59:13 1981 remote from pur-ee NAucbvax.2671 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards NThu Aug 13 10:01:32 1981 NReply to 'The Truth about UNIX' N>From clyde@UTEXAS-11 Thu Aug 13 09:53:17 1981 N N While the gentelman has some cogent points, I also believe he Nhas permanent brain damage . He is obviously used to DEC systems which Nlike to hold lusers hands lest they damage themselves, and I had great Ndifficulty reading completly through his treatise (diatribe?) because Nof his own inconsistancies and notions. N N Oh well, not everyone can be enthusiatic (though I noticed he Nwrote his document on a UNIX system, using NROFF -- I wonder how Nhe managed to hold his nose with one hand and type with the other) . N------- N SHAR_EOF cat << \SHAR_EOF > rumor.eps From uucp Fri Aug 14 11:56:06 1981 remote from pur-ee NAucbvax.2642 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards NTue Aug 11 22:35:29 1981 NRe: The Truth about UNIX N>From Eps@UCLA-SECURITY Tue Aug 11 22:31:19 1981 NThe date given on this mesage is obviously wrong; Nit should have read "Apr 1" instead of "Aug 1." N N --Eric N------- N N SHAR_EOF cat << \SHAR_EOF > rumor.greg From uucp Fri Aug 14 11:43:52 1981 remote from pur-ee NAucbvax.2643 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards NWed Aug 12 00:12:07 1981 NYet more truth about Unix..... N>From greg@NPRDC Wed Aug 12 00:08:58 1981 NI almost hesitate to mention this, but Donald A. Norman, the author of N"The Truth About Unix", gets mail as "Norman at NPRDC". (NPRDC is Nnotorious enough; a little more won't hurt, right?) You could send him Ncopies of your flames to see if he might respond. It could be a very Ninteresting discussion..... N---- N SHAR_EOF cat << \SHAR_EOF > rumor.henry From cincy!duke!decvax!utzoo!henry Sun Aug 9 23:43:32 1981 datamat!rumor : net.general,NET.general There is no such system as "datamat" connected to us, nor is there any person named "rumor" locally. Any communication purporting to be from such a person at such an address is either garbled or fraudulent. Will somebody PLEASE tell me why we are suddenly getting tons of mail addressed to "...!utzoo!datamat!rumor", apparently related to an unfriendly evaluation of Unix that I have never heard of and that most certainly did not come from here? SHAR_EOF cat << \SHAR_EOF > rumor.henry2 From uucp Fri Aug 14 11:56:36 1981 remote from pur-ee NAutzoo.885 Nnet.general,NET.general,fa.unix-wizards Npur-ee!cincy!duke!decvax!utzoo!henry NThu Aug 13 00:56:51 1981 Ndatamat!rumor NI've now seen a copy of the infamous utzoo!datamat!rumor article Nthat has caused all the fuss (I thank decvax!jm for mailing it to Nme). It most definitely DID NOT originate at or pass through Ndecvax!utzoo, the University of Toronto Zoology department. The N"PDT" in its postmark strongly suggests a west-coast origin, as Ndoes the author's affiliation, and a friend of mine who gets various Nthings from the Arpanet community says he has seen "utzoo" on the Ncc-list of a document that may even be the same article (we haven't Nyet had a chance to compare notes). THIS IS NOT US. We may have Na first here: the first real live authentic name conflict on Usenet. N[Why me, Lord?] Would anyone knowing the possible identity of the Nother "utzoo" please pass this information on to me? My friend's Ncomments suggest it may be in the Stanford area, the origin of Nthe article itself suggests the San Diego area. N N Henry Spencer N decvax!utzoo!henry N (416)978-2006 (for now) N (416)978-6060 (shortly) SHAR_EOF cat << \SHAR_EOF > rumor.jej From uucp Fri Aug 14 11:55:22 1981 remote from pur-ee NAihuxl.103 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!ihnss!ihuxl!jej NThu Aug 13 20:19:50 1981 NForced Interaction, and YAUF (Yet Another Unix Flame) NSubject: program interface to mail-like commands, Unix documentation N NI've run into a problem of how to automate commands that, to quote NRitchie, "force interaction on the user whether it is wanted or not:" Nthe primordial example is mail. N NIt is not clear how one could write a program that would issue the Ncorrect commands to mail to do a particular filtering, such as "save Nall mail from John Doe, and delete the rest after printing it offline." Nmail expects standard input to direct it, based on what it itself has Noutput. N NAny notions of a technique for writing such programs? N N---------------------------------------- N NThe item about the Unix user interface was very good--one item Nthat the author left out, though, was Unix documentation. N NMost notorious, I think, are the multitude of manual pages which Nsay about the error messages that they are "self-explanatory." NI believe that this must mean that the author intends them to be Nmeaningful to himself. N NExamples: N N1. run-time error messages from C programs--these are QUITE machine N dependent; rather embarassingly so for an OS based on C as N Unix is, one would think. N2. C compiler error messages, which describe every syntax error as N "syntax error," which may be enough for Dennis Ritchie, but N not for mere mortals. Another worthless error message is N that which describes the error in terms of compiler internals. N What does that have to do with the constructs the user knows? N NAlso quite helpful are the error codes one gets from make(1), such as N"Error code 100". N NManual pages are frequently vague and casual: I recall the times when NI had to try VERY hard to persuade someone that egrep(1) should treat N'$' as just another character when it is not at the end of a regular Nexpression, and in another case, that ed(1) permitted nested escaped Nparentheses in regular expressions. Formal specifications of options Nand accepted commands may not be useful to some readers, but they cer- Ntainly are more useful to those who CAN understand them than vague NEnglish prose. N N"Casualness" at times degenerates into flippancy or display of the Nauthor's self-estimated cleverness: e.g. N N "This brash one-liner intends to build a new library from N existing .o files." (This sentence, with absolutely NO other N explanation, accompanies an example of lorder(1).) N Nor N N "This is an area where experience and informed courage N count for much." N NWhat good do these do to the reader who is trying to figure out Nwhat on EARTH a command does? N NOptions on commands, in a sense documentation, don't have much chance Nto indicate their meaning, since they're typically restricted to one Nletter. (Some day I intend to write a phony command page containing N N SYNOPSIS N cmd -[abcdefghijklmnopqrstuvwxyz] name ... N N OPTIONS N -a Use the 'a' option. Netc.) N N James Jones (ihuxl!jej) SHAR_EOF cat << \SHAR_EOF > rumor.jerry From uucp Fri Aug 14 09:31:36 1981 remote from pur-ee NAharpo.407 Nnet.general Npur-ee!cincy!duke!mhtsa!harpo!jerry NWed Aug 12 10:42:36 1981 Nforgery N NI suppose Steve should know better than I do, but why couldn't Na forger just uux (or execute directly) rnews on a machine Nwith the input indicating the item came from datamat!rumor. NIn fact couldn't you drop it in almost anywhere in the net? NPotentially the later can be detected because you will end up with Npeculiar headers (e.g. the item Nappears to have passed through a machine twice.) A little Nmore cleverness, and a better understanding of netnews might Ncircumvent even that problem, and in any event the only thing Nyou could learn would be the machine rnews was executed on. SHAR_EOF cat << \SHAR_EOF > rumor.mark From uucp Sun Aug 9 15:54:14 1981 remote from pur-ee NAucbvax.2534 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!mark NWed Aug 5 08:47:18 1981 NThe truth about Unix NI read your Unix flame with interest, but you seem to be Nill informed about lots of things. Obviously you are comparing NV6 Unix with 3BSD, but you claim to be comparing "Unix" with N"Berkeley Unix". You credit Berkeley with things that are Npart of V7 (getting rid of dsw, adding egrep and fgrep). NI might compare your note with a message saying "don't go Nout and buy a 1975 VW Rabbit - those are crummy cars because Nthe 1979 Rabbit is better". (No, I'm not complaining about Nthe recent Rabbit note, this just happened to be a handy example). NYou also claim that "Berkeley Unix is too big to fit ... on an 11/45". NHogwash! 3BSD is a Vax distribution - it has a C compiler that Ngenerates Vax object code, a kernel that knows the Vax memory management Nand I/O conventions, and some other VAX specific things. So are 4BSD Nand 4.1BSD, which superceded 3BSD the same way V7 has superceeded V6. NWe have lots of PDP-11's here at Berkeley, including 70's, a 45, and Nseveral 40's. Most of them run some version of Berkeley Unix. NBigness is not important - we run vi 3.6 on a 40 in the virus lab. NOf course, it is a different system than the one on the vax. N"Berkeley Unix" is about as specific as "Chevrolet". N NYou also have to bear in mind that the various flavors of Unix have Nevolved from one system years ago in Bell Labs. In upgrading from Nversion x to version x+1, issues of upward compatibility have to Nbe taken into account. If you changed /usr to /user, not only would Nyou infuriate most of the users "What a pointless change! Now I Nhave to retype half my commands!" but you would break a large number Nof programs that look for such places as /usr/spool/mail, /usr/dict/words, Nand so on. Things that are not obviously wrong and horrible tend Nto get left alone. (There are, unfortunately, exceptions. index Nand rindex are called strchr and strrchr in some versions of Unix.) SHAR_EOF cat << \SHAR_EOF > rumor.mark2 From uucp Mon Aug 10 22:18:44 1981 remote from pur-ee NAucbvax.2598 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards NMon Aug 10 12:23:20 1981 NEUNUCH for large machines N>From csvax.mark@Berkeley Mon Aug 10 12:15:19 1981 NCare to back up your flame about big machines with some reasons? NIt does run on a Vax, Univac 1100, Amdahl, 370, and 3B. N NBell invests lots of effort into Unix - about as much as the rest Nof the world. But their version doesn't get released. N N Mark N N SHAR_EOF cat << \SHAR_EOF > rumor.mo From uucp Fri Aug 14 11:40:30 1981 remote from pur-ee NAucbvax.2628 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards NTue Aug 11 11:41:44 1981 NFlaming Psychologists N>From mo@LBL-UNIX Tue Aug 11 11:23:32 1981 NWell, you see what kind of stuff gets into DATAMATION. NI don't understand these things: many of the criticisms Nare right, but the facts are categorically wrong! Unix Ncould benefit from some "normalizaion" (the Software Tools Nbenefitted greatly from having been written all at once, not Nover the years), but the claim that Unix does not present Na simple set of principles is the most incomprehensible Nstatement he could have made! That is ALL Unix does, Nand that is precisely why he doesn't like it! If he hates Nit so much, why doesn't he go get an account on a TOPS-10 system Nor since he is at UCSD, a UCSD PASCAL machine? N Well, enough of that. I yield the floor to Lauren. N -Mike N SHAR_EOF cat << \SHAR_EOF > rumor.nowicki From uucp Fri Aug 14 11:57:07 1981 remote from pur-ee NAucbvax.2660 Nfa.unix-wizards Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards NWed Aug 12 11:44:04 1981 NMisunderstanding about Unix..... N>From Nowicki@PARC-MAXC Wed Aug 12 11:35:03 1981 NI would like to make a few comments on Donald Norman paper on "The NTruth About Unix". The arguments for Consistency, Simple Models, and NMnemonic Aids should all be Motherhood, even though many system Ndesigners continue to ignore them. (If you want consistent Nabbreviations you can use RSX-11M for a while where all commands are Nthree letters; then you'll appreciate Unix.) N NThe major mistake that is made, however, is failing to consider the Npossible multiple levels of abstraction. For example, the title says N"The user interface is horrid", but in reality every level of Nabstraction has a "user interface," namely its interface to the next Nhigher level. The motto of the Unix was not "let the user beware," but Nrather, "make the primitives simple but powerful, so as much as Npossible can be done at higher levels". With his arguments, you could Nsay that all man-computer communication is doomed to failure because it Nuses only ones and zeros, which are not very mnemonic. The real Nproblem is that an appropriate level for a systems programmer is not Nappropriate for casual end users. This conclusion is hinted at near Nthe end of the paper, but it means that the paper should not be a Ncriticism of Unix itself, but rather a criticism of how people use NUnix. N NThe point that someone reading only the first few paragraphs of the Npaper can miss is that the primitives in Unix CAN be either easily Nreplaced or encapsulated, while almost no other systems provide this Ncapability. As an example, two Stanford students have implemented a NTOPS-20 style command interpreter for Unix. It has arbitrary Nabbreviations, <escape> command completion, the question-mark help Nfacility, and a delete-undelete-expunge facility. Version numbers for Nbackup files are implemented with a simple suffix to the file name. N NThe real shame is that the Unix users themselves are forced to make the Nsystem as distributed from Western more humane, and thus every wheel Ngets reinvented many times. Luckily groups like Berkeley and Usenix Nare trying to help this situation, but as indicated progress is very Nslow. N N -- Bill N N N SHAR_EOF cat << \SHAR_EOF > rumor.swd From uucp Fri Aug 14 11:37:48 1981 remote from pur-ee NAduke.943 Nnet.general Npur-ee!cincy!duke!swd NThu Aug 13 09:23:28 1981 Nmore rumor rumors NSome random thoughts on the datamat!rumor article. N N1) it did not enter the net at utzoo by having someone N there run rnews to submit it. If they had, utzoo N would have seen the article. If it entered at decvax, N it would not have been sent to utzoo -- the anti loop N code in news will not send an article to any system N on the return path. Since the article did show up at N decvax, it entered the net there. N N2) what probably happened is that someone on the west coast N (Note the PDT in the date line) created the article N and ran uux - decvax!rnews <fake article. N N3) there is no way to prevent this (short of an elaborate N public key encryption scheme). SHAR_EOF # End of shell archive exit 0
Newsgroups: comp.unix.wizards Path: sparky!uunet!ferkel.ucsb.edu!taco!gatech!darwin.sura.net! zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!linac!att!cbnewsk!cbnewsj! dwex From: d...@cbnewsj.cb.att.com (david.e.wexelblat) Subject: Re: The Problem with UNIX Organization: AT&T Date: Fri, 13 Nov 1992 17:48:47 GMT Message-ID: <1992Nov13.174847.3882@cbnewsj.cb.att.com> References: <1992Nov11.210729.11676@cs.wisc.edu> <BARNETT.92Nov12092045@grymoire.crd.ge.com> <1992Nov12.231845.14014@cs.wisc.edu> Lines: 59 In article <1992Nov12.231845.14...@cs.wisc.edu> s...@brownie.cs.wisc.edu (Bryan S. So) writes: > Concerning "cat a b > b", barn...@crdgw1.ge.com writes: > > >It has been solved. There are at least two solutions: > > 1) Educate the user. After all the system did exactly what > > the user told it to do. > > 2) in csh/tcsh, do "set noclobber" > > > >grymoire% set noclobber > >grymoire% touch a b > >grymoire% cat a b >b > >b: File exists. > >-- > >Bruce Barnett <barn...@crd.ge.com> uunet!crdgw1!barnett > > No, the above are not solutions. > > 1. We should assume some stubborn users cannot be educated. I > claim without proof such users exist. > > 2. set noclobber is not a solution because a solution should > prepend a to b. > > I propose a real solution to this problem. Change the internal > policy of UNIX, so that when any file is used as both input and > output, like > > cat a b > a > or cat a b > b > > UNIX should read and buffer all input before opening the output > with "w". > > > Bryan Get real. In your example, replace /bin/cat with /bin/echo: /bin/echo a b > b What should "unix" do here? You are confusing the OS, the shell, and the program. The various responsibilities are distributed. Cripe - MS-DOG has redirection, and will do the same screwup for commands that are not built into COMMAND.COM. I doubt that JCL protects you either. Or would you rather have no I/O redirection, and force all the programs to do all the I/O themselves? How would you handle pipelines? As soon as you try to protect users from themselves, you destroy the usefulness of the system. Who ever said that Unix is supposed to be the "One True OS" (other than USL :->)? Don't destroy the usefulness of my OS because people who shouldn't be using it are involved. -- David Wexelblat <d...@mtgzfs3.att.com> (908) 957-5871 AT&T Bell Laboratories, 200 Laurel Ave - 4B-421, Middletown, NJ 07748 "The meaning of life? That's simple. Try to be happy, try not to hurt other people, and hope to fall in love." -- Mallory Keaton