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

Projects/GnomeShell/Design/Principles (last edited 2013-11-22 17:00:11 by WilliamJonMcCann)