home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / unix / wizards / 4651 < prev    next >
Encoding:
Internet Message Format  |  1992-11-12  |  58.0 KB

  1. 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
  2. From: rsk@gynko.circ.upenn.edu (Rich Kulawiec)
  3. Newsgroups: comp.unix.wizards
  4. Subject: Re: The Problem with UNIX [Includes ANCIENT Usenet traffic]
  5. Message-ID: <97393@netnews.upenn.edu>
  6. Date: 13 Nov 92 00:24:02 GMT
  7. References: <1992Nov9.172715.16367@cs.wisc.edu> <96927@netnews.upenn.edu> <1992Nov11.210729.11676@cs.wisc.edu>
  8. Sender: news@netnews.upenn.edu
  9. Organization: GSP Whitewater Slalom Racing Team
  10. Lines: 1389
  11. Nntp-Posting-Host: gynko.circ.upenn.edu
  12.  
  13. I've included a sharchive at the end of this with the full text of
  14. Don Norman's paper and some comments that various netfolks made at that
  15. time.  If I recall correctly, this was the first instance of a Usenet
  16. forgery -- he claimed that the paper was sent without his knowledge --
  17. and so a couple of the messages deal with that issue rather than
  18. with the points raised in his paper.  I got quite a kick out of
  19. reading these messages again 11 years later; it's kind of interesting
  20. to look back on these with a decade's perspective.
  21.  
  22. By the way, you'll notice a paucity of headers in those old messages;
  23. that might make identifying people difficult.  I believe that "ber"
  24. is Brian Redman, csvax.mark is Mark Horton, jej is James Jones,
  25. nowicki is Bill Nowicki, mo might be Mike O'Brien, and utzoo!henry
  26. is Henry Spencer.
  27.  
  28. In article <1992Nov11.210729.11676@cs.wisc.edu> so@brownie.cs.wisc.edu (Bryan S. So) writes:
  29. >Concerning Don Norman's paper "The Trouble With UNIX", Datamation 27,
  30. >rsk@gynko.circ.upenn.edu (Rich Kulawiec) writes:
  31. >>Norman's paper is (a) a decade out-of-date and (b) extraordinarily
  32. >>inaccurate, as it was when published.  In my opinion, it represents
  33. >>the uninformed rantings of someone who is simply too lazy to read the
  34. >>manuals and therefore should not be using a computer at all.
  35. >
  36. >I agree it's a decade old but can you indicate why it's inaccurate?
  37. >
  38. >To me, some problems like "cat a b > b" are obviously undesirable
  39. >designs and still unsolved after more than a decade.  
  40.  
  41. Nearly every problem that Norman addressed himself to was a function
  42. of the shell, not of Unix.  "cat a b > b" is solvable at the shell
  43. level, should it ever really become necessary to do so.  (I personally
  44. think that people who type that deserve what they get, and that there's
  45. no need to fix it, but I digress.)
  46.  
  47. Let me quote some choice nuggets from his paper and comment on them:
  48.  
  49. DN > I would have written a program that listed the  contents  onto
  50. DN > the  terminal,  perhaps  stopping  every 24 lines if you had
  51. DN > signified that you were on a display terminal with only a 24
  52. DN > line  display.   To  the  designers of Unix, however, such a
  53. DN > solution lacks elegance.  Unix has  no  basic  listing  com-
  54. DN > mand,  but  instead you must use a program meant to do some-
  55. DN > thing else.
  56.  
  57. "more" was already around and in widespread use when he wrote this.
  58. In fact, Norman mentions that he's using 4BSD in his paper.
  59.  
  60. DN >     In Unix, if you wanted to list the contents of  a  file
  61. DN >called "HappyDays", you would use the command named "cat":
  62. DN >                       cat HappyDays
  63. DN >Why cat? Why not?  After all, said Humpty Dumpty  to  Alice,
  64. DN >who  is to be the boss, words or us? 
  65.  
  66. The use of an alias, or 1-line shell script, easily provides the
  67. functionality of "cat" by any name the user desires.
  68.  
  69. DN >     The standard text editor is called Ed.
  70.  
  71. Ding.
  72.  
  73. DN > [...] and  Unix  move  (mv)  and copy (cp) operations will
  74. DN > destroy existing files without any warning.
  75.  
  76. "mv -i".  "cp -i".  Also around when he wrote his paper.
  77.  
  78. DN>      The bad news is that Berkeley Unix  is  jury-rigged  on
  79. DN> top  of regular Unix, so it can only patch up the faults: it
  80. DN> can't remedy them.
  81.  
  82. This belies the contributions of the CSRG team.
  83.  
  84. DN > The listing program is called "more" (as in,
  85. DN > "give  me  more").
  86.  
  87. Ah, so he does know about "more"; then why berate "cat"?
  88.  
  89. DN > A common theme runs through  the  com-
  90. DN > mands: don't be nice to the casual user --  write the system
  91. DN > for the dedicated expert.  The system is a recluse.  It uses
  92. DN > weird  names,  and it won't speak to you, not even if spoken
  93. DN > to.  For system programmers, Unix is a delight.  It is  well
  94. DN > structured,  with  a consistent, powerful philosophy of con-
  95. DN > trol and structure.  My complaint is simple:   why  was  not
  96. DN > the  same  effort  put  into  the design at the level of the user? 
  97.  
  98. Actually, here, he's dead right.  Unix was written for programmers
  99. by programmers, and the biggest mistake we've ever made as a
  100. community was trying to dumb it down so that the average clueless
  101. user could use it.  Let 'em have Macintoshes.  Gimme back "dsw".
  102.  
  103. ---Rsk
  104.  
  105. #    This is a shell archive.
  106. #    Remove everything above and including the cut line.
  107. #    Then run the rest of the file through sh.
  108. #----cut here-----cut here-----cut here-----cut here----#
  109. #!/bin/sh
  110. # shar:    Shell Archiver
  111. #    Run the following text with /bin/sh to create:
  112. #    rumor.shrink
  113. #    rumor.ber
  114. #    rumor.bh
  115. #    rumor.clyde
  116. #    rumor.eps
  117. #    rumor.greg
  118. #    rumor.henry
  119. #    rumor.henry2
  120. #    rumor.jej
  121. #    rumor.jerry
  122. #    rumor.mark
  123. #    rumor.mark2
  124. #    rumor.mo
  125. #    rumor.nowicki
  126. #    rumor.swd
  127. # This archive created: Thu Nov 12 18:58:11 1992
  128. # By:    Rich Kulawiec (GSP Whitewater Slalom Racing Team)
  129. cat << \SHAR_EOF > rumor.shrink
  130. From cincy!duke!decvax!utzoo!datamat!rumor Sat Aug  1 23:37:27 PDT 1981
  131. The Truth about UNIX: fa.unix-wizards
  132.  
  133.  
  134.  
  135.  
  136.  
  137.                    The truth about Unix:
  138.                 The user interface is horrid
  139.  
  140.                       Donald A. Norman
  141.                   Department of Psychology
  142.                             and
  143.                 Program in Cognitive Science
  144.           Center for Human Information Processing
  145.             University of California, San Diego
  146.                  La Jolla, California 92093
  147.                  (to appear in Datamation)
  148.  
  149.      Unix is a highly touted operating system.  Developed at
  150. the  Bell  Telephone Laboratories and distributed by Western
  151. Electric, it has  become  a  standard  operating  system  in
  152. Universities,  and  it promises to become a standard for the
  153. large micro- mini- systems for  home,  small  business,  and
  154. educational setting.  But for all its virtues as a system --
  155. and it is indeed an elegant system -- Unix is a disaster for
  156. the casual user.  It fails both on the scientific principles
  157. of human engineering and even in just plain   common  sense.
  158. The motto of the designers of Unix towards the user seems to
  159. be "let the user beware."
  160.  
  161.      If Unix is really to become a general system,  then  it
  162. has got to be fixed.  I urge correction to make the elegance
  163. of the system design be reflected  as  friendliness  towards
  164. the user, especially the casual user.  I have learned to get
  165. along with the vagaries  of  its  user  interface,  but  our
  166. secretarial staff persists only because we insist.  And even
  167. I, a heavy user of computer systems for 20  years  have  had
  168. difficulties:  copying  the old file over the new, transfer-
  169. ring a file into itself  until  the  system  collapsed,  and
  170. removing  all  the  files from a directory simply because an
  171. extra space was typed in the argument string.  In this arti-
  172. cle  I  review  both the faults of Unix and also some of the
  173. principles  of  Cognitive  Engineering  that  could  improve
  174. things,  not just for Unix, but for computer systems in gen-
  175. eral.  But first, the conclusion;  Unix fails several simple
  176. tests.
  177.  
  178.      Consistency: The command names, language, functions and
  179.           syntax are inconsistent.
  180.  
  181.      Functionality: The command names, formats,  and  syntax
  182.           seem to have no relationship to their functions.
  183.  
  184.      Friendliness: Unix is a recluse, hidden from the  user,
  185.           silent  in  operation.   "No news is good news" is
  186.           its motto, but as a result, the  user  can't  tell
  187.           what  state  the system is in, and essentially, is
  188.           completely out of touch with things.
  189.  
  190.      Cognitive Engineering:  The system does not  understand
  191.  
  192.  
  193.                        August 2, 1981
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                            - 2 -
  201.  
  202.  
  203.           about  normal  folks,  the everyday users of Unix.
  204.           Cognitive capabilities are strained  beyond  their
  205.           limits,  the  lack  of  mnemonic structures places
  206.           large loads of memory, and the lack of interaction
  207.           puts  a strain on one's ability to retain mentally
  208.           exactly what state the system is in at any moment.
  209.           (Get  distracted  at  the  wrong time and you lose
  210.           your place -- and maybe your file.)
  211.  
  212. What is good about Unix?   The system design, the generality
  213. of  programs,  the  file  structure,  the job structure, the
  214. powerful operating system command  language  (the  "shell").
  215. To  bad  the concern for system design was not matched by an
  216. equal concern for the human interface.
  217.  
  218.  
  219.  
  220.      One of the first things you learn  when  you  start  to
  221. decipher  Unix  is  how  to list the contents of a file onto
  222. your terminal.  Now this sounds straightforward enough,  but
  223. in  Unix even this simple operation has its drawbacks.  Sup-
  224. pose I have a file called "testfile".  I want to see what is
  225. inside  of  it.   How would you design a system to do it?  I
  226. would have written a program that listed the  contents  onto
  227. the  terminal,  perhaps  stopping  every 24 lines if you had
  228. signified that you were on a display terminal with only a 24
  229. line  display.   To  the  designers of Unix, however, such a
  230. solution lacks elegance.  Unix has  no  basic  listing  com-
  231. mand,  but  instead you must use a program meant to do some-
  232. thing else.
  233.  
  234.      In Unix, if you wanted to list the contents of  a  file
  235. called "HappyDays", you would use the command named "cat":
  236.                        cat HappyDays
  237. Why cat? Why not?  After all, said Humpty Dumpty  to  Alice,
  238. who  is to be the boss, words or us?  "Cat", short for "con-
  239. catenate" as in, take file1 and concatenate  it  with  file2
  240. (yielding  one  file,  with the first part file1, the second
  241. file2) and put the result on the "standard output" (which is
  242. usually the terminal):
  243.                          cat file1 file2
  244. Obvious right?  And if you have only one file, why cat  will
  245. put  it  on  the standard output -- the terminal -- and that
  246. accomplishes the goal (except for those  of  us  with  video
  247. terminals  who  watch  helplessly as the text goes streaming
  248. off the display).
  249.  
  250.      The Unix designers are rather  fond  of  the  principle
  251. that  special purpose functions can be avoided by clever use
  252. of a small set of system primitives.   Their  philosophy  is
  253. essentially,  don't  make  a special function when the side-
  254. effects of other functions will do what you want.  But there
  255. are several reasons why this philosophy is bad;
  256.  
  257.  
  258.  
  259.                        August 2, 1981
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                            - 3 -
  267.  
  268.  
  269.      1. A  psychological  principle  is  that  names  should
  270.           reflect  function, else the names for the function
  271.           will be difficult to recall;
  272.  
  273.      2. Side-effects can be used for virtue,  but  they  can
  274.           also  have  unwarranted  effects.  Thus, if cat is
  275.           used unwisely, it will destroy files (more on this
  276.           in a moment).
  277.  
  278.      3. Special functions can do nice things for users, such
  279.           as  stop  at  the  end  of screens, or put on page
  280.           headings,  or  transform  non-printing  characters
  281.           into  printing  ones, or get rid of underlines for
  282.           terminals that can't do that.
  283.  
  284. Cat, of course, won't stop at terminal or  page  boundaries,
  285. because  if it did that, why that would disrupt the concate-
  286. nation feature.  But still, isn't it elegant to use cat  for
  287. listing?   Who  needs  a  print or a list command.  You mean
  288. "cat" isn't how you would abbreviate  concatenate?  gee,  it
  289. seems so obvious to us.  Just like
  290.    _f_u_n_c_t_i_o_n             _U_n_i_x _c_o_m_m_a_n_d _n_a_m_e
  291. c compiler                      cc
  292. change working directory        chdir  (cd in Berkeley Unix)
  293. change password                 passwd
  294. concatenate                     cat
  295. copy                            cp
  296. date                            date
  297. echo                            echo
  298. editor                          ed
  299. link                            ln
  300. move                            mv
  301. remove                          rm
  302. search file for pattern         grep
  303.  
  304. Notice the lack of consistency in forming the  command  name
  305. from  the  function.   Some  names  are formed  by using the
  306. first two consonants of the function name, unless it is  the
  307. editor  which  is  abbreviated "ed" and concatenate which is
  308. "cat" or "date" or "echo" which are not abbreviated at  all.
  309. Note  how  useful those 2 letter abbreviations are.  See how
  310. much time and effort is saved typing only 2 letters  instead
  311. of  --  heaven  forbid  --  4  letters.  So what is a little
  312. inconsistency among friends, especially when  you  can  save
  313. almost 400 milliseconds per command.
  314.  
  315.      Similar statements apply  to  the  names  of  the  file
  316. directories.  Unix is a file oriented system, with hierarch-
  317. ical directory structures, so the directory names  are  very
  318. important.   Thus,  this  paper  is  being written on a file
  319. named      "unix"      and       whose       "path"       is
  320. /csl/norman/papers/CogEngineering/unix.  The name of the top
  321. directory is "/", and csl, norman, papers, and  CogEngineer-
  322. ing  are  the  names  of  directories  hierarchically placed
  323.  
  324.  
  325.                        August 2, 1981
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                            - 4 -
  333.  
  334.  
  335. beneath "/".  Note that the symbol "/" has two meanings: the
  336. name  of  the  top  level  directory  and  the  symbol  that
  337. separates levels of the directories.  This is very difficult
  338. to justify to new users.  And those names: the directory for
  339. "users" and "mount" are called, of course, "usr" and  "mnt."
  340. And  there  are  "bin," "lib," and "tmp." (What mere mortals
  341. might call binary, library, and temp).   Unix loves abbrevi-
  342. ations,  even  when the original name is already very short.
  343. To write "user" as "usr" or "temp" as "tmp" saves an  entire
  344. letter:  a  letter  a day must keep the service person away.
  345. But Unix is inconsistent;  it doesn't abbreviate  everything
  346. as   2  or  3  letter commands.  It keeps "grep" at its full
  347. four letters, when it could have been abbreviated as "gr" or
  348. "gp".  (What  does  grep mean, you may ask.  "Global REgular
  349. expression, Print" --  at  least  that's  the  best  we  can
  350. invent,  the  manual  doesn't  even  try  to  say.  The name
  351. wouldn't matter if grep were something obscure, hardly  ever
  352. used, but in fact it is one of the more powerful, frequently
  353. used string processing commands.  But that takes me from  my
  354. topic.)
  355.  
  356.  
  357.      Do I dare tell you about "dsw"?  This also turns out to
  358. be  an important routine.  Suppose you accidentally create a
  359. file whose name has  a non-printing character  in  it.   How
  360. can you remove it?  The command that lists the files on your
  361. directory won't show non-printing characters.   And  if  the
  362. character  is  a space (or worse, a "*"), "rm"  (the program
  363. that removes files) won't accept it.   "dsw"  was  evidently
  364. written  by someone at Bell Labs who felt frustrated by this
  365. problem and hacked up a quick solution.  Dsw  goes  to  each
  366. file  in  your  directory  and asks you to respond  "yes" or
  367. "no," whether to delete the file  or keep it (or  is  it  to
  368. keep it or delete it -- which action does "yes" mean?).  How
  369. do you remember dsw?  What on earth does the name stand for?
  370. The  Unix people won't tell; the manual smiles its wry smile
  371. of the professional programmer and says "The name dsw  is  a
  372. carryover  from the ancient past. Its etymology is amusing."
  373. (The implication, I guess, is that true professionals  never
  374. need  to  use such a program, but they are allowing it to be
  375. released for us  novices  out  in  the  real  world.)  Which
  376. __________________________
  377. Verification of my charges comes from  the  experiences
  378. of  the  many users of Unix, and from the modifications
  379. that other people have been forced to make to the  sys-
  380. tem.   Thus, the system of Unix I now use is called The
  381. Fourth Berkeley Edition for  the  Vax,  distributed  by
  382. Joy,  Babaoglu, Fabry, and Sklower at the University of
  383. California, Berkeley (henceforth, Berkeley Unix).  They
  384. provide   a  listing  program  that  provides  all  the
  385. features I claim a user would want (except  a  sensible
  386. name  -- but Berkeley Unix even makes it easy to change
  387. system names to anything you prefer).
  388.  
  389.  
  390.  
  391.                        August 2, 1981
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                            - 5 -
  399.  
  400.  
  401. operation takes place if you say  "yes":  why  the  file  is
  402. deleted  of course.  So if you go through your files and see
  403. important-file, you nod to yourself and say, yes,  I  better
  404. keep that one, type in yes, and destroy it forever. Does dsw
  405. warn you? Of course not.  Does dsw even document itself when
  406. it starts, to remind you which way is which?  Of course not.
  407. That would be talkative, and true Unix programmers are never
  408. talkative.   (Berkeley  Unix, has finally killed dsw, saying
  409. "This little known,  but  indispensible  facility  has  been
  410. taken  over...".   That  is a fitting commentary on standard
  411. Unix: a system that allows an "indispensible facility" to be
  412. "little known.")
  413.  
  414.  
  415.      The symbol "*" means "glob" (a typical Unix name:   the
  416. name  tells  you  just what action it does, right?).  Let me
  417. illustrate with our friend, "cat." Suppose  I  want  to  put
  418. together   a  set of files named paper.1 paper.2 paper.3 and
  419. paper.4 into one file.  I can do this with cat:
  420.      cat paper.1 paper.2 paper.3 paper.4 > newfilename
  421. Unix provides "glob" to make  the  job  even  easier.   Glob
  422. means  to  expand the filename by examining all files in the
  423. directory to find all that fit. Thus, I can redo my  command
  424. as
  425.                   cat paper* > newfilename
  426. where paper* expands to {paper.1 paper.2  paper.3  paper.4}.
  427. This  is  one  of  the  typical virtues of Unix; there are a
  428. number of  quite  helpful  functions.   But  suppose  I  had
  429. decided  to name this new file "paper.all".  After all, this
  430. is a pretty logical name, I am combining the separate  indi-
  431. vidual files into a new one that contains "all" the previous
  432. ones.
  433.                    cat paper* > paper.all
  434. Disaster.  I will probably blow  up  the  system.   In  this
  435. case,  paper*  expands  to  paper.1  paper.2 paper.3 paper.4
  436. paper.all, and so I am filling up a file from itself:
  437.  cat paper.1 paper.2 paper.3 paper.4 paper.all > paper.all
  438. Eventually the file will burst.   Does  nice  friendly  Unix
  439. check against this, or at least give a warning?  Oh no, that
  440. would be against the policy of  Unix.   The  manual  doesn't
  441. bother warning against this either, although it does warn of
  442. another, related infelicity: "Beware of 'cat a b  >  a'  and
  443. 'cat  b a > a', which destroy the input files before reading
  444. them."  Nice of them to tell us.
  445.  
  446.  
  447.      The command to remove all files  that  start  with  the
  448. word "paper"
  449.                          rm paper*
  450. becomes a disaster if a space gets inserted by accident:
  451.                          rm paper *
  452. for now the file "paper" is removed, as well as  every  file
  453. in  the  entire directory (the power of glob).  Why is there
  454. not a check against such things?  I finally had to alter  my
  455.  
  456.  
  457.                        August 2, 1981
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                            - 6 -
  465.  
  466.  
  467. version of rm so that when I said to remove files, they were
  468. actually only moved to a special directory  named  "deleted"
  469. and  they  didn't  actually  get deleted until I logged off.
  470. This gave me lots of time for second thoughts and for catch-
  471. ing  errors.  This also illustrates the power of Unix:  what
  472. other operating system would make it so easy for someone  to
  473. completely  change  the  operation  of  a system command for
  474. their own personal satisfaction?  This also illustrates  the
  475. evils  of Unix: what other operating system would make it so
  476. necessary to do so?  (This is no longer necessary  now  that
  477. we use Berkeley Unix -- more on this in a moment.)
  478.  
  479.  
  480.      The standard text editor is called Ed.  What a  problem
  481. that  turned  out  to  be.   It was so lovely that I spent a
  482. whole year using it as an experimental vehicle  to  see  how
  483. people dealt with such awful things.  Ed's major property is
  484. his shyness; he doesn't like to talk.  You invoke Ed by say-
  485. ing,  reasonably  enough,   "ed".  The result is silence: no
  486. response, no prompt, no message, just silence.   Novice  are
  487. never sure what that silence means.  What did they do wrong,
  488. they wonder.  Why doesn't Ed say "thank you, here I am"  (or
  489. at least produce a prompt character)?  No, not Unix with the
  490. philosophy that silence is golden.   No response means  that
  491. everything  is  ok.   If  something  had gone wrong, then it
  492. would have told you (unless the system died, of course,  but
  493. that couldn't happen could it?).
  494.  
  495.      Then there is the famous append  mode  error.   To  add
  496. text  into  the buffer, you have to enter "append mode."  To
  497. do this, one simply types "a",  followed  by   RETURN.   Now
  498. everything  that  is  typed  on  the  terminal goes into the
  499. buffer.  (Ed, true to form, does not inform you that  it  is
  500. now  in  append mode: when you type "a" followed by "RETURN"
  501. the result is silence, no  message,  no  comment,  nothing.)
  502. When  you are finished adding text, you are supposed to type
  503. a line that "contains only a . on it."  This gets you out of
  504. append  mode.   Want  to  bet  on how many extra periods got
  505. inserted into text files,  or how many commands got inserted
  506. into texts, because the users thought that they were in com-
  507. mand mode and forgot they had not left append mode?  Does Ed
  508. tell you when you have left append mode?  Hah.  This problem
  509. is so obvious that even the designers  knew  about  it,  but
  510. their  reaction  was  to  laugh:  "hah-hah, see Joe cry.  He
  511. just made the append mode error  again."   In  the  tutorial
  512. introduction  to  Ed, written at Bell Labs, the authors joke
  513. about it. Even experienced programmers get screwed this way,
  514. they  say, hah hah, isn't that funny.  Well, it may be funny
  515. to the experienced programmer, but it is devastating to  the
  516. beginning secretary or research assistant or student  who is
  517. trying to use friendly Unix as a word processor,  or  as  an
  518. experimental tool, or just to learn about computers.  Anyone
  519. can use Unix says the programmer, all you need is a sense of
  520. humor.
  521.  
  522.  
  523.                        August 2, 1981
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                            - 7 -
  531.  
  532.  
  533.      How good is your sense of humor?  Suppose you have been
  534. working  on a file for an hour and then decide to quit work,
  535. exiting Ed  by saying "q".  The problem  is  that  Ed  would
  536. promptly quit.  Woof, there went your last hour's work. Gone
  537. forever.  Why, if you would have wanted to save it you would
  538. have  said  so,  right?   Thank goodness for all those other
  539. people across the country who immediately rewrote  the  text
  540. editor  so  that us normal people (who make errors) had some
  541. other choices besides Ed, editors  that  told  you  politely
  542. when  they were working, that would tell you if they were in
  543. append or command mode,  and  that  wouldn't  let  you  quit
  544. without  saving  your file unless you were first warned, and
  545. then only if you said you really meant it.
  546.  
  547.  
  548.      I could go on.  As I wrote this paper I sent out a mes-
  549. sage on our networked message system and asked my colleagues
  550. to tell me of  their  favorite  peeves.   I  got  a  lot  of
  551. responses,  but  there  is  no  need to go into detail about
  552. them; they all have much the same flavor about them,  mostly
  553. commenting  about  lack  of  consistency,  about the lack of
  554. interactive feedback.  Thus, there is no standardization  of
  555. means  to  exit  programs  (and  because the "shell" is just
  556. another program as far as th system is concerned, it is very
  557. easy to log yourself off the system by accident).  There are
  558. very useful pattern matching features (such as the "glob"  *
  559. function),  but the shell and the different programs use the
  560. symbols in inconsistent ways.  The Unix  copy  command  (cp)
  561. and the related C programming language "stringcopy" (strcpy)
  562. have reversed order of arguments, and  Unix  move  (mv)  and
  563. copy (cp) operations will destroy existing files without any
  564. warning.  Many programs take special  "argument  flags"  but
  565. the  manner of specifying the flags is inconsistent, varying
  566. from program to program.  As I said, I could go on.
  567.  
  568.  
  569.      The good news is that we don't use  standard  Unix:  we
  570. use  Berkeley  Unix.   History lists, aliases, a much richer
  571. and more intelligent set of  system  programs,  including  a
  572. list  program,  an  intelligent screen editor, a intelligent
  573. set of routines for interacting with terminals according  to
  574. their  capabilities,  and  a  job control that allows one to
  575. stop jobs right in the middle, startup new ones, move things
  576. from  background  to  foreground  (and  vice versa), examine
  577. files, and then resume jobs.  And the shell has been  ampli-
  578. fied  to  be  a more powerful programming language, complete
  579. with file handling capabilities, if--then--else  statements,
  580. while,  case,  and  all the other goodies of structured pro-
  581. gramming  (see the accompanying box on Unix).
  582.  
  583.      Aliases are worthy of special comment.  Aliases let the
  584. user  tailor the system to their own needs, naming things in
  585. ways they themselves can remember: self-generated names  are
  586. indeed easier to remember than arbitrary names given to you.
  587.  
  588.  
  589.                        August 2, 1981
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                            - 8 -
  597.  
  598.  
  599. And aliases allow abbreviations that are meaningful  to  the
  600. individual,  without burdening everyone else with your clev-
  601. erness or difficulties.
  602.  
  603.      To work on this  paper,  I  need  only  type  the  word
  604. "unix,"  for  I  have  set up an alias called "unix" that is
  605. defined to be equal to the correct command to change  direc-
  606. tories,  combined with a call to the editor (called "vi" for
  607. "visual" on this system) on the file:
  608. alias unix "chdir /csl/norman/papers/CogEngineering; vi unix"
  609. These Berkeley Unix features have proven  to  be  indispens-
  610. able:  the  people in my laboratory would probably refuse to
  611. go back to standard Unix.
  612.  
  613.      The bad news is that Berkeley Unix  is  jury-rigged  on
  614. top  of regular Unix, so it can only patch up the faults: it
  615. can't remedy them.  Grep is not only still grep,  but  there
  616. is  an  egrep  and  an  fgrep.  But worse, the generators of
  617. Berkeley Unix have their problems: if Bell Labs  people  are
  618. smug  and  lean,  Berkeley  people  are cute and overweight.
  619. Programs are wordy. Special features  proliferate.   Aliases
  620. --   the  system  for  setting  them  up  is not easy to for
  621. beginners (who may be the people who need them  most).   You
  622. have  to  set  them  up  in a file called .cshrc, a name not
  623. chosen to inspire confidence!  The "period" in the  filename
  624. means that it is invisible -- the normal method of directory
  625. listing programs won't show it.  The directory listing  pro-
  626. gram, ls, comes with 19 possible argument flags, that can be
  627. used singly or in combinations.  The number of special files
  628. that  must be set up to use all the facilities is horrendus,
  629. and they get more complex with each new release from  Berke-
  630. ley.   It  is vey difficult on new users.  The program names
  631. are cute  rather  than  systematic.   Cuteness  is  probably
  632. better  than the lack of meaning of standard Unix, but there
  633. are be limits.  The listing program is called "more" (as in,
  634. "give  me  more"),  the program that tells you who is on the
  635. system is called "finger", and a keyword help file  --  most
  636. helpful by the way -- is called "apropos."  Apropos! who can
  637. remember that?  Especially when you need it most. I  had  to
  638. make  up  an alias called "help" which calls all of the help
  639. commands Berkeley provides, but  whose  names  I  can  never
  640. remember (apropos, whatis, whereis, which).
  641.  
  642.  
  643.  
  644.  
  645. __________________________
  646. The system is now so wordy and  so  large  that  it  no
  647. longer  fits  on  the  smaller machines: our laboratory
  648. machine, a DEC 11/45, cannot hold the latest release of
  649. Berkeley  Unix  (even  with a full complement of memory
  650. and a reasonable amount of disc).  I write  this  paper
  651. on a Vax.
  652.  
  653.  
  654.  
  655.                        August 2, 1981
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.                            - 9 -
  663.  
  664.  
  665.      One reader of a draft of this paper -- a  systems  pro-
  666. grammer   --   complained  bitterly:  "Such  whining,  hand-
  667. wringing, and general bitchiness will cause most  people  to
  668. dismiss  it as over-emotional nonsense. ...  The Unix system
  669. was originally designed by systems programmers for their own
  670. use and with no intention for others using it. Other hackers
  671. liked it so much that eventually a lot of them started using
  672. it.  Word  spread about this wonderful system, etc, the rest
  673. you probably know. I think  that  Ken  Thompson  and  Dennis
  674. Ritchie  could  easily shrug their shoulders and say 'But we
  675. never intended it for other than our personal use.'"
  676.  
  677.      All the other users of Unix who  have  read  drafts  of
  678. this paper agreed with me.  Indeed, their major reaction was
  679. to forward examples of problems  that  I  had  not  covered.
  680. This  complaint was unique.  I do sympathize with the spirit
  681. of the complaint.  He is correct, but  ...    The  "but"  is
  682. that  the  system  is  nationally  distributed, under strict
  683. licensing agreements, with a very high charge  to  industry,
  684. and  nominal  charges  to  educational  institutes.  Western
  685. Electric doesn't mind getting a profit, but  they  have  not
  686. attempted  to  worry  about the product.  If Unix were still
  687. what it started to be, a simple experiment on  the  develop-
  688. ment  of operating systems, then the complaints I list could
  689. be made in a more friendly, constructive manner.   But  Unix
  690. is  more  than  that.   It  is  taken as the very model of a
  691. proper operating system.  And that is  exactly  what  it  is
  692. not.
  693.  
  694.      In the development of the system aspects of  Unix,  the
  695. designers  have  done  a  magnificent  job.   They have been
  696. creative, and systematic.  A common theme runs  through  the
  697. development  of  programs, and by means of their file struc-
  698. ture, the development of "pipes" and "redirection"  of  both
  699. input  and  output,  plus the power of the iterative "shell"
  700. system-level commands, one can combine system level programs
  701. into  self-tailored systems of remarkable power with remark-
  702. able ease.
  703.  
  704.      In the development of the  user  interface  aspects  of
  705. Unix, the designers have been failures.  They have been dif-
  706. ficult and derisive.  A common theme runs through  the  com-
  707. mands: don't be nice to the casual user --  write the system
  708. for the dedicated expert.  The system is a recluse.  It uses
  709. weird  names,  and it won't speak to you, not even if spoken
  710. to.  For system programmers, Unix is a delight.  It is  well
  711. structured,  with  a consistent, powerful philosophy of con-
  712. trol and structure.  My complaint is simple:   why  was  not
  713. the  same  effort  put  into  the design at the level of the
  714. user?  The answer to my complaint is  a  bit  more  complex.
  715. There  really  are no well known principles of design at the
  716. level of the user interface.  So, to remedy the harm that  I
  717. may  have  caused by my heavy-handed sarcasm, let me attempt
  718. to provide some positive suggestions based upon the research
  719.  
  720.  
  721.                        August 2, 1981
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                            - 10 -
  729.  
  730.  
  731. that  has  been done by me and by others into the principles
  732. of the human information processing system.
  733.  
  734.  
  735.      Cognitive Engineering is a new discipline, so new  that
  736. it  doesn't  exist:   but it ought to.  Quite a bit is known
  737. about the human information processing system,  enough  that
  738. we  can specify some basic principles for designers.  People
  739. are complex entities and can adapt to almost anything.    As
  740. a  result,  designers  are often sloppy, for they can design
  741. for themselves without realizing the difficulties that  will
  742. be faced by other users.  Moreover, there are different lev-
  743. els of users:  people with a large amount  of  knowledge  of
  744. the  device  they  are about to use are quite different from
  745. those who lack a basic understanding.  Experts are different
  746. than novices.  And the expert who is normally skilled at the
  747. use of some systems but who has not used it for awhile is at
  748. a peculiar level of knowledge, neither novice nor expert.
  749.  
  750.      The three most important concepts for system design are
  751. these:
  752.  
  753.      1.  Be consistent.  A  fundamental  set  of  principles
  754.           ought  to  be  evolved  and  followed consistently
  755.           throughout all phases of the design.
  756.  
  757.      2.  Provide the user with  an  explicit  model.   Users
  758.           develop  mental  models  of the devices with which
  759.           they interact.  If you do not  provide  them  with
  760.           one, they will make one up themselves, and the one
  761.           they make up is apt to be wrong.  Do not count  on
  762.           the  user fully understanding the mechanics of the
  763.           device.  Secretaries  and  scientists  alike  will
  764.           share  a  lack  of knowledge of a computer system.
  765.           The users are not apt to understand the difference
  766.           between  the buffer, the working memory, the work-
  767.           ing files, and the permanent files of a text  edi-
  768.           tor.   They are apt to believe that once they have
  769.           typed something into the system, it is permanently
  770.           in  their  files.   They  are  apt  to expect more
  771.           intelligence from the  system  than  the  designer
  772.           knows  is  there.   And  they are apt to read into
  773.           comments (or the lack of comments) more  than  you
  774.           have  intended.   Feedback  is  of critical impor-
  775.           tance, both in helping to establish the  appropri-
  776.           ate  mental model and in letting the user keep its
  777.           current state in synchrony with the actual system.
  778.  
  779.      3.  Provide mnemonic aids.  Human memory is  a  fragile
  780.           thing.   Actually,  for  most  purposes it is con-
  781.           venient to think of human memory as consisting  of
  782.           two  parts:   a  short-term memory and a long-term
  783.           memory (modern cognitive psychology is  developing
  784.           more  sophisticated  notions than this simple two-
  785.  
  786.  
  787.                        August 2, 1981
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.                            - 11 -
  795.  
  796.  
  797.           stage one, but this is still  a  valid  approxima-
  798.           tion).   Short-term  memory  is,  as the name sug-
  799.           gests, limited in duration  and  quantity:   about
  800.           five  to  seven  items is the limit.  Thus, do not
  801.           expect a user to remember the contents of  a  mes-
  802.           sage  for  much  longer  than it is visible on the
  803.           terminal.  Long-term  memory  is  robust,  but  it
  804.           faces  two difficulties:  getting stuff in so that
  805.           it is properly organized and getting stuff out, so
  806.           that  it  can  be  found when needed.  Learning is
  807.           difficult, unless there is a good  structure,  and
  808.           it is visible to the learner.  The system designer
  809.           must provide sensible assistance to  the  user  so
  810.           that  the  material  can be structured.  There are
  811.           lots of sensible memory aids that can be provided,
  812.           but  the  most  powerful  and  sensible  of all is
  813.           understanding.  Make a system so that  it  can  be
  814.           understood and the memory follows with ease.  Make
  815.           the command names ones  that  can  be  understood,
  816.           where  the  names follow from the function that is
  817.           desired.  If abbreviations must be used,  adopt  a
  818.           consistent policy of forming the abbreviations. Do
  819.           not deviate from the policy, even when it  appears
  820.           that  it  would be easier for a particular command
  821.           to deviate:  inconsistency is an  evil.   Remember
  822.           the  major  problem  of  any large-scale memory is
  823.           finding the information that is  sought,  even  if
  824.           the  information  is there someplace.  We retrieve
  825.           things from  memory  by  starting  off  with  some
  826.           description  of  the information we seek, use that
  827.           description to enter their  memory  system  in  an
  828.           attempt  to match against the desired information.
  829.           If the designer uses cute names  and  non-standard
  830.           abbreviations,  our  ability  to  generate a valid
  831.           description is impaired.  As a result, the  person
  832.           who  is  not  expert and current in the use of the
  833.           system is apt to flounder.
  834.  
  835.  
  836.  
  837.      There are many ways of formatting information on termi-
  838. nals  to  provide  useful  memory and syntax aids for users.
  839. With today's modern terminals, it is possible to use  menus,
  840. multiple  screens  and  windows, highlighted areas, and with
  841. full duplex systems,  automatic  or  semi-automatic  command
  842. completion  systems.   The  principles for these systems are
  843. under active study by a  number  of  groups,  but  none  are
  844. directly  relevant to my critique of the UNIX operating sys-
  845. tem.  UNIX is designed specifically so that it can  be  used
  846. with a wide variety of terminals, including hard copy termi-
  847. nals.
  848.  
  849.      The problem with Unix is more fundamental.   Unix  does
  850. not provide the user with a systematic set of principles; it
  851.  
  852.  
  853.                        August 2, 1981
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.                            - 12 -
  861.  
  862.  
  863. does not provide a simple, consistent mental model  for  the
  864. user, consistent not only in the shell but in the major sys-
  865. tem programs and languages; it does  not  provide  the  user
  866. with simple memory aids that can be used to learn the system
  867. structure and then, when  one is not completely  current  in
  868. the  use  of  a  particular  command,  still  to  be able to
  869. retrieve (or better, derive)  what  is  needed.   There  are
  870. essentially  no  user help files, despite the claim that all
  871. the documentation is on-line via the command named man  (for
  872. manual, of course).  But "man" requires you to know the name
  873. of the command you want information about,  although  it  is
  874. the name that is probably just the information you are seek-
  875. ing.
  876.  
  877.      System designers take note.  Design the system for  the
  878. person, not for the computer, not even for yourself.  People
  879. are  also  information  processing  systems,  with   varying
  880. degrees   of   knowledge,  varying  degrees  of  experience.
  881. Remember, people's short-term memories are limited in  size,
  882. and they learn and retrieve things best when there is a con-
  883. sistent reason for the name, the function, and  the  syntax.
  884. Friendly systems treat users as intelligent adults who, like
  885. normal adults, are forgetful, distracted, thinking of  other
  886. things,  and  not  quite as knowledgeable about the world as
  887. they themselves would like  to  be.   Treat  the  user  with
  888. intelligence.   There  is  no need to talk down to the user,
  889. nor to explain everything.  But give the  user  a  share  in
  890. understanding by presenting a consistent view of the system.
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917. __________________________
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925. SHAR_EOF
  926. cat << \SHAR_EOF > rumor.ber
  927. From uucp Fri Aug 14 11:59:42 1981 remote from pur-ee
  928. NAharpo.423
  929. Nfa.unix-wizards
  930. Npur-ee!cincy!duke!decvax!ucbvax!mhtsa!harpo!ber
  931. NThu Aug 13 23:31:58 1981
  932. NYAUF
  933. NGee whiz.  Bitch bitch bitch.  There is better documentation than
  934. Nmanual pages provided with your unix system.  The manual page
  935. Nis a brief description of a command, routine or concept.  It's a starting
  936. Npoint, and frequently enough.  If you want to know more, look at the source.
  937. N
  938. NI think the page for lorder is terrific.  I never use lorder for anything
  939. Nother than ordering libraries, and to have an example right there is great.
  940. N
  941. NAll this crap about UNIX being unfriendly and UNIX lacking documentation
  942. Nand so on is just that.  UNIX is an operating system.  It's clean, concise,
  943. Nand clear (at least traditionally).  The beauty of the environment that
  944. Ngenerally surrounds a unix is that it is easilly growable by the people
  945. Nthat use it.  If some turkey writes a poor manual page, then unix is blamed.
  946. NLook at all the crap you have to deal with at IH because they won't permit
  947. Na public directory for NON-STANDARD this and that.  Well I guess they want
  948. Nto make sure nobody polutes their system.  That stinks.  But that's the only
  949. Nway your going to censor it.  At least you can point your finger directly
  950. Nat the computer center staff.
  951. N
  952. NIf you don't like a command or documentation your free to avoid it.
  953. NOr better yet, improve it!  Unix provides an excellent program development
  954. Nenvironment.  If you can't figure out what a syntax error is, ask someone.
  955. NYou'll find dozens of experts in every hallway.  Why?  Because it's relatively
  956. Neasy to comprehend.
  957. N
  958. NPlease don't start restricting creativity with naming standards and style
  959. Nstandards and how many lines are permitted in a subroutine ...
  960. NThat's almost tolerable for a project, but unix isn't a number 7 electronic
  961. Nsump pump.  Just because management feels that 'C' and UNIX are the do-all
  962. Nto end-all doesn't make it so.  And the attempts to fit that misconception
  963. Nare ruining a perfectly good environment.
  964. N
  965. NWhy don't you send your comments to the MINI-SYSTEM newsletter in the
  966. Nform of a modification request?  I'ld like to see an OFFICIAL response.
  967. N
  968. N(deep breath)
  969. N
  970. NNow I feel better.   Let's face it, unix is not geared to the naive user.
  971. NSo what?  It's great for the knowledgable user.  Why bring the level
  972. Nof excellence down to least common denominator?  For a profit!  Yeh well
  973. Nthat's another story.  But let's try to raise the level of the users.
  974.  
  975. SHAR_EOF
  976. cat << \SHAR_EOF > rumor.bh
  977. From uucp Fri Aug 14 11:39:22 1981 remote from pur-ee
  978. NAucbvax.2619
  979. Nfa.unix-wizards
  980. Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards
  981. NTue Aug 11 09:14:54 1981
  982. Nunix on large machines
  983. N>From BH@SU-AI Tue Aug 11 09:06:37 1981
  984. NSince KLH doesn't seem to have answered the request for details on
  985. Nwhy UNIX isn't perfect for big machines, let me try:
  986. N
  987. N1.  The file system is flaky.  UCB is working on some aspects of
  988. Nthis problem but not all.  They seem to be fixing the problems in
  989. Nwhich a disk block is added to one list BEFORE it's removed from
  990. Nanother, which is how the file system is compromised by a system
  991. Ncrash.  But they aren't changing the fact that overwriting a file
  992. N(a creat with an existing name) deletes the old file right away
  993. Nrather than on a successful close, nor are they adding an exclusive
  994. Naccess discipline to the kernel.  (About once a month or so my
  995. N/etc/passwd disappears when several people try to change their
  996. Npasswords or create new accounts at once, despite supposedly
  997. Nfoolproof lock-file code in the user programs.)
  998. N
  999. N2.  Debugging facilities leave a lot to be desired.  You can't
  1000. Ntype instuctions in to adb, so it's hard to patch code.  The
  1001. Nsymbol table doesn't know about things like fields in a struct,
  1002. Nso symbolic debugging only partly exists.  You can't use adb
  1003. Nstandalone to poke at a crashed system.
  1004. N
  1005. N3.  Many smaller, easily-fixed things show that UNIX was designed
  1006. Nwith a small machine in mind.  One example: the result of compiling
  1007. N"foo.c" should be called "foo", not "a.out".  Clearly they designed
  1008. Nthe naming convention for a machine without much disk space, in which
  1009. Nit was antisocial to have executable files for more than one program
  1010. Nat a time!
  1011. N
  1012. N4.  There are terminals in the world other than the model 37 TTY.
  1013. NThe UCB termcap package makes it possible for there to be a few
  1014. Nhuge, hairy user programs which support displays.  But there needs
  1015. Nto be kernel support (or the equivalent in shell support, with
  1016. Nall other user level tty interaction funneled through the shell,
  1017. Nwhich would be awkward) for things like automatically dividing the
  1018. Ndisplay screen into pieces for different processes.  The user must
  1019. Nbe able to type escape sequences of some sort to control which piece
  1020. Nhse's typing into right now.  It should be possible to write a
  1021. NTRIVIAL user program which can still fit into this display
  1022. Ndiscipline, e.g., it shoul be able to type a control-L and have that
  1023. Nmean "clear my piece of the screen".
  1024. N
  1025. N5.  Some things aren't written as efficiently as they might be.
  1026. N
  1027. NThere's more, but this will do to begin the discussion.  Mind you,
  1028. NI think UNIX is wonderful in many ways.  Pipes are great, filters
  1029. Nare great, process trees are great, etc.  Many of the flaws in UNIX
  1030. Ncould be fixed in a more or less compatible way.  (Not the one about
  1031. Ndeleting the old file too soon, though.)  (By the way, yes I know
  1032. Nyou can program around it.  The difference between an okay system and
  1033. Na great system is that you don't have to program around the great
  1034. Nsystem, you can program THROUGH it!)  It's not that the future
  1035. Nlarge-computer standard operating system should look nothing like
  1036. NUNIX, it's that the standard large-computer UNIX needs some redesign
  1037. Nbefore it gets ossified as a standard.
  1038. N
  1039. N
  1040. N
  1041.  
  1042. SHAR_EOF
  1043. cat << \SHAR_EOF > rumor.clyde
  1044. From uucp Fri Aug 14 11:59:13 1981 remote from pur-ee
  1045. NAucbvax.2671
  1046. Nfa.unix-wizards
  1047. Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards
  1048. NThu Aug 13 10:01:32 1981
  1049. NReply to 'The Truth about UNIX'
  1050. N>From clyde@UTEXAS-11 Thu Aug 13 09:53:17 1981
  1051. N
  1052. N    While the gentelman has some cogent points, I also believe he
  1053. Nhas permanent brain damage . He is obviously used to DEC systems which
  1054. Nlike to hold lusers hands lest they damage themselves, and I had great
  1055. Ndifficulty reading completly through his treatise (diatribe?) because
  1056. Nof his own inconsistancies and notions.
  1057. N
  1058. N    Oh well, not everyone can be enthusiatic (though I noticed he
  1059. Nwrote his document on a UNIX system, using NROFF -- I wonder how
  1060. Nhe managed to hold his nose with one hand and type with the other) .
  1061. N-------
  1062. N
  1063.  
  1064. SHAR_EOF
  1065. cat << \SHAR_EOF > rumor.eps
  1066. From uucp Fri Aug 14 11:56:06 1981 remote from pur-ee
  1067. NAucbvax.2642
  1068. Nfa.unix-wizards
  1069. Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards
  1070. NTue Aug 11 22:35:29 1981
  1071. NRe: The Truth about UNIX
  1072. N>From Eps@UCLA-SECURITY Tue Aug 11 22:31:19 1981
  1073. NThe date given on this mesage is obviously wrong;
  1074. Nit should have read "Apr 1" instead of "Aug 1."
  1075. N
  1076. N                    --Eric
  1077. N-------
  1078. N
  1079. N
  1080.  
  1081. SHAR_EOF
  1082. cat << \SHAR_EOF > rumor.greg
  1083. From uucp Fri Aug 14 11:43:52 1981 remote from pur-ee
  1084. NAucbvax.2643
  1085. Nfa.unix-wizards
  1086. Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards
  1087. NWed Aug 12 00:12:07 1981
  1088. NYet more truth about Unix.....
  1089. N>From greg@NPRDC Wed Aug 12 00:08:58 1981
  1090. NI almost hesitate to mention this, but Donald A. Norman, the author of
  1091. N"The Truth About Unix", gets mail as "Norman at NPRDC".  (NPRDC is
  1092. Nnotorious enough; a little more won't hurt, right?)  You could send him
  1093. Ncopies of your flames to see if he might respond.  It could be a very
  1094. Ninteresting discussion.....
  1095. N----
  1096. N
  1097.  
  1098. SHAR_EOF
  1099. cat << \SHAR_EOF > rumor.henry
  1100. From cincy!duke!decvax!utzoo!henry Sun Aug  9 23:43:32 1981
  1101. datamat!rumor       : net.general,NET.general
  1102. There is no such system as "datamat" connected to us, nor is there
  1103. any person named "rumor" locally.  Any communication purporting to
  1104. be from such a person at such an address is either garbled or
  1105. fraudulent.  Will somebody PLEASE tell me why we are suddenly getting
  1106. tons of mail addressed to "...!utzoo!datamat!rumor", apparently related
  1107. to an unfriendly evaluation of Unix that I have never heard of and
  1108. that most certainly did not come from here?
  1109.  
  1110. SHAR_EOF
  1111. cat << \SHAR_EOF > rumor.henry2
  1112. From uucp Fri Aug 14 11:56:36 1981 remote from pur-ee
  1113. NAutzoo.885
  1114. Nnet.general,NET.general,fa.unix-wizards
  1115. Npur-ee!cincy!duke!decvax!utzoo!henry
  1116. NThu Aug 13 00:56:51 1981
  1117. Ndatamat!rumor
  1118. NI've now seen a copy of the infamous utzoo!datamat!rumor article
  1119. Nthat has caused all the fuss (I thank decvax!jm for mailing it to
  1120. Nme).  It most definitely DID NOT originate at or pass through
  1121. Ndecvax!utzoo, the University of Toronto Zoology department.  The
  1122. N"PDT" in its postmark strongly suggests a west-coast origin, as
  1123. Ndoes the author's affiliation, and a friend of mine who gets various
  1124. Nthings from the Arpanet community says he has seen "utzoo" on the
  1125. Ncc-list of a document that may even be the same article (we haven't
  1126. Nyet had a chance to compare notes).  THIS IS NOT US.  We may have
  1127. Na first here:  the first real live authentic name conflict on Usenet.
  1128. N[Why me, Lord?]  Would anyone knowing the possible identity of the
  1129. Nother "utzoo" please pass this information on to me?  My friend's
  1130. Ncomments suggest it may be in the Stanford area, the origin of
  1131. Nthe article itself suggests the San Diego area.
  1132. N
  1133. N                    Henry Spencer
  1134. N                    decvax!utzoo!henry
  1135. N                    (416)978-2006 (for now)
  1136. N                    (416)978-6060 (shortly)
  1137.  
  1138. SHAR_EOF
  1139. cat << \SHAR_EOF > rumor.jej
  1140. From uucp Fri Aug 14 11:55:22 1981 remote from pur-ee
  1141. NAihuxl.103
  1142. Nfa.unix-wizards
  1143. Npur-ee!cincy!duke!decvax!ucbvax!ihnss!ihuxl!jej
  1144. NThu Aug 13 20:19:50 1981
  1145. NForced Interaction, and YAUF (Yet Another Unix Flame)
  1146. NSubject: program interface to mail-like commands, Unix documentation
  1147. N
  1148. NI've run into a problem of how to automate commands that, to quote
  1149. NRitchie, "force interaction on the user whether it is wanted or not:"
  1150. Nthe primordial example is mail.
  1151. N
  1152. NIt is not clear how one could write a program that would issue the
  1153. Ncorrect commands to mail to do a particular filtering, such as "save
  1154. Nall mail from John Doe, and delete the rest after printing it offline."
  1155. Nmail expects standard input to direct it, based on what it itself has
  1156. Noutput.
  1157. N
  1158. NAny notions of a technique for writing such programs?
  1159. N
  1160. N----------------------------------------
  1161. N
  1162. NThe item about the Unix user interface was very good--one item
  1163. Nthat the author left out, though, was Unix documentation.
  1164. N
  1165. NMost notorious, I think, are the multitude of manual pages which
  1166. Nsay about the error messages that they are "self-explanatory."
  1167. NI believe that this must mean that the author intends them to be
  1168. Nmeaningful to himself.
  1169. N
  1170. NExamples:
  1171. N
  1172. N1. run-time error messages from C programs--these are QUITE machine
  1173. N    dependent; rather embarassingly so for an OS based on C as
  1174. N    Unix is, one would think.
  1175. N2. C compiler error messages, which describe every syntax error as
  1176. N    "syntax error," which may be enough for Dennis Ritchie, but
  1177. N    not for mere mortals. Another worthless error message is
  1178. N    that which describes the error in terms of compiler internals.
  1179. N    What does that have to do with the constructs the user knows?
  1180. N
  1181. NAlso quite helpful are the error codes one gets from make(1), such as
  1182. N"Error code 100".
  1183. N
  1184. NManual pages are frequently vague and casual: I recall the times when
  1185. NI had to try VERY hard to persuade someone that egrep(1) should treat
  1186. N'$' as just another character when it is not at the end of a regular
  1187. Nexpression, and in another case, that ed(1) permitted nested escaped
  1188. Nparentheses in regular expressions. Formal specifications of options
  1189. Nand accepted commands may not be useful to some readers, but they cer-
  1190. Ntainly are more useful to those who CAN understand them than vague
  1191. NEnglish prose.
  1192. N
  1193. N"Casualness" at times degenerates into flippancy or display of the
  1194. Nauthor's self-estimated cleverness: e.g.
  1195. N
  1196. N    "This brash one-liner intends to build a new library from
  1197. N    existing .o files." (This sentence, with absolutely NO other
  1198. N    explanation, accompanies an example of lorder(1).)
  1199. N
  1200. Nor
  1201. N
  1202. N    "This is an area where experience and informed courage
  1203. N    count for much."
  1204. N
  1205. NWhat good do these do to the reader who is trying to figure out
  1206. Nwhat on EARTH a command does?
  1207. N
  1208. NOptions on commands, in a sense documentation, don't have much chance
  1209. Nto indicate their meaning, since they're typically restricted to one
  1210. Nletter. (Some day I intend to write a phony command page containing
  1211. N
  1212. N    SYNOPSIS
  1213. N        cmd -[abcdefghijklmnopqrstuvwxyz] name ...
  1214. N
  1215. N    OPTIONS
  1216. N        -a    Use the 'a' option.
  1217. Netc.)
  1218. N
  1219. N                James Jones (ihuxl!jej)
  1220.  
  1221. SHAR_EOF
  1222. cat << \SHAR_EOF > rumor.jerry
  1223. From uucp Fri Aug 14 09:31:36 1981 remote from pur-ee
  1224. NAharpo.407
  1225. Nnet.general
  1226. Npur-ee!cincy!duke!mhtsa!harpo!jerry
  1227. NWed Aug 12 10:42:36 1981
  1228. Nforgery
  1229. N
  1230. NI suppose Steve should know better than I do, but why couldn't 
  1231. Na forger just uux (or execute directly)  rnews on a machine
  1232. Nwith the input indicating the item came from datamat!rumor. 
  1233. NIn fact couldn't you drop it in almost anywhere in the net?  
  1234. NPotentially the later can be detected because you will end up with 
  1235. Npeculiar headers (e.g. the item
  1236. Nappears to have passed through a machine twice.)  A little
  1237. Nmore cleverness, and a better understanding of netnews might
  1238. Ncircumvent even that problem, and in any event the only thing
  1239. Nyou could learn would be the machine rnews was executed on.  
  1240.  
  1241. SHAR_EOF
  1242. cat << \SHAR_EOF > rumor.mark
  1243. From uucp Sun Aug  9 15:54:14 1981 remote from pur-ee
  1244. NAucbvax.2534
  1245. Nfa.unix-wizards
  1246. Npur-ee!cincy!duke!decvax!ucbvax!mark
  1247. NWed Aug  5 08:47:18 1981
  1248. NThe truth about Unix
  1249. NI read your Unix flame with interest, but you seem to be
  1250. Nill informed about lots of things.  Obviously you are comparing
  1251. NV6 Unix with 3BSD, but you claim to be comparing "Unix" with
  1252. N"Berkeley Unix".  You credit Berkeley with things that are
  1253. Npart of V7 (getting rid of dsw, adding egrep and fgrep).
  1254. NI might compare your note with a message saying "don't go
  1255. Nout and buy a 1975 VW Rabbit - those are crummy cars because
  1256. Nthe 1979 Rabbit is better".  (No, I'm not complaining about
  1257. Nthe recent Rabbit note, this just happened to be a handy example).
  1258. NYou also claim that "Berkeley Unix is too big to fit ... on an 11/45".
  1259. NHogwash!  3BSD is a Vax distribution - it has a C compiler that
  1260. Ngenerates Vax object code, a kernel that knows the Vax memory management
  1261. Nand I/O conventions, and some other VAX specific things.  So are 4BSD
  1262. Nand 4.1BSD, which superceded 3BSD the same way V7 has superceeded V6.
  1263. NWe have lots of PDP-11's here at Berkeley, including 70's, a 45, and
  1264. Nseveral 40's.  Most of them run some version of Berkeley Unix.
  1265. NBigness is not important - we run vi 3.6 on a 40 in the virus lab.
  1266. NOf course, it is a different system than the one on the vax.
  1267. N"Berkeley Unix" is about as specific as "Chevrolet".
  1268. N
  1269. NYou also have to bear in mind that the various flavors of Unix have
  1270. Nevolved from one system years ago in Bell Labs.  In upgrading from
  1271. Nversion x to version x+1, issues of upward compatibility have to
  1272. Nbe taken into account.  If you changed /usr to /user, not only would
  1273. Nyou infuriate most of the users "What a pointless change!  Now I
  1274. Nhave to retype half my commands!" but you would break a large number
  1275. Nof programs that look for such places as /usr/spool/mail, /usr/dict/words,
  1276. Nand so on.  Things that are not obviously wrong and horrible tend
  1277. Nto get left alone.  (There are, unfortunately, exceptions.  index
  1278. Nand rindex are called strchr and strrchr in some versions of Unix.)
  1279.  
  1280. SHAR_EOF
  1281. cat << \SHAR_EOF > rumor.mark2
  1282. From uucp Mon Aug 10 22:18:44 1981 remote from pur-ee
  1283. NAucbvax.2598
  1284. Nfa.unix-wizards
  1285. Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards
  1286. NMon Aug 10 12:23:20 1981
  1287. NEUNUCH for large machines
  1288. N>From csvax.mark@Berkeley Mon Aug 10 12:15:19 1981
  1289. NCare to back up your flame about big machines with some reasons?
  1290. NIt does run on a Vax, Univac 1100, Amdahl, 370, and 3B.
  1291. N
  1292. NBell invests lots of effort into Unix - about as much as the rest
  1293. Nof the world.  But their version doesn't get released.
  1294. N
  1295. N    Mark
  1296. N
  1297. N
  1298.  
  1299. SHAR_EOF
  1300. cat << \SHAR_EOF > rumor.mo
  1301. From uucp Fri Aug 14 11:40:30 1981 remote from pur-ee
  1302. NAucbvax.2628
  1303. Nfa.unix-wizards
  1304. Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards
  1305. NTue Aug 11 11:41:44 1981
  1306. NFlaming Psychologists
  1307. N>From mo@LBL-UNIX Tue Aug 11 11:23:32 1981
  1308. NWell, you see what kind of stuff gets into DATAMATION.
  1309. NI don't understand these things: many of the criticisms
  1310. Nare right, but the facts are categorically wrong!  Unix
  1311. Ncould benefit from some "normalizaion" (the Software Tools
  1312. Nbenefitted greatly from having been written all at once, not
  1313. Nover the years), but the claim that Unix does not present
  1314. Na simple set of principles is the most incomprehensible
  1315. Nstatement he could have made!  That is ALL Unix does,
  1316. Nand that is precisely why he doesn't like it!  If he hates
  1317. Nit so much, why doesn't he go get an account on a TOPS-10 system
  1318. Nor since he is at UCSD, a UCSD PASCAL machine?
  1319. N    Well, enough of that.  I yield the floor to Lauren.
  1320. N    -Mike
  1321. N
  1322.  
  1323. SHAR_EOF
  1324. cat << \SHAR_EOF > rumor.nowicki
  1325. From uucp Fri Aug 14 11:57:07 1981 remote from pur-ee
  1326. NAucbvax.2660
  1327. Nfa.unix-wizards
  1328. Npur-ee!cincy!duke!decvax!ucbvax!unix-wizards
  1329. NWed Aug 12 11:44:04 1981
  1330. NMisunderstanding about Unix.....
  1331. N>From Nowicki@PARC-MAXC Wed Aug 12 11:35:03 1981
  1332. NI would like to make a few comments on Donald Norman paper on "The
  1333. NTruth About Unix".  The arguments for Consistency, Simple Models, and
  1334. NMnemonic Aids should all be Motherhood, even though many system
  1335. Ndesigners continue to ignore them. (If you want consistent
  1336. Nabbreviations you can use RSX-11M for a while where all commands are
  1337. Nthree letters; then you'll appreciate Unix.)
  1338. N
  1339. NThe major mistake that is made, however, is failing to consider the
  1340. Npossible multiple levels of abstraction.  For example, the title says
  1341. N"The user interface is horrid", but in reality every level of
  1342. Nabstraction has a "user interface," namely its interface to the next
  1343. Nhigher level.  The motto of the Unix was not "let the user beware," but
  1344. Nrather, "make the primitives simple but powerful, so as much as
  1345. Npossible can be done at higher levels".  With his arguments, you could
  1346. Nsay that all man-computer communication is doomed to failure because it
  1347. Nuses only ones and zeros, which are not very mnemonic.  The real
  1348. Nproblem is that an appropriate level for a systems programmer is not
  1349. Nappropriate for casual end users.  This conclusion is hinted at near
  1350. Nthe end of the paper, but it means that the paper should not be a
  1351. Ncriticism of Unix itself, but rather a criticism of how people use
  1352. NUnix.
  1353. N
  1354. NThe point that someone reading only the first few paragraphs of the
  1355. Npaper can miss is that the primitives in Unix CAN be either easily
  1356. Nreplaced or encapsulated, while almost no other systems provide this
  1357. Ncapability.  As an example, two Stanford students have implemented a
  1358. NTOPS-20 style command interpreter for Unix.  It has arbitrary
  1359. Nabbreviations, <escape> command completion, the question-mark help
  1360. Nfacility, and a delete-undelete-expunge facility.  Version numbers for
  1361. Nbackup files are implemented with a simple suffix to the file name.
  1362. N
  1363. NThe real shame is that the Unix users themselves are forced to make the
  1364. Nsystem as distributed from Western more humane, and thus every wheel
  1365. Ngets reinvented many times.  Luckily groups like Berkeley and Usenix
  1366. Nare trying to help this situation, but as indicated progress is very
  1367. Nslow.
  1368. N
  1369. N    -- Bill
  1370. N
  1371. N
  1372. N
  1373. SHAR_EOF
  1374. cat << \SHAR_EOF > rumor.swd
  1375. From uucp Fri Aug 14 11:37:48 1981 remote from pur-ee
  1376. NAduke.943
  1377. Nnet.general
  1378. Npur-ee!cincy!duke!swd
  1379. NThu Aug 13 09:23:28 1981
  1380. Nmore rumor rumors
  1381. NSome random thoughts on the datamat!rumor article.
  1382. N
  1383. N1) it did not enter the net at utzoo by having someone
  1384. N   there run rnews to submit it.  If they had, utzoo
  1385. N   would have seen the article.  If it entered at decvax,
  1386. N   it would not have been sent to utzoo -- the anti loop
  1387. N   code in news will not send an article to any system
  1388. N   on the return path.  Since the article did show up at
  1389. N   decvax, it entered the net there.
  1390. N
  1391. N2) what probably happened is that someone on the west coast
  1392. N   (Note the PDT in the date line) created the article
  1393. N   and ran  uux - decvax!rnews <fake article.
  1394. N
  1395. N3) there is no way to prevent this (short of an elaborate
  1396. N   public key encryption scheme).
  1397.  
  1398. SHAR_EOF
  1399. #    End of shell archive
  1400. exit 0
  1401.