I should probably wait five years to write this article, so that I could frame it as a eulogy on the death of the Graphical User Interface (GUI). Not too long from now, we will interact with highly intelligent computerized agents using speech, gestures, and wearable devices. But right now, the GUI is still the most common way to interact with a computer, even if keyboards and mouse clicks are augmented by swipes, voice recognition, and autofill. The X Window System, in addition to presenting an important and historic GUI, also exemplified other important trends that made modern computing possible.
This article explains the role of the X Window System when it was first developed in the 1980s, and today. I highlight three advanced traits:
- X was highly portable, so that applications written for X could run on virtually any Unix system, on BSD, on GNU/Linux, and on the Mac.
- X allowed distributed computing. You could run graphical applications hosted on another computer, displaying them on your local desktop.
- X was customizable to an almost limitless extent. This made X a platform for sophisticated interfaces such as KDE and GNOME.
Raising and Moving
Of course, you can accomplish a lot on a computer that has no GUI—moon landings have been achieved. The scientists and engineers who sat at early desktop systems used only the command line, and found it a great advance to move to full-screen programs. The Unix curses library could take over your screen and let you move around a cursor with arrow keys to carry out everyday tasks such as editing text (including the fine skill of creating ASCII art), reading mail, and navigating menus. The first web browsers were plain text, full-screen programs, and many of us still do most of our work today in a terminal program.
But in the 1980s it was becoming clear that GUIs were good for more than playing "Spacewar!" or helping your parents use one of the new-fangled PCs. CAD/CAM, a respected and central part of professional design, required the manipulation of images. Scientists had known for a long time that they could learn more by viewing a graph than by scanning tables of numbers. The CAD/CAM designer or scientist might have even yearned to take an occasional break to view a cat photo.
Individual vendors tried to fill this need. The best-known GUIs for Unix systems before X were SunView and NeWS, which were developed by the leading Unix vendor of the 1980s, Sun Microsystems. According to Keith Packard, a central developer on the X Window System who reviewed this article, "Pretty much every workstation vendor had a proprietary window system. Digital Equipment Corporation had VWS/UIS, Apollo Computer had Domain, etc.” (Figure 1)
Had the vendors tried to collaborate, though, the result would probably have been chaos in the marketplace. One can deduce this sad verdict from another article I wrote for FOSSlife, describing the fiasco that took place when Unix vendors tried to cooperate in the Open Software Foundation to create portable software. (But admittedly, this venture did create a very successful toolkit called Motif on top of the X Window System.)
The X Window System came not from industry but from the Massachusetts Institute of Technology (MIT). Packard says, "X was started by Bob Scheifler, a researcher with Barbara Liskov's group at MIT Laboratory for Computer Science. It was later adopted by Project Athena for broader use by MIT.”
MIT was persuaded by many in the X community to eventually release X under a very permissive free license. One could say they made a gift to the world. Development of the X Window System later passed through other organizations and is now the responsibility of a foundation named X.Org.
Because X was a free software project unbeholden to any commercial vendor, it was designed to be highly portable. X Window System interfaces soon appeared across the Unix and BSD landscape. The XFree86 version provided the GUI for the first Linux systems, and a port to Apple's Darwin kernel allows modern Apple macOS systems to run X. Although the GUI shipped with macOS today isn't based on X, it can run X applications.
The concept of software portability was at an early stage in the 1980s, and porting applications even across Unix systems was difficult. The X Window System led the way in providing a consistent environment for users, as well as a trusted platform for developers to develop portable programs.
A Window Onto the World
Given the advanced understanding of networking and distributed computing shown at MIT, particularly by Project Athena, we can understand why X was designed for networking from the start. Support in X for remotely hosted applications was a major step forward in graphical interfaces. For instance, a system administrator could load a graphical application on a server and allow everyone in the office to run the application from their local workstations. Administration and data could be centralized while individual users enjoyed access to the application without downloading anything. (Sun's NeWS was also network-friendly.)
Nowadays, we take it for granted that we can visit Google or Instagram or SAP from a browser. We run their applications right on our screens. But X was invented five years before Tim Berners-Lee introduced the World Wide Web, and a full decade before the creation of SSL made it possible to control access and to transfer data securely.
Given the distributed technologies of the 1980s, running a remote X application was a bit awkward. You opened a remote command-line shell, connected to the machine that hosted the application, and opened the application from the shell. Packard says, "With some shell scripting, launching remote applications was about as easy as launching local ones." Once the window displayed on your screen, you could interact with the program just like any application on your local system, with only a bit of a time lag perhaps reminding you that the application was really running down the hall—or across the ocean.
Sliders and Knobs
Another innovation that X introduced to the GUI was an almost crushing wealth of customization. The engineers at MIT, most fortunately, refrained from forcing user interface design ideas on the world. Instead, they provided a canvas on which designers everywhere could unfold their arts.
The distinction between engineering and design was accomplished by distinguishing mechanism from policy. The mechanism was the primitive drawing operations that X provided. With X, your windows don't even have to be rectangular.
It's also worth mentioning that X supports up to five buttons on a mouse (to accommodate the five fingers on a human hand), and a number of X applications take full advantage of three. A choice between three buttons—whose actions can be further changed by modifier keys—may be confusing for some users, but the variety of functions the buttons provide can enhance the performance of people who develop expertise with the mouse.
The policy is where the designer comes in. Policy creates the taskbars, scrollbars, and similar decorations that we all expect when we use a window system, along with the ability to change the colors and other characteristics of borders, text, and other elements, etc.
The customizability of X gave rise to toolkits, which standardized attractive and useful customizations. MIT bootstrapped the field of X GUI design with the Athena toolkit, Xaw. The most popular toolkit was Motif, which I mentioned earlier, developed by the Open Software Foundation. The other major toolkit was OpenLook, released by Sun. A programmer would choose a toolkit and program to its APIs. The result was an application that looked and acted familiar to people who had seen other applications based on the same toolkit.
Toolkits further enabled a higher level of organization called desktops. These create a comprehensive visual language made up of colors, fonts, borders, keyboard shortcuts, window motions, standard locations on the screen, and conveniences such as a "dock" to hold favorite applications. All the elements of visual design are integrated to give you familiar tools for manipulating your windows, along with attractive visual effects like the "themes" offered by an Apple or Microsoft PC and by the popular web design services.
Two main desktops are offered on top of the X Window System today. One is the K Desktop environment (KDE), now called Plasma, which was started by Matthias Ettrich in 1996. The second is GNOME, announced in 1997.
KDE was based on a library called Qt (pronounced "cute"). Besides providing a good set of GUI programming tools, Qt offered the advantage of being cross-platform: it runs on Windows and macOS as well as on Linux and Unix systems.
However, GNOME was created in reaction to the use of Qt. The Qt license is now under the GPL and LGPL free licenses, but its initial license in the 1990s raised worries among Linux users, who wanted a desktop unencumbered by dubious legal clauses.
Thus, GNOME was started under the tutelage of Miguel de Icaza, a major leader of the free software movement at that time. To kick off the GNOME project, the developers had the luck of drawing on the pre-existing free software GTK graphics library, which had been created for a Photoshop-like application called the GNU Image Manipulation Program (GIMP). Like Qt, the GTK library is cross-platform.
Both KDE Plasma and GNOME remain in widespread use, particularly on Linux systems. Like X itself, the desktops offer enormous opportunities for users to do their own customization. The first thing I always do after installing a new desktop, for instance, is remap the Caps Lock key to turn it into another Meta key. Another X option I like is to configure the server so that I don't have to click in a window to raise it to the front and give it the focus; I can just mouse over the window and it comes forward. (These options are not unique to X.)
Rounding the Corner
The X Window System came at a crucial time for Unix and the scientific/engineering community it served. Although designers accustomed to Windows and Macs derided X as the dorky creation of aesthetically challenged engineers, it proved to be a crucial model in the computing world for portability, support for distributed computing, and customizability. X still enhances the productivity of GNU/Linux users around the world, doing everything from displaying web pages to granting fine-grained control over analytical graphs for system administrators or scientists. I have no doubt that it will continue to live on into the age of human-computer integration.
Images provided by Keith Packard.