|
| 1 | +--- |
| 2 | +title: Thoughts on Don Norman’s Early Report - The Trouble with Unix |
| 3 | +publishDate: 10 Dec 2023 |
| 4 | +description: My thoughts on Don Norman's Unix report & designing an interface without a GUI |
| 5 | +--- |
| 6 | + |
| 7 | + |
| 8 | +## Focus Areas & Key Takeaways |
| 9 | + |
| 10 | +The core argument is that while the Unix command line is elegant in its underlying system design, its user interface is not. Norman points out several inconsistencies |
| 11 | + |
| 12 | +* Syntax rules in the command language vary |
| 13 | +* Function names often don’t align with their intended purpose |
| 14 | +* Behaviors are hidden from the user, making the system’s model difficult to grasp |
| 15 | + |
| 16 | +For example, when a user first opens the command line, they’re greeted with nothing but a blank screen. It assumes prior knowledge of what to do. Even typing help often overwhelms users with exhaustive listings rather than guiding them toward possibilities |
| 17 | + |
| 18 | +Unix is undeniably powerful, but Norman argues that its **interface was neglected**, leaving users struggling to bridge the gap between capability and usability. |
| 19 | + |
| 20 | + |
| 21 | +## Case in point: the `cat` command |
| 22 | + |
| 23 | +One well-known inconsistency is with the `cat` command. Designed for concat*enating two files, its side effect—printing the contents of a single file—led users to adopt it as a file viewer (`cat <filename>`). While efficient from a systems perspective (no need to create a new command), this introduces confusion. The intention of the command doesn’t match its usage, raising the cognitive load for users. |
| 24 | + |
| 25 | +This illustrates Norman’s broader point: Unix prioritizes optimal use of primitives over user comprehension, resulting in a steeper learning curve and a less friendly experience. |
| 26 | + |
| 27 | + |
| 28 | +## Feedback (or the lack thereof) |
| 29 | + |
| 30 | +Another critical flaw is the command line’s limited interactive feedback. Unlike a human conversation, it rarely acknowledges context or warns users about irreversible actions. For example |
| 31 | + |
| 32 | +* Quitting an editor without saving may delete work, yet no warning appears |
| 33 | +* Running destructive commands offers no safety net unless explicitly coded |
| 34 | + |
| 35 | +These design decisions might benefit scripting and automation but often punish interactive users |
| 36 | + |
| 37 | + |
| 38 | +## Aliases as a design hack |
| 39 | + |
| 40 | +A partial solution emerged in the form of aliases, which allow users to customize command names and workflows to suit their mental models. While useful, this is essentially a workaround—shifting the burden of good design from system architects to the end user. |
| 41 | + |
| 42 | +Norman’s Three Principles for System Design |
| 43 | + |
| 44 | +## Norman emphasizes three timeless principles: |
| 45 | + |
| 46 | +* **Be Consistent:** A coherent set of rules should be applied across all commands and contexts. |
| 47 | + |
| 48 | +* **Provide an Explicit Model:** Users build mental models of systems. If none is provided, they’ll invent their own—often incorrectly. |
| 49 | + |
| 50 | +* **Provide Mnemonic Aids:** Use familiar, memorable terms to help users retain commands more easily. |
| 51 | + |
| 52 | +## Broader Reflections |
| 53 | + |
| 54 | +Norman’s short paper feels less like a critique of software and more like an exploration of designing a language. Communicating with the command line is akin to conversing in a protocol, which in turn recalls the movie Arrival, where the structure of language itself becomes a tool for thought |
| 55 | + |
| 56 | +And here’s a fascinating thought: with the rise of large language models like ChatGPT, the way we communicate with computers is shifting dramatically. Perhaps these systems can finally deliver the conversational feedback loops Unix lacked |
| 57 | + |
| 58 | +## Links |
| 59 | + |
| 60 | +- [🔗 How to design for the commandline (Youtube)](https://www.youtube.com/watch?v=zsjeZZVAk1E) |
| 61 | +- [🔗 The paper (PDF file)](https://people.computing.clemson.edu/~jmarty/courses/LinuxStuff/NormanTheTroublewithUnix.ScanofDatamation1981.pdf) |
0 commit comments