X Windows
X Windows is a system providing for the display and management of graphical information, in much in the same way as Microsoft's Windows Graphic Device Interface (GDI) and IBM's Presentation Manager.
The "X Org," a non-profit consortium comprising several members, developed the X Protocol in the mid-1980s to offer a graphical user interface that is transparent to the network, chiefly for the UNIX operating system. It is often said in the UNIX world that "the network is the computer," and the X protocol personifies this.
The chief difference between X and other graphical environments is the way the X Protocol has been designed as a true client-server system, meaning that it comprises two separate parts or processes that communicate in some way. Microsoft Windows and IBM's Presentation Manager merely display graphical information on the machine on which they are running, but the X Protocol breaks this binding by allowing applications to run in a more distributed fashion. It does this by creating a true client-server relationship at the program level.
The part of the application that decides what should be displayed is called the "X client." The X client is logically and, typically, physically separated from the part of the application that actually does the drawing, or the display.
The display is the "X server." X clients usually run on a machine that has spare computing power and displays the results on a slower machine using an X server. This is a real client-server relationship between an application and its display, and gives all the advantages of this kind of relationship.
To realize this separation, the application (running or incorporating the X client) is logically and often physically detached from the display (running the X server), and the two entities exchange data using a socket-based asynchronous protocol that works transparently over the network. A socket is merely a number or "handle" that describes a "logical channel" into the computer. It is rather like a telephone number in that information meant for that channel will be associated with that number. The protocol being "asynchronous" means that the X clients and servers exchange items of information or "packets" when the need arises rather than on a strict timed basis.
One of the quirks in some "flavors" of UNIX is that sometimes it is actually faster to use a deliberate physical separation of the X clients and X servers than to use both on the same machine, and it is not unknown for colleagues sitting next to one another to each run their X clients on the other's computer, and their X servers on their own computers. The reason this configuration is sometimes faster is that some computers treat network data with a higher priority than normal data, meaning that the network stuff is considered more important.
X also provides a "common windowing system" by specifying both device-dependent and device-independent layers. What this means is that the X Protocol theoretically hides the quirks and anomalies of the operating system (and the hardware underneath it all) from the applications using them. This is counted as a good thing because different hardware sets will present a common software interface yet have very different construction; this is the intention, at any rate.
Theoretically this would make the X Protocol the ideal windowing solution. In practice, however, the actual function library, called the "XLib API" (written in C), is very complicated indeed, and X programming is generally considered by most programmers as something best left to someone else.
Various layers have been written on top of XLib over the years to attempt to simplify X programming, but these attempts, most conspicuously Motif and its free counterpart, LessTif, are only partly successful because the API is still very complicated.
Much more recently developments like GTK++, wxWindows, and TrollTech's Qt have gone a long way to providing very much improved APIs on top of XLib, making the X windowing system a much less painful proposition.
This is the complete article, containing 647 words
(approx. 2 pages at 300 words per page).