Operating System Design/Graphical user interfaces
GUIs display visual elements such as icons, windows, and other gadgets. The precursor to GUIs was invented by researchers at the Stanford Research Institute (led by Doug Engelbart) with the development and use of text-based hyperlinks manipulated with a mouse for the On-Line System. The concept of hyperlinks was further refined and extended to graphics by researchers at Xerox PARC, who went beyond text-based hyperlinks and used GUIs as the primary interface for the Xerox Alto computer. Most modern general-purpose GUIs are derived from this system. For this reason some people call this class of interface a PARC User Interface (PUI) (note that PUI is also an acronym for perceptual user interface). The PUI consists of graphical widgets (often provided by widget toolkit libraries) such as windows, menus, radio buttons, check boxes, and icons, and employs a pointing device (such as a mouse, trackball, or touchscreen) in addition to a keyboard. Those aspects of PUIs can be emphasized by using the alternative acronym WIMP, which stands for Windows, Icons, Menus, and Pointing device.
The GUI familiar to most of us today in either the Mac or the Windows operating systems and their applications originated at the Xerox Palo Alto Research Laboratory in the late 1970s. Apple used it in their first Macintosh computers, followed by Atari with their ST range, and Commodore with the Amiga. Later, Microsoft used many of the same ideas in their first version of the Windows operating system for IBM-compatible PCs. Examples of systems that support GUIs are Mac OS, Microsoft Windows, NEXTSTEP and the X Window System. The latter is extended with toolkits such as Motif (CDE), Qt (KDE) and GTK+ (GNOME).
Types of GUIs
GUIs that are not PUIs are most notably found in computer games, and advanced GUIs based on virtual reality are now frequently found in research. Many research groups in North America and Europe are currently working on the Zooming User Interface or ZUI, which is a logical advancement on the GUI, blending some 3D movement with 2D or "2 and a half D" vectorial objects. Some GUIs are designed for the rigorous requirements of vertical markets. These are known as "application specific GUIs." One example of such an application specific GUI is the now familiar touchscreen point of sale software found in restaurants worldwide and being introduced into self-service retail checkouts. First pioneered by Gene Mosher on the Atari ST computer in 1986, the application specific touchscreen GUI has spearheaded a worldwide revolution in the use of computers throughout the food & beverage industry and in general retail. Other examples of application specific touchscreen GUIs include the most recent automatic teller machines, airline self-ticketing, information kiosks and the monitor/control screens in embedded industrial applications which employ a real time operating system (RTOS). The latest cell phones and handheld game systems also employ application specific touchscreen GUIs.
GUI vs. CLI
GUIs were introduced in reaction to the steep learning curve of Command Line Interfaces (CLI), text-based user interfaces requiring commands to be typed on the keyboard. Since the command words in CLIs are usually numerous and composable, very complicated operations can be invoked using a relatively short sequence of words and symbols. This leads to high levels of efficiency once the many commands are learned, but reaching this level can take a while because the command words aren't easily discoverable. WIMPs, on the other hand, present the user with numerous widgets that represent and can trigger some of the system's available commands. Most modern operating systems provide both a GUI and a CLI, although the GUIs usually receive more attention. The GUI is usually WIMP-based, although occasionally other metaphors surface, such as Microsoft Bob, 3dwm or (partially) FSV. Applications may also provide both interfaces, and when they do the GUI is usually a WIMP wrapper around the CLI version. The latter used to be implemented first because it allowed the developers to focus exclusively on their product's functionality without bothering about interface details such as designing icons and placing buttons. Nowadays, the GUI is no longer considered an optional part of most applications because users have grown accustomed to the ease of use provided by their familiar GUIs.