ARTICLES IN THE BOOK
A GUIDE TO WINDOWS VISTA
This article is from:
All text is available under the terms of the GNU Free Documentation License: http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License
A graphical user interface (GUI) allows for interaction with a computer or other media formats which employs graphical images, widgets, along with text to represent the information and actions available to a user. The actions are usually performed through direct manipulation of the graphical elements.
The precursor to GUIs was invented by researchers at the Stanford Research Institute, led by Doug Engelbart. They developed the 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. As a result, 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. PUIs employ a pointing device in addition to a keyboard. These aspects of PUIs can be emphasized by using the alternative acronym WIMP, which stands for Windows, Icons, Menus and Pointing device.
The GUIs familiar to most people today are the Microsoft Windows, Mac OS X, or the X Window System interfaces. Their applications originated at the Xerox PARC (Palo Alto Research Center) in the late 1970s and was copied by Apple who used it in their first Macintosh computers. Later IBM and Microsoft borrowed many of Apple's ideas to develop the Common User Access specifications, that formed the basis of the user interface found in Microsoft Windows, IBM OS/2 Presentation Manager, and the Unix Motif toolkit and window manager. These ideas evolved to create the interface found in current versions of the Windows operating system, as well as in Mac OS X and various desktop environments for Unix-like systems. Thus most current graphical user interfaces have largely common idioms.
GUI design is an important adjunct to application programming. Its goal is to enhance the usability of the underlying logical design of a stored program. The visible graphical interface features of an application are sometimes referred to as "chrome". They include graphical elements (widgets) that may be used to interact with the program. Common widgets are: windows, buttons, menus, and scroll bars. Larger widgets, such as windows, usually provide a frame or container for the main presentation content such as a web page, email message or drawing. Smaller ones usually act as a user-input tool.
The widgets of a well-designed system are functionally independent from and indirectly linked to program functionality, so the GUI can be easily customized, allowing the user to select or design a different skin at will. See Model-view-controller for more information.
Rare kinds of GUI including 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 (ZUI) which is a logical advancement on the GUI, blending some 3D movement with 2D or "2.5D" 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 and 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.
GUIs were introduced in reaction to the steep learning curve of command line interfaces (CLI), text-based user interfaces that require commands to be typed on the keyboard. Since the command words in CLIs are often numerous, very complicated operations can be completed using a relatively short sequence of words and symbols. This allows for great efficiency, once the many commands are learned, but reaching this level takes some time because the command words are not easily discoverable. WIMPs ("window, icon, menu, pointing device"), on the other hand, present the user with numerous widgets that represent and can trigger some of the system's available commands.
WIMPs extensively use modes as the meaning of all keys and clicks on specific positions on the screen are redefined all the time. CLIs use modes only in the form of a current directory.
Most modern operating systems provide both a GUI and some level of a CLI, although the GUIs usually receive more attention. The GUI is usually WIMP-based, although occasionally other metaphors surface, such as those used in Microsoft Bob, 3dwm or File System Visualizer or FSV.
Applications may also provide both interfaces, and when they do the GUI is usually a WIMP wrapper around the CLI version. This is especially common with applications designed for Unix-like operating systems. 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. Designing programs this way also allows users to run the program non-interactively, such as in a shell script.
See main article: Text user interface
For commonly-available computer displays, 3D is a misnomer. Their displays are two-dimensional. Three-dimensional images are projected on them in two dimensions. Since this technique has been in use for many years, the recent use of the term 3D must be considered a declaration by equipment marketers that the speed of 3D to 2D projection is adequate to use in standard GUIs.
3D GUIs are very common in science fiction literature and movies, such as in Jurassic Park, which features Silicon Graphics' 3D Filemanager, "File system navigator" , an actual file manager that never got any widespread use as the user interface of a Unix computer.
In science fiction, 3D user interfaces are often immersible environments like William Gibson's Cyberspace or Neal Stephenson's Metaverse. 3D graphics is currently mostly used in computer games, art and computer aided design. There have been several attempts at making 3D desktop environments like Sun's Project Looking Glass or SphereXP from Sphere Inc. A 3D computing environment could possibly be used for collaborative work, for example scientists may study 3D models of molecules in a virtual reality environment or engineers may work on assembling a 3D model of an airplane. This is a goal of the Croquet project  and Project Looking Glass by Java. 
3D is likely to take a larger part in mainstream operating systems such as the upcoming Mac OS X v10.5 "Leopard" and Windows Vienna. However current Linux and Mac operating systems have already begun implementing three dimensional rendering, mainly in the form of eye candy. This is evident in Apple's use of Quartz Extreme within Mac OS X Tiger, which uses OpenGL to render extraordinary three dimensional animations. For example, user switching is in the form of a rotating cube and window management in the form of Exposé, which resizes windows on-the-fly, whilst updating live content such as playing QuickTime movies. Furthermore, this technology is used in programs such as Dashboard and Front Row, which zoom into view, feature bright colors and interesting animations. Linux operating systems, such as Ubuntu, have also begun implementing basic 3D user interfaces through the XGL architecture, which, like Quartz Extreme in Mac OS X, uses OpenGL to perform tasks such as user switching in a similar fashion.
Another branch in the 3D desktop environment is the 3D GUIs that take the desktop metaphor a step further, like the BumpTop, where a user can manipulate documents and windows as if they were "real world" documents, with realistic movement and physics. With the current pace on 3D and related hardware evolution, we can expect that projects such these reach an operational level soon.