Storm's Journal

* this was previously published at:
GNOME Documentation Project:


>> WHAT? Give me the summary.

A SINGLE MENUBAR AT THE TOP OF THE SCREEN that changes according to
the current context (window) instead of a menubar for every window.

Setting this as a User Default will improve Linux's ease-of-use.
Placing a single Menubar along the top of the screen:

1 - Makes it faster and easier to hit.
   (no mouse overshoot to slow things down)

2 - Eliminates clutter in the interface.

3 - Reduces ambiguity (and hence - user error).

--| DISCUSSION |--- 


In programming, if you compute a static variable within a loop - it is
highly innefficient - it slows down the loop. You optimize code by pulling
all the computes you can out of the loop and processing externally.

Interface design is the same. If a user has to click: A, B, C three hundred
times a day - it would make him 3 times as efficient to collapse those three
steps into a macro and execute with one keystroke. Making things less steps
for users optimizes the UI just like computing static variables outside the
loop optimizes code.

Since Menus are one of the most frequently used items in an operating system,
optimizing something small in this frequent behaviour equates to a Big savings
for the user over time. Therefore getting the menus right is one of the most
crucial and fundamental UI decisions that must be made by those implementing
a GUI. 

Linux currently imitates Windows' menubar implementation of putting a menubar
in every window. UI studies show this is not the optimal way of implementing
menus in an operating system. Linux can beat Windows in menubar GUI by providing
the option of a single context-sensitive menubar. There are several good reasons
for doing this:

          How easy it is to hit a target - virtual size.

          How easy it is to remember "where" a target is.

          Elimination of extraneous controls that are not
          relevant to the current task. 


The most important thing you can do for a user in Menubar implementation is
to reduce the possibility for error in selecting Menus. This can primarily
be achieved by reducing the number of dimensions along which a menu is
"targetted". Targetting means that in order to select from a menu,
you move your mouse in X and Y axes and have to hit or "target" -
a certain point in order to select from that menu.

When targeting an area of the screen for menus, obviously the larger the
target, the easier it is to hit -- but then the more wasteful the screen
real-estate. Since we don't want to have huge menus, there has to be a way
to make the targets SEEM larger.

One way to increase the virtual size is to "constrain" the selection
to prevent the mouse from overshooting the menus. When the menubar
is located along the top of the screen, menus seem "infinitely tall"
because the menubar along the top edge of the screen implicitly takes
advatage of the screen edge mouse constraint. Therefore menu hits have
a much larger virtual target, and become one-dimensional. The implicit
menu pinning provided by locating a menubar along the top of the screen
guarantees that you can't overshoot menus.

In contrast, placing the menubar inside a window allows an additional axis
of freedom for menu selection, and users must adapt to the system by slowing
down their menu selections in order to avoid overshooting the menubar. If
you watch someone try to hit a Windows menu, they often overshoot, then pull
back, and then zero in on the menu they want in a sort of spiral or
zig-zagging in on the target (or they are forced to move slower). It is much
easier to "fall off" the menu bar in this case, since it is always
a two dimensional move.

Changing the Linux menubar GUI to a single menubar will confer the
advantages of increasing user confidence and speed in menu selecting.
This is a way that LINUX menubar implementation can be better than
the Windows menubar implementation.


The second issue in hitting a menu target is whether it is stationary or
not (in its position). If the object is always in the same place -- then 
the user can become "programmed" to automatically go to certain 
places on the screen with the mouse, or their eyes without having to think 
about it. So by it being in a predictable place, the user can develop 
a "reflex" or what is called "muscle memory" -- 
because the muscles seem to act without intervention, you just "think" 
of a menu, and the mouse is already there. 

A menubar in a single predictable place - the TOP of the screen takes
advantage of this muscle memory. Making the menubar's single consistent placement
at the top of the screen makes sense since westerners tend to read from 
top-left to bottom right. It can be counted on to always be in the same place, 
and the most common menus (File, Edit) are in the expected position (and order). 
Muscle memory is maximized, target placement is static, and users 
are very happy once trained. 

