273 lines
9.5 KiB
Markdown
273 lines
9.5 KiB
Markdown
[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
|
||
|