GNOME Shell Design Principles
Take responsibility for the user's experience
- Design with understanding that a user's needs change frequently while they work and play.
Principle of non-preemption
"Individual interactive programs operate in a non-intrusive manner with respect to the user's activities. The system does not usurp the attention and prerogatives of the user. A program responds to the user's stimuli, but then quietly retains its context and logical state until the user elects to interact with the program again..." - From Deutsch & Taft 1980 "Requirements for an experimental programming environment"
- "...Human attention is the most valuable and scarcest commodity in human computer interaction." - From Horvitz, Jacobs, Hovel Attention-Sensitive Alerting
Principle of Least Astonishment
Or "uniformity in command interface" - From Deutsch & Taft 1980 Requirements for an experimental programming environment
Design a self-teaching interface for beginners, and an efficient interface for advanced users, but optimize for intermediates
- Balance learnability and discoverability with utility
Don't unnecessarily rely on metaphor
- Especially mechanical-age, which may be antiquated to many users, and eventually all users.
Less is More
- Reduce visual, memory, intellectual, and motor work (and complexity)
Be considerate and forgiving
- It is better to offer to undo a mistake than to ask a user if they are "sure."
The technology should act as a mediator
- Be the vehicle, not the destination
- Strive for transparency