hn-classics/_stories/2004/8591072.md

273 lines
9.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[Source](http://www.catb.org/~esr/writings/taouu/html/ "Permalink to The Art of Unix Usability")
# The Art of Unix Usability
| ----- |
| The Art of Unix Usability |
|   |   |  [Next][1] |
* * *
# The Art of Unix Usability
### Eric Steven Raymond
    `<[esr@thyrsus.com][2]>`
    
### Rob W. Landley
    `<[rob@landley.net][3]>`
    
Copyright © 2004 Eric S. Raymond
This book and its on-line version are distributed under the terms of the Creative Commons Attribution-NoDerivs 1.0 license, with the additional proviso that the right to publish it on paper for sale or other for-profit use is reserved to Pearson Education, Inc. A reference copy of this license may be found at <http://creativecommons.org/licenses/by-nd/1.0/legalcode>.
| ----- |
| **Revision History** |
| Revision 0.1 | April 18 2004 | esr |
| Start of book | | |
* * *
## Dedication
 
**Table of Contents**
[An Invitation to Usability][1]
[1\. Premises: The Rules of Interface Design][4]
:
[Usability Metrics][5]
[Usability and the Power Curve][6]
[The Rules of Usability][7]
:
[Rule of Bliss: Allow your users the luxury of ignorance.][8]
[Rule of Distractions: Allow your users the luxury of inattention.][9]
[Rule of Flow: Allow your users the luxury of attention.][10]
[Rule of Documentation: Documentation is an admission of failure.][11]
[Rule of Least Surprise: In interface design, always do the least surprising thing.][12]
[Rule of Transparency: Every bit of program state that the user has to reason about should be manifest in the interface.][13]
[Rule of Modelessness: The interface's response to user actions should be consistent and never depend on hidden state.][14]
[Rule of Seven: Users can hold at most 7±2 things at once in working storage.][15]
[Rule of Reversibility: Every operation without an undo is a horror story waiting to happen.][16]
[Rule of Confirmation: Every confirmation prompt should be a surprise.][17]
[Rule of Failure: All failures should be lessons in how not to fail.][18]
[Rule of Silence: When a program has nothing surprising to say, it should say nothing.][19]
[Rule of Automation: Never ask the user for any information that you can autodetect, copy, or deduce.][20]
[Rule of Defaults: Choose safe defaults, apply them unobtrusively, and let them be overridden if necessary.][21]
[Rule of Respect: Never mistake keeping things simple for dumbing them down, or vice-versa.][22]
[Rule of Predictability: Predictability is more important than prettiness.][23]
[Rule of Reality: The interface isn't finished till the end-user testing is done.][24]
[Comparison with the Nielsen-Molich Evaluation Method][25]
[Identifying with the User Experience][26]
[2\. History: A Brief History of User Interfaces][27]
:
[Batch Computing][28]
[Command-Line Interfaces][29]
[What's Old is New Again][30]
[Vector Graphics, Video Games, and NLS/Augment][31]
[The first GUIs][32]
[The X Windowing System][33]
[The Color Convergence][34]
[GUIs in the era of commodity hardware][35]
[The Unix resurgence][36]
[Beyond the WIMP?][37]
[3\. Programming: GUI Construction in the Unix Environment][38]
:
[Overview][39]
[Programming with the X Server][40]
[Toolkit libraries and bindings][41]
[Components of GUI environments][42]
:
[Higher-Level Widgets with Consistent Policy][43]
[Window Managers][44]
[An interface to ICCCM, and possibly an object broker][45]
[Sound Support][46]
[Other Services for Application Programming][47]
[Choosing a Desktop][48]
[Interface styles and Programming Models][49]
[The X Programming Model][50]
:
[Events: the Input Side][51]
[Rendering: the Output Side][52]
[X Programming at the Application Level][53]
[Scripting Languages, Code Generators, and GUI Best Practices][54]
[4\. Wetware: The Human Side of Interfaces][55]
:
[Novelty, Consciousness, and the Single Locus of Attention][56]
[Real Time Costs][57]
[Hick's Law and Fitts's Law][58]
[Habituation, Expertise, and Undo Operations][59]
[Interfaces and Flow][60]
[Buffering and Human Memory][61]
[Designing around Characters and Stories][62]
:
[Designing With Personas][63]
[5\. Examples: The Good, the Bad, and the Ugly][64]
:
[Case study: CUPS configuration][65]
[Case study: xmms, xine, and totem][66]
[6\. Reality: Debugging and Testing User Interface Designs][67]
[A. Design Rule Reference][68]
[B. Bibliography][69]
:
[Bibliography][70]
**List of Figures**
2.1. [IBM 029 card punch.][71]
2.2. [ASR-33 Teletype.][72]
2.3. [VT100 terminal.][73]
2.4. [The Xerox Alto.][74]
2.5. [Alto running the Executive file browser (c.1974).][75]
2.6. [The Xerox Star (1981).][76]
2.7. [Screen shot from a Star (1981).][77]
2.8. [Kickstart on the Amiga 1000 (1985).][78]
2.9. [Early version of the Macintosh Finder (1985).][79]
2.10. [Windows 1.0 (1985).][80]
2.11. [OpenLook (c.1989).][81]
2.12. [NeXTstep (1988).][82]
2.13. [Windows 3.0 and 3.1 (1992).][83]
2.14. [Windows 95 (1995).][84]
2.15. [Microsoft Bob home screen (1995).][85]
3.1. [Comparing the X stack to a monolithic graphics system.][86]
5.1. [CUPS configuration: the saga begins][87]
5.2. [CUPS configuration: the Queue Name panel][88]
5.3. [CUPS configuration: the Queue Type panel][89]
5.4. [CUPS configuration: the stone wall][90]
5.5. [xmms][91]
5.6. [xine-ui][92]
5.7. [gxine][93]
**List of Tables**
3.1. [Summary of X Toolkits.][94]
4.1. [Timings for various interface actions][95]
* * *
| ----- |
|   |   |  [Next][1] |
|   |   |  An Invitation to Usability |
[1]: http://www.catb.org/pr01.html
[2]: mailto:esr%40thyrsus.com
[3]: mailto:rob%40landley.net
[4]: http://www.catb.org/premises.html
[5]: http://www.catb.org/ch01s01.html
[6]: http://www.catb.org/ch01s02.html
[7]: http://www.catb.org/ch01s03.html
[8]: http://www.catb.org/ch01s03.html#rule-bliss
[9]: http://www.catb.org/ch01s03.html#rule-distractions
[10]: http://www.catb.org/ch01s03.html#rule-flow
[11]: http://www.catb.org/ch01s03.html#rule-documentation
[12]: http://www.catb.org/ch01s03.html#rule-surprise
[13]: http://www.catb.org/ch01s03.html#rule-transparency
[14]: http://www.catb.org/ch01s03.html#rule-consistency
[15]: http://www.catb.org/ch01s03.html#rule-seven
[16]: http://www.catb.org/ch01s03.html#rule-reversibility
[17]: http://www.catb.org/ch01s03.html#rule-confirmation
[18]: http://www.catb.org/ch01s03.html#rule-failure
[19]: http://www.catb.org/ch01s03.html#rule-silence
[20]: http://www.catb.org/ch01s03.html#rule-automation
[21]: http://www.catb.org/ch01s03.html#rule-defaults
[22]: http://www.catb.org/ch01s03.html#rule-non-condescension
[23]: http://www.catb.org/ch01s03.html#rule-predictability
[24]: http://www.catb.org/ch01s03.html#rule-reality
[25]: http://www.catb.org/ch01s04.html
[26]: http://www.catb.org/ch01s05.html
[27]: http://www.catb.org/ch02.html
[28]: http://www.catb.org/ch02s01.html
[29]: http://www.catb.org/ch02s02.html
[30]: http://www.catb.org/ch02s03.html
[31]: http://www.catb.org/ch02s04.html
[32]: http://www.catb.org/ch02s05.html
[33]: http://www.catb.org/ch02s06.html
[34]: http://www.catb.org/ch02s07.html
[35]: http://www.catb.org/ch02s08.html
[36]: http://www.catb.org/ch02s09.html
[37]: http://www.catb.org/ch02s10.html
[38]: http://www.catb.org/ch03.html
[39]: http://www.catb.org/ch03s01.html
[40]: http://www.catb.org/ch03s02.html
[41]: http://www.catb.org/ch03s03.html
[42]: http://www.catb.org/ch03s04.html
[43]: http://www.catb.org/ch03s04.html#id3384133
[44]: http://www.catb.org/ch03s04.html#id3384142
[45]: http://www.catb.org/ch03s04.html#id3383071
[46]: http://www.catb.org/ch03s04.html#id3383117
[47]: http://www.catb.org/ch03s04.html#id3383134
[48]: http://www.catb.org/ch03s05.html
[49]: http://www.catb.org/ch03s06.html
[50]: http://www.catb.org/ch03s07.html
[51]: http://www.catb.org/ch03s07.html#id3385104
[52]: http://www.catb.org/ch03s07.html#id3384661
[53]: http://www.catb.org/ch03s08.html
[54]: http://www.catb.org/ch03s09.html
[55]: http://www.catb.org/wetware.html
[56]: http://www.catb.org/ch04s01.html
[57]: http://www.catb.org/ch04s02.html
[58]: http://www.catb.org/ch04s03.html
[59]: http://www.catb.org/ch04s04.html
[60]: http://www.catb.org/ch04s05.html
[61]: http://www.catb.org/ch04s06.html
[62]: http://www.catb.org/ch04s07.html
[63]: http://www.catb.org/ch04s07.html#id3389857
[64]: http://www.catb.org/ch05.html
[65]: http://www.catb.org/ch05s01.html
[66]: http://www.catb.org/ch05s02.html
[67]: http://www.catb.org/ch06.html
[68]: http://www.catb.org/apa.html
[69]: http://www.catb.org/apb.html
[70]: http://www.catb.org/apb.html#id3394919
[71]: http://www.catb.org/ch02s01.html#IBM029
[72]: http://www.catb.org/ch02s02.html#ASR33
[73]: http://www.catb.org/ch02s02.html#VT100
[74]: http://www.catb.org/ch02s05.html#Alto
[75]: http://www.catb.org/ch02s05.html#AltoExecutive
[76]: http://www.catb.org/ch02s05.html#Star
[77]: http://www.catb.org/ch02s05.html#StarScreen
[78]: http://www.catb.org/ch02s05.html#Amiga
[79]: http://www.catb.org/ch02s05.html#MacFinder
[80]: http://www.catb.org/ch02s05.html#Windows1
[81]: http://www.catb.org/ch02s06.html#OpenLook
[82]: http://www.catb.org/ch02s07.html#NeXTstep
[83]: http://www.catb.org/ch02s08.html#Windows3
[84]: http://www.catb.org/ch02s08.html#Windows95
[85]: http://www.catb.org/ch02s08.html#Bob
[86]: http://www.catb.org/ch03s01.html#X_layers
[87]: http://www.catb.org/ch05s01.html#CUPS1
[88]: http://www.catb.org/ch05s01.html#CUPS2
[89]: http://www.catb.org/ch05s01.html#CUPS3
[90]: http://www.catb.org/ch05s01.html#CUPS4
[91]: http://www.catb.org/ch05s02.html#xmms
[92]: http://www.catb.org/ch05s02.html#xine
[93]: http://www.catb.org/ch05s02.html#gxine
[94]: http://www.catb.org/ch03s03.html#x_toolkits
[95]: http://www.catb.org/ch04s02.html#timings