Let’s start with a history lesson. Like we did in the article on the icon, we need to take a look at Ivan Sutherland’s Sketchpad, the world’s first computer program that, while lacking a graphical user interface, was the first program to actually create a need for a graphical user interface in the first place. Up until that time, 1963, computers were massive mainframes run in batch mode, with punch cards – these were operated by highly trained scientists and computer experts, and had virtually no form of abstraction. Abstraction wasn’t needed, since the people operating these computers were fully educated in how these machines worked.
Sketchpad changed this. Sketchpad was a drawing program (some even call it the father of all CAD programs) that didn’t require extensive knowledge on how to write code or how to feed CLI commands into the computer. It used a light pen and a keyboard with 40 commands like “DRAW”, “MOVE”, and “DELETE”. While Sketchpad had no GUI, it did create, for the first time, the need for a GUI. It implies a graphical user interface, but it doesn’t actually have it yet.
The need was there, now all we needed was something to fill this newly created void. The first steps were taken by Doug Engelbart and his On-line System (NLS), which incorporated windows and the very first mouse. A number of people who had worked on the NLS later started working at Xerox’ famous Palo Alto Research Center, where they would develop the first, actual, really-really graphical user interface that we still more or less use today (we do have transparency and wobbliness now, though): the Xerox Alto, an experimental computer that never made its way to the market. The commercial successor to the Alto, the Star, would eventually set many of the conventions we take for granted today: the desktop metaphor, and that odd acronym ‘WIMP’ – window, icon, menu, pointing device.
The Star introduced the first menus, but the original Macintosh expanded the concept greatly, delivering the prototypical menu: the pull-down menu (the one seen in menu bars). The menu would become one of the mainstays of the graphical user interface, surviving all the way up until today as one of the major elements of the GUI. The menu did change over the years, though, and different types of menus would arise as well. We’ll take a look at various types of menus, some characteristics, and we’ll end with some of the recent developments concerning the menu.
An important, but rather confusing distinction is that between a pop-up and a pull-down menu, as the definitions for the two differ per graphical environment. In the Mac OS and Mac OS X, a pop-up menu is actually a drop-down list, while in most other graphical environments, pop-up is synonymous with the context sensitive menu. Both meanings are technically wrong, since there is no law that states that a context menu must always be a pop-up menu. Interestingly enough though, the context menu was invented at PARC, and first implemented on the Xerox Alto. Showing that even the mighty people at PARC can be wrong, they called their context menu – by lack of a better term at the time, probably – pop-up menu.
Simply put, a pop-up menu appears out of nowhere, whereas a pull-down menu unfolds out of a button on a menu bar or toolbar. This is merely a distinction based on method of appearance, and doesn’t really say anything about what the menu should or shouldn’t do. A context menu can easily be a pull-down menu – it’s just that it’s quite rare.
The second distinction is that between a static menu and the context sensitive menu. Invented at PARC for the Alto, context menus appeared in all graphical operating environments soon afterwards (with key pioneers being NEXTSTEP and RISC OS). The key difference between a context menu and a static menu is that the former changes its contents depending on the state of the system, while the latter remains the same regardless of the state of the system (save for greying out inactive items). In almost all modern environments, the context sensitive menu is invoked by right-clicking, and usually contains easy access to a set of often-used commands. The unofficial rule is that a context menu may never be the only way to access a certain feature, since that would seriously hinder discoverability. A context menu is a group of commands also accessible via other means such as the menu or toolbars; it’s not a replacement for either.
A far less common type of menu is the pie menu, a type of (context sensitive) pop-up menu which presents its options in a radial layout around the cursor, which is supposed to be better since it takes Fitts’ Law into account. Despite its advocated advantages over linear menus, pie menus remain a curiosity, mostly reserved for some game interfaces.