Windows menus are never in a predictable place, because they move with the
window. Zooming the window will put the menubar near the top of the 
screen -- but you can not guarantee that your window will always be zoomed, 
so you can't really build your reflexes as reliably. 

With a single menubar, Linux users will be happier and more productive users, 
because objects in the GUI will follow the same persistence they have already
learned in the real world -- stay where you left them, and menus too are always 
in the same place. Users can expect and depend on them being in a consistent location. 
This conforms to good UI principles. 


 'Perfection is achieved not when there is nothing more to add,
  but rather when there is nothing more to take away.'

  (Antoine de Saint-Exupery)

You can increase the apparent simplicity and focus of an OS simply by 
consolidating five menubars into one.

Instead of an additional menubar for every open application window,
we can simplify the design by consolidating them into a single menubar
that changes context (i.e. the menubar changes with the active document window). 

Focus is when the UI changes to provide only the tools needed for the current
context or task - while those things that are inappropritae to a given task
fade into the background. This sense of appropriateness is what makes a UI
more Elegant.

A single menubar instead of many conforms to the first essential principle
of good UI design:

  'everything should be as simple as possible, but no simpler'

Thus, we can derive that simplicity and elegance in the UI too
consists of eliminating the inessential, and keeping the essential. 

By displaying only the menus that are appropriate to the current
context or task at hand (keeping the essential), you eliminate visual
clutter in the UI (the inessential), and keep the user focused. 
Presenting more options (especially ones that aren't relevant for a 
current tool or context) scatters the user. When the user clicks on 
another tool or window, the menubar updates appropriately - the 
menubar for that app. 

Furthermore, extra screen real-estate is taken up by putting an extra menubar
in each window. This is really adding CLUTTER to the screen for no good reason, 
as most of the menus are really not appropriate to the current context (i.e. 
active application window) and - lets face it - you can only click in one place
at a time anyways. 

Elegance in the GUI is another way that LINUX can win over Windows - which
only allows menus in every window, and doesn't allow the option of having
a single context-sensitive menubar. 


Most UI studies confirm that a single context sensitive menubar is
more effective and elegant than multiple menubars (one per window)
in providing the most satisfactory user experience.

Linux has a very powerful and flexible core, and its UI has come a long
way with Gnome & GTK - their endless customisability delights many of
the hacker among us. But if you want people to use Linux - you
have to supply good defaults that increase the apparent simplicity of
the OS. Experienced users will always know how to reconfig the menubars
to their liking - but the default for those who don't should always be:
simpler, cleaner. Nobody fiddles with 7/8-bit parity settings on their
ATA modem anymore - that system should just dial and kick-in with a
good default (thankfully - 8 bits prevailed over 7!).

The overall perception of Linux's GUI-friendiness can be greatly enhanced
by providing clean simple defaults. A lot can be accomplished by simply
setting shipping systems (like GTK & Gnome) to default to a single menubar.
Copying the Windows menubar implementation simply perpetrates the status quo.

As defaults tend to become enshrined over time, adopting a single
context-sensitive menubar at the top of the screen would be of great
long-term benefit of the user experience for the Linux Community.
I think this is one way which can help Linux differentiate itself
from Windows, and thereby gain an advantage and win.

Therefore I urge the adoption of a Single Menubar Default
for both Gnome & GTK, and for any distros that include them.

Respectfully submitted, November 3, 1998
John Roland Penner.

--| References |--- 

This material is a synopsis of an excellent article sourced by: David K. Every.
Any citation should include:

  Menu Targeting - How easy or hard are menus to hit and use?
  By: David K. Every, Copyright 1998

See Also: 

  General Interface Design Info

Back to Storm's Journal

SUBMIT AN ARTICLE posted: november 3, 1998 revised: march 23, 2005