X Window System: Difference between revisions

Content deleted Content added
realign images - they foul up on a wide screen in Classic
m Purpose and abilities: Added internal link to OpenGL.
 
Line 1:
{{Short description|Windowing system for bitmap displays on UNIX-like systems}}
[[Image:X logo.png|right|150px|X Window System logo]]
{{Redirect|X11}}
{{pp-move}}
{{Use dmy dates|date=November 2020}}
{{Infobox software
| name = X Window System
| logo = X11.svg{{!}}class=skin-invert
| logo_upright = 0.3
| screenshot = Twm.png
| screenshot size =
| caption = [[twm]], the default X11 [[window manager]]
| author = [[Project Athena]]
| developer = [[X.Org Foundation]]
| released = {{Start date and age|1984|06|19}}<ref name="debut of x" />
| latest release version = {{wikidata |property|preferred|references|edit|Q178481|P348|P548=Q2804309}}
| latest release date = {{wikidata |qualifier|preferred|single|Q178481|P348|P548=Q2804309|P577}}
| latest preview version = {{wikidata |property|preferred|references|edit|Q178481|P348|P548=Q51930650}}
| latest preview date = {{wikidata |qualifier|preferred|single|Q178481|P348|P548=Q51930650|P577}}
| replaces = [[W Window System]]
| operating system = [[Unix]], [[Unix-like]], [[MVS]] [[OpenVMS]], [[DOS]]
| platform = [[Cross-platform]]
| genre = [[Windowing system]]
| license = [[MIT License]]
| website = {{URL|https://x.org}}
}}
The '''X Window System''' ('''X11''', or simply '''X''') is a [[windowing system]] for [[bitmap]] displays, common on [[Unix-like]] operating systems.
 
X originated as part of [[Project Athena]] at [[Massachusetts Institute of Technology]] (MIT) in 1984.<ref name="Athena Network Services">{{cite journal|title=Network Services in the Athena Environment | first1 =Jennifer G. | last1 = Steiner| first2=Daniel E. | last2 = Geer Jr. |date=21 July 1988|journal=Proceedings of the Winter 1988 Usenix Conference |citeseerx = 10.1.1.31.8727}}</ref> The X protocol has been at version 11 (hence "X11") since September 1987. The [[X.Org Foundation]] leads the X project, with the current reference implementation, [[X.Org Server]], available as [[free and open-source software]] under the [[MIT License]] and similar permissive licenses.
In [[computing]]<!-- it's a protocol, not just software-->, the '''X Window System''' (commonly '''X11''' or '''X''') is a [[windowing system]] for [[raster graphics|bitmap]] displays<!-- which may or may not actually be attached to a computer-->. It is the standard toolkit and protocol to build [[graphical user interface]]s on [[Unix]], [[Unix-like]] [[operating system]]s and [[OpenVMS]], and is available for almost all modern operating systems.
 
==Purpose and abilities==
X provides the basic framework for a GUI environment: drawing and moving [[window (computing)|window]]s on the [[display device|screen]] and interacting with a [[computer mouse|mouse]] and [[computer keyboard|keyboard]]. X does not mandate the [[user interface]] &mdash; this is handled by individual programs. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces.
{{No footnotes|section|date=September 2024}}
X is an architecture-independent system for remote graphical user interfaces and input device capabilities. Each person using a networked [[computer terminal|terminal]] has the ability to interact with the display with any type of user input device.
 
In its standard distribution it is a complete, albeit simple, display and interface solution which delivers a standard [[widget toolkit|toolkit]] and [[protocol stack]] for building graphical user interfaces on most [[Unix-like]] operating systems and [[OpenVMS]], and has been [[ported]] to many other contemporary general purpose [[operating system]]s.
X features [[network transparency]]: the machine where application programs (the ''client'' applications) run need not be the user's local machine (the display ''server''). X's usage of the terms "[[client (computing)|client]]" and "[[server]]" is the reverse of what people often expect, in that the "server" is the user's local display rather than the remote machine.
 
X provides the basic [[software framework|framework]], or primitives, for building such GUI environments: drawing and moving [[window (computing)|windows]] on the [[computer monitor|display]] and interacting with a mouse, keyboard or touchscreen. X does not mandate the [[user interface]]; individual client programs handle this. Programs may use X's graphical abilities with no user interface. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces.
X originated at [[Massachusetts Institute of Technology|MIT]] in [[1984]]. The current protocol version, X11, was released in September [[1987]]. The project is led by the [[X.Org Foundation]]; the current [[reference implementation]] is version 11 release 6.8.2 and is [[free software]] under the [[MIT License]] and similar permissive licenses.
 
Unlike most earlier display protocols, X was specifically designed to be used over network connections rather than on an integral or attached display device. X features [[network transparency]], which means an X program running on a computer somewhere on a network (such as the Internet) can display its user interface on an X server running on some other computer on the network. The X server is typically the provider of graphics resources and keyboard/mouse events to X [[Client (computing)|clients]], meaning that the X server is usually running on the computer in front of a human user, while the X client applications run anywhere on the network and communicate with the user's computer to request the rendering of graphics content and receive events from input devices including keyboards and mice.
{|border=0 align=right
|[[Image:Kde34screenshot.png|thumb|right|200px|[[KDE]] 3.4]]
|-
|[[Image:GNOME 2.10.0 on Ubuntu 5.04.png|thumb|right|200px|[[GNOME]] 2.10.0]]
|}
==The X client-server model and network transparency==
:''Main article: [[X Window System protocols and architecture]]''
 
The fact that the term "server" is applied to the software in front of the user is often surprising to users accustomed to their programs being clients to services on remote computers. Here, rather than a remote database being the resource for a local app, the user's graphic display and input devices become resources made available by the local X server to both local and remotely hosted X client programs who need to share the user's graphics and input devices to communicate with the user.
X is based on a [[client-server]] model. An ''X server'' communicates with various ''client'' programs. The server accepts requests for graphical output (windows) and sends back user input (keyboard, mouse, touchscreen). The server may be an application displaying to a window of another display system, it may be a system program controlling the video output of a PC or it may be a dedicated piece of hardware.
 
X's network protocol is based on X command primitives. This approach allows both 2D and (through extensions like GLX) 3D operations by an X client application which might be running on a different computer to still be fully accelerated on the X server's display. For example, in classic [[OpenGL]] (before version 3.0), display lists containing large numbers of objects could be constructed and stored entirely in the X server by a remote X client program, and each then rendered by sending a single glCallList(which) across the network.
This client-server terminology &mdash; your terminal is the "server", the remote applications are the "clients" &mdash; often confuses new X users, because the terms appear reversed. But X takes the perspective of the program, rather than the end-user or the hardware: the local X display provides display services to programs, so it is acting as a server; the remote program uses these services, thus it acts as a client.
 
X provides no native support for audio; several projects exist to fill this niche, some also providing [[Network transparency|transparent network]] support.
[[Image:X client server example.png|frame|In this example, the X server takes input from a keyboard and mouse and displays to a screen. A [[web browser]] and a [[terminal emulator]] run on the user's workstation, and a system updater runs on a remote server but is controlled from the user's machine. Note that the remote application runs just as it would locally.]]
The [[communication protocol]] between server and client operates [[computer network|network]]-transparently: the client and server may run on the same machine or on different ones, possibly with different [[computer architecture|architectures]] and [[operating system]]s, but they run the same in either case. A client and server can even communicate [[computer security|secure]]ly over the [[Internet]] by [[tunneling]] the connection over an [[encrypted]] connection.
 
==Software architecture==
To start a remote client program displaying to a local server, the user will typically open a [[terminal emulator|terminal window]] and [[telnet]] or [[secure shell|ssh]] to the remote machine, tell it to display to the user's machine (''e.g.'' <tt>export DISPLAY=</tt>''[user's machine]''<tt>:0</tt> on a remote machine running [[bash]]) then start the client. The client will then connect to the local server and the remote application will display to the local screen and be controlled by the local input devices. Alternately, the local machine may run a small helper program to connect to a remote machine and start the desired client application there.
{{Further|X Window System protocols and architecture|X Window System core protocol}}
 
[[File:X client server example.svg|thumb|Simple example: the X server receives input from a local keyboard and mouse and displays to a screen. A web browser and a terminal emulator run on the user's workstation and a terminal emulator runs on a remote computer but is controlled and monitored from the user's machine.]]
Practical examples of remote clients include: administering a remote machine graphically; running a computationally intensive simulation on a remote Unix machine and displaying the results on a local Windows desktop machine; running graphical software on several machines at once, controlled by a single display, keyboard and mouse.
 
X uses a client–server model: an X server communicates with various ''client'' programs.<ref>{{Cite book |last=Quercia |first=Valerie |title=X Window System user's guide |last2=O'Reilly |first2=Tim |date=1990 |publisher=O'Reilly & Associates |isbn=978-0-937175-14-9 |series=The Definitive guides to the X Window System |___location=Sebastopol, CA}}</ref> The server accepts requests for graphical output (windows) and sends back user input (from keyboard, mouse, or touchscreen). The server may function as:
==Design principles of X==
* an application displaying to a window of another display system
* a system program controlling the video output of a [[personal computer|PC]]
* a dedicated piece of hardware
 
This client–server terminology{{snd}}the user's terminal being the server and the applications being the clients{{snd}}often confuses new X users, because the terms appear reversed. But X takes the perspective of the application, rather than that of the end-user: X provides display and I/O services to applications, so it is a server; applications use these services, thus they are clients.
In [[1984]], [[Bob Scheifler]] and [[Jim Gettys]] set out the early principles of X:
*''Do not add new functionality unless an implementor cannot complete a real application without it.''
*''It is as important to decide what a system is not as to decide what it is. Do not serve all the world's needs; rather, make the system extensible so that additional needs can be met in an upwardly compatible fashion.''
*''The only thing worse than generalizing from one example is generalizing from no examples at all.''
*''If a problem is not completely understood, it is probably best to provide no solution at all.''
*'' If you can get 90 percent of the desired effect for 10 percent of the work, use the simpler solution.'' (See also [[Worse is better]].)
*'' Isolate complexity as much as possible.''
*''Provide mechanism rather than policy. In particular, place user interface policy in the clients' hands.''
 
The [[communication protocol]] between server and client operates network-transparently: the client and server may run on the same machine or on different ones, possibly with different architectures and operating systems. A client and server can even communicate securely over the Internet by tunneling the connection over an encrypted network session.
The first principle was modified during the design of X11 to: ''"Do not add new functionality unless you know of some real application that will require it."'' X has largely kept to these principles since. The reference implementation is developed with a view to extension and improvement of the implementation, whilst remaining almost entirely compatible with the original 1987 protocol.
 
An X client itself may emulate an X server by providing display services to other clients. This is known as "X nesting". Open-source clients such as [[List of display servers#X11|Xnest]] and [[Xephyr]] support such X nesting.<ref>{{Cite web |title=xnest(1) - Linux man page |url=https://linux.die.net/man/1/xnest |website=die.net Linux Docs}}</ref>
 
=== Remote desktop ===
To run an X client application on a remote machine, the user may do the following:
* on the local machine, open a terminal window
* use {{Code|ssh -X}} command to connect to the remote machine
* request a local display/input service (e.g., <kbd>export DISPLAY=''[user's machine]'':0</kbd> if not using SSH with X forwarding enabled)
 
The remote X client application will then make a connection to the user's local X server, providing display and input to the user.
 
Alternatively, the local machine may run a small program that connects to the remote machine and starts the client application.
 
Practical examples of remote clients include:
* administering a remote machine graphically (similar to using remote desktop, but with single windows)
* using a client application to join with large numbers of other terminal users in collaborative workgroups
* running a computationally intensive simulation on a remote machine and displaying the results on a local desktop machine
* running graphical software on several machines at once, controlled by a single display, keyboard and mouse
 
==User interfaces==
{{One source|section|date=May 2024}}
{|border=0 align=left
{{Stack|[[File:GNOME Shell 41 with GNOME Web (released in 2021-09).png|thumb|[[GNOME]] graphical user interface]]}}
|[[Image:Solaris8-cde.png|thumb|200px|[[Common Desktop Environment|CDE]] on [[UNIX]] ([[Solaris Operating Environment|Solaris]] 8)]]
[[File:XFCE-4.12-Desktop-standard.png|thumb|[[Xfce]] graphical user interface]]
|-
|[[Image:DECwindows-openvms-v7.3-1.png|thumb|200px|DECwindows CDE on [[OpenVMS]] 7.3-1]]
|}
 
X primarily defines protocol and graphics primitives{{snd}}it deliberately contains no specification as tofor application [[user-interface interface]]design, such as [[button (computing)|button]]s, [[menu (computing)|menu]]s, or window [[title -bar]]s andstyles.<ref>{{Cite sojournal on|last1=Scheifler |first1=Robert W. These|last2=Gettys are|first2=Jim provided|date=April by1986 user|title=The softwareX window system |journal=ACM Transactions on Graphics |language=en |volume=5 |issue=2 |pages=79–109 |doi=10.1145/22949.24053 |issn=0730-0301|doi-access=free }}</ref> Instead, application software{{snd}}such as [[window manager]]smanagers, GUI [[widget toolkit]]stoolkits and [[desktop environment]]senvironments, or application-specific GUIs,graphical suchuser asinterfaces{{snd}}define [[pointand ofprovide such sale]]details. As sucha result, thethere "is no ''typical"'' X interface hasand several different desktop environments variedhave tremendouslybecome overpopular theamong yearsusers.
 
A [[window manager]] is used to controlcontrols the placement and appearance of application windows. This may haveresult anin interfacedesktop akininterfaces toreminiscent of thatthose of Microsoft Windows or of the Apple Macintosh (''e.g.''examples [[Kwin]]include inGNOME 2, KDE orPlasma, [[Metacity]] in GNOMEXfce) or have radically different controls (''esuch as a tiling window manager, like wmii or [[Ratpoison]]).g.'' Some interfaces such as [[twmSugar (software)|Sugar]], or [[ChromeOS]] eschew the basicdesktop windowmetaphor manageraltogether, suppliedsimplifying withtheir X)interfaces for specialized applications. TheWindow windowmanagers managerrange mayin besophistication and complexity from the bare-bones (''e.g.'', twm), the basic window manager supplied with X, or offerevilwm, functionalityan vergingextremely onlight thatwindow ofmanager) ato fullthe more comprehensive desktop environmentenvironments (''e.g.''such as [[Enlightenment (and even to application-specific window manager)|Enlightenment]]).managers for vertical markets such as point-of-sale.
 
MostMany users use X with a full [[desktop environment]], which, includesaside afrom the window manager, includes various applications andusing a consistent user interface. ThePopular mostdesktop popularenvironments areinclude [[GNOME]], [[KDE Plasma]] and [[KDEXfce]]. The [[Single UNIX Specification|Unix98 standard]] environment is the [[Common Desktop Environment]] (CDE). The [[freedesktop.org]] initiative addresses interoperability between desktops and the components needed for a competitive X desktop.
 
==Implementations==
The [[canonical]]X.Org implementation of X is the X.Org [[referencecanonical implementation]] of X. DueOwing to the liberal [[software license|licensing]], a number of variations, both [[free software|free]]and open source and [[proprietary software|proprietary]], have appeared. Commercial UNIXUnix vendors have tended to take the reference implementation and adapt it for their hardware, usually customisingcustomizing it heavily and adding proprietary extensions.
 
Until 2004, XFree86 provided the most common X variant on free Unix-like systems. XFree86 started as a port of X to 386-compatible PCs and, by the end of the 1990s, had become the greatest source of technical innovation in X and the ''de facto'' standard of X development. Since 2004, however, the X.Org Server, a fork of XFree86, has become predominant.
{|border=0 align=right
|[[Image:X11_mac_gimp_app.jpg|thumb|200px|left|X11.app running rootless on [[Mac OS X]]. The screen shows [[GIMP]] running within the X window system.]]
|-
|[[Image:Wfm cygwinx rootless.png|thumb|200px|right|[[Cygwin/X]] running rootless on Microsoft [[Windows XP]]. The screen shows X applications (xeyes, xclock, [[xterm]]) sharing the screen with native Windows applications (Date and Time, Calculator).]]
|}
 
While it is common to associate X with Unix, X servers also exist natively within other graphical environments. VMS Software Inc.'s OpenVMS operating system includes a version of X with Common Desktop Environment (CDE), known as DECwindows, as its standard desktop environment.{{cn|date=July 2025}} Apple originally ported X to macOS in the form of X11.app, but that has been deprecated in favor of the [[XQuartz]] implementation. Third-party servers under Apple's older operating systems in the 1990s, System 7, and [[classic Mac OS|Mac OS]] 8 and 9, included Apple's MacX and White Pine Software's eXodus.{{cn|date=July 2025}}
Up to [[2004]], the most common X variant on free [[UNIX-like]] systems was [[XFree86]], which started as a [[porting|port]] of X for [[Intel 80386|386]]-compatible PCs and, by the end of the 1990s, had become the greatest source of technical innovation in X and the ''de facto'' steward of X development. As of 2004, the most popular open source X server is the current [[X.Org Server|X.Org reference implementation]], a [[fork (software)|fork]] of XFree86.
 
Microsoft Windows is not shipped with support for X, but many third-party implementations exist, as free and open source software such as [[Cygwin/X]], and proprietary products such as Exceed, MKS X/Server, Reflection X, X-Win32 and [[Xming]].
While X is most often associated with Unix, X servers also exist natively within other graphical environments. [[Hewlett-Packard]]'s [[OpenVMS]] operating system includes a version of X with [[CDE]], known as [[DECwindows]], as its standard desktop environment. [[Apple Computer|Apple]]'s [[Mac OS X v10.3]] (Panther) includes [[Apple X11]], based on XFree86 4.3 and X11R6.6, with better [[Mac OS X]] integration.
 
There are also Java implementations of X servers. WeirdX runs on any platform supporting Swing 1.1, and will run as an applet within most browsers. The Android X Server is an open source Java implementation that runs on Android devices.
[[Microsoft Windows]] does not come with support for X, but there are many third party implementations available, both [[free software]] such as [[Cygwin/X]], [[Xming]], WeirdMind [http://www.tam.cornell.edu/Computer.old/remoteaccess/weirdmind/] and [[WeirdX]] and proprietary products such as [[WiredX]], [[Exceed]] and [[X-Win32]]. They are normally used to control X windows applications remotely.
 
When Xan isoperating hostedsystem onwith a anothernative windowing system (suchhosts asX thosein of Microsoft Windows or Mac OS)addition, the X system iscan generallyeither "rootless",use meaningits theown hostnormal windowingdesktop environmentin isa responsibleseparate for the roothost window (theor backgroundit andcan associatedrun menus)''rootless'', and for managingmeaning the geometry of the hosted X windowsdesktop &mdash;is althoughhidden someand servers,the suchhost aswindowing Exceed,environment do createmanages the rootgeometry windowand forappearance of the remotehosted clientsX towindows display to as a separate window inwithin the host systemscreen.
 
===X terminals===
{{Main|X terminal}}
An ''X terminal'' is a piece of dedicated hardware running an X server as a [[thin client]]. This architecture became popular for building inexpensive terminal parks for many users to simultaneously use the same large server. This use very much aligns with the original intention of the MIT project.
 
An ''X terminal'' is a thin client that only runs an X server. This architecture became popular for building inexpensive terminal parks for many users to simultaneously use the same large computer server to execute application programs as clients of each user's X terminal. This use is very much aligned with the original intention of the MIT project.
X terminals explore the network (the local [[broadcast ___domain]]) using the [[XDMCP|X Display Manager Control Protocol]] to generate a list of available hosts that they can run clients from. The initial host needs to be running an [[X display manager]].
 
X terminals explore the network (the local [[broadcast ___domain]]) using the [[X Display Manager Control Protocol]] to generate a list of available hosts that are allowed as clients. One of the client hosts should run an [[X display manager]].
Dedicated (hardware) X terminals are no longer common; the same functionality is typically provided at a lower cost with a [[Personal Computer|PC]] with an X server.
 
A limitation of X terminals and most thin clients is that they are not capable of any input or output other than the keyboard, mouse, and display. All relevant data is assumed to exist solely on the remote server, and the X terminal user has no methods available to save or load data from a local [[peripheral]] device.
==Common criticisms of X==
The device independence and separation of client and server does incur an overhead. X's network transparency requires the clients and server to operate separately. In the early days, this gave a significant performance penalty on a standalone system compared to [[Microsoft Windows]] or [[Mac OS]] (versions 1 to 9), where windowing was deeply embedded in the operating system. 4 to 8[[megabyte|MB]] of [[RAM]] was recommended for reasonable performance; until the mid-[[1990s]], this was regarded as bloated compared to Mac OS or Windows. In the present day, Windows and [[Mac OS X]] [[Quartz (graphics layer)|Quartz]] have internal subsystem separation similar to the client/server divide in X and comparable performance and resource usage to X with [[KDE]] or [[GNOME]].
 
Dedicated (hardware) X terminals have fallen out of use; a [[Personal computer|PC]] or modern [[thin client]] with an X server typically provides the same functionality at the same, or lower, cost.
X deliberately contains no specification as to user interface or most inter-application communication. The result was several vastly different interfaces, and applications that did not quite work together. The [[Inter-Client Communication Conventions Manual|ICCCM]], a specification for client interoperability, is notoriously difficult to implement correctly. Further standards efforts such as [[Motif (widget toolkit)|Motif]] and [[CDE]] did not remedy matters. This has long been a source of great frustration to users and programmers [http://lists.debian.org/debian-user/1996/11/msg00637.html]. Consistency of application [[look and feel]] and communication is now generally addressed by programming to a desktop environment, which also avoids having to deal directly with the ICCCM.
 
==Limitations and criticism==
Hardware support remains a problem. The performance edge for graphical computing is now in the most advanced graphics functions, which are typically implemented in proprietary drivers written by the manufacturers, and generally for Windows (the largest consumer market) first.
 
''[[The Unix-Haters Handbook]]'' (1994) devoted a full chapter to the problems of X.<ref name="The X-Windows Disaster">{{cite web|url=http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html |title=The X-Windows Disaster |publisher=Art.Net |first1=Don |last1=Hopkins |access-date=10 November 2009 |archive-url=https://web.archive.org/web/20091111071410/http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html |archive-date=11 November 2009}}</ref> ''Why X Is Not Our Ideal Window System'' (1990) by Gajewska, Manasse and McCormack detailed problems in the protocol with recommendations for improvement.
The X server usually manipulates the video hardware directly. This originated with the X developers not always having had access to the operating system [[kernel (computer science)|kernel]]. If the server crashes, this can leave the video hardware in an unusable state.
 
===User interface issues===
X does not include good network-transparent sound. As users increasingly expect sound, this has led to various incompatible sound subsystems. Most programmers in the past chose to ignore the network issue and simply use local, OS-specific sound [[API]]s. The first generation of client-server sound systems included [[rplay]] and [[Network Audio System]]. More recent efforts have produced [[Enlightened Sound Daemon|EsounD]] (GNOME) and [[ARts]] (KDE), although these are by no means standard. Another system, [[Media Application Server]], is in development.
The lack of design guidelines in X has resulted in several vastly different interfaces, and in applications that have not always worked well together. The [[Inter-Client Communication Conventions Manual]] (ICCCM), a specification for client interoperability, has a reputation for being difficult to implement correctly. Further standards efforts such as [[Motif (software)|Motif]] and [[Common Desktop Environment|CDE]] did not alleviate problems. This has frustrated users and programmers.<ref>{{Cite web |last=Bumgarner |first=Bill |date=Nov 15, 1996 |title=Re: X is painful |url=https://lists.debian.org/debian-user/1996/11/msg00637.html |url-status=live |archive-url=https://web.archive.org/web/20221231141002/https://lists.debian.org/debian-user/1996/11/msg00637.html |archive-date=Dec 31, 2022 |website=Debian Mailing Lists}}</ref> Graphics programmers now generally address consistency of application [[look and feel]] and communication by coding to a specific desktop environment or to a specific widget toolkit, which also avoids having to deal directly with the ICCCM.
 
X also lacks native support for user-defined stored procedures on the X server, in the manner of [[NeWS]]{{snd}}there is no [[Turing-complete]] scripting facility. Various desktop environments may thus offer their own (usually mutually incompatible) facilities.
Until recently, X did not include a good solution to print what you see on the screen. Many X clients print to [[PostScript]] entirely separately from what they send to the server. [[Xprint]] was first included in X11R6.3; the client side was good, but many server side implementations were not. The versions from X11R6.8 on are of good quality [http://xprint.mozdev.org/docs/Xprint_FAQ.html#contra_xprint] and are gaining [[widget toolkit|toolkit]] support.
 
===Computer accessibility related issues===
An X client or session cannot be detached from one server and reattached to another, as with [[Virtual Network Computing|VNC]]. Work is under way to add this facility to X. There are also workarounds to make the current X server screen available via VNC.
Systems built upon X may have [[computer accessibility|accessibility]] issues that make utilization of a computer difficult for disabled users, including [[right click]], [[double click]], [[middle click]], [[mouse-over]], and [[focus stealing]]. Some X11 clients deal with accessibility issues better than others, so persons with accessibility problems are not locked out of using X11. However, there is no accessibility standard or accessibility guidelines for X11. Within the X11 standards process there is no working group on accessibility; however, accessibility needs are being addressed by software projects to provide these features on top of X.
 
The [[Orca (assistive technology)|Orca]] project adds accessibility support to the X Window System, including implementing an API ([[AT-SPI]]<ref>{{cite web|url=https://wiki.gnome.org/Projects/Orca |title=Orca |website=GNOME Wiki! |access-date=7 November 2012 |url-status=live |archive-url=https://web.archive.org/web/20131225193528/https://wiki.gnome.org/Projects/Orca/ |archive-date= Dec 25, 2013 }}</ref>). This is coupled with GNOME's [[Accessibility Toolkit|ATK]] to allow for accessibility features to be implemented in X programs using the GNOME/GTK APIs.<ref>{{cite web|url=http://developer.gnome.org/atk/unstable/ |title=ATK - Accessibility Toolkit |website=GNOME Developer Center |access-date=7 November 2012 |url-status=live |archive-url=https://web.archive.org/web/20130101162725/http://developer.gnome.org/atk/unstable/ |archive-date= Jan 1, 2013 }}</ref> KDE provides a different set of accessibility software, including a text-to-speech converter and a screen magnifier.<ref>{{cite web |url=https://www.kde.org/applications/utilities/ |title=Utilities - Accessibility |publisher= KDE |access-date=6 January 2013 |url-status=live |archive-url= https://web.archive.org/web/20130114101752/https://www.kde.org/applications/utilities/ |archive-date= Jan 14, 2013 }}</ref> The other major desktops (LXDE, Xfce and Enlightenment) attempt to be compatible with ATK.
The ''[[UNIX-HATERS Handbook]]'' devoted an entire chapter, "The X Windows Disaster" [http://catalog.com/hopkins/unix-haters/x-windows/disaster.html], to the problems of X in the late 1980s and early 1990s.
 
===Network===
==Competitors to X==
[[File:X11 ssh tunnelling.png|right|250px|thumb|Example of tunnelling an X11 application over SSH]]
X is the near-universal system for graphics on [[Unix-like]] systems. <!-- redundant with first sentence: Since it has lasted so long, it is used by all Unix-based graphical software, making it difficult to replace.--> Nevertheless, some people have attempted writing alternatives to and replacements for X. Historical alternatives include [[Sun Microsystems|Sun]]'s [[NeWS]], which failed in the market, and [[NeXT]]'s [[Display PostScript]], which was eventually turned into [[Apple Computer|Apple]]'s [[Quartz (graphics layer)|Quartz]] for [[Mac OS X]].
 
An X client cannot generally be detached from one server and reattached to another unless its code specifically provides for it ([[Emacs]] is one of the few common programs with this ability). As such, moving an entire session from one X server to another is generally not possible. However, approaches like [[Virtual Network Computing]] (VNC), [[NX technology|NX]] and [[Xpra]] allow a virtual session to be reached from different X servers (in a manner similar to [[GNU Screen]] in relation to terminals), and other applications and toolkits provide related facilities.<ref>{{cite web |url-status=dead |url=http://icie.cs.byu.edu/cs656/Papers/Gettys.pdf |title=SNAP Computing and the X Window System |archive-url=https://web.archive.org/web/20100626203344/http://icie.cs.byu.edu/cs656/Papers/Gettys.pdf |archive-date=26 June 2010 |first1=James |last1=Gettys |at=4.6 |website=Interactive Computing Everywhere }}</ref> Workarounds like [[x11vnc]] (''VNC :0 viewers''), Xpra's shadow mode and NX's nxagent shadow mode also exist to make the current X-server screen available. This ability allows the user interface (mouse, keyboard, monitor) of a running application to be switched from one ___location to another without stopping and restarting the application.
Modern attempts to address criticisms of X by replacing it completely include Berlin/[[Fresco (computing)|Fresco]] and the [[Y Window System]]. These alternatives have seen negligible adoption, however, and the viability of any replacement that is not backwards-compatible with X is widely doubted.
 
Network traffic between an X server and remote X clients is not encrypted by default. An attacker with a [[packet sniffer]] can intercept it, making it possible to view anything displayed to or sent from the user's screen. The most common way to encrypt X traffic is to establish a [[Secure Shell]] (SSH) tunnel for communication.
Other competitors attempt to avoid the overhead of X by working directly with the hardware. Such projects include [[DirectFB]] and the very small [[FBUI]]. These efforts may be made superfluous by the [[Direct Rendering Infrastructure]], which aims to provide a reliable kernel-level interface to the frame buffer.
 
Like all [[thin client]]s, when using X across a network, [[Bandwidth (computing)|bandwidth]] limitations can impede the use of [[bitmap]]-intensive applications that require rapidly updating large portions of the screen with low latency, such as 3D animation or photo editing. Even a relatively small ''uncompressed'' 640×480×24&nbsp;bit 30&nbsp;fps video stream (~211&nbsp;Mbit/s) can easily outstrip the bandwidth of a 100&nbsp;Mbit/s network for a single client. In contrast, modern versions of X generally have extensions such as [[Mesa (computer graphics)|Mesa]] allowing local display of a local program's graphics to be optimized to bypass the network model and directly control the video card, for use with full-screen video, rendered 3D applications, and other such applications.
Other attempts to achieve network transparency in the form of graphical terminal services include [[VNC]] (a very low-level system which sends compressed bitmaps across the network; the Unix implementation includes an X server), [[Citrix MetaFrame]] (an X-like product for Windows), [[Tarantella, Inc.|Tarantella]] (which provides a Java client for use in web browsers) and [[NX technology]] (a bandwidth-saving protocol for remote display).
 
===Client–server separation===
X's design requires the clients and server to operate separately, and device independence and the separation of client and server incur overhead. Most of the overhead comes from network [[round-trip delay time]] between client and server ([[Network latency|latency]]) rather than from the protocol itself: the best solutions to performance issues depend on efficient application design.<ref>{{Cite web |last=Packard |first=Keith |title=An LBX Postmortem |url=https://keithp.com/~keithp/talks/lbxpost/paper.html |url-status=live |archive-url=https://web.archive.org/web/20231115105104/https://keithp.com/~keithp/talks/lbxpost/paper.html |archive-date=Nov 15, 2023 |website=keithp.com}}</ref> A common criticism of X is that its network features result in excessive complexity and decreased performance if only used locally.
 
Modern X implementations use [[Unix ___domain socket]]s for efficient connections on the same host. Additionally [[shared memory]] (via the [[MIT-SHM]] extension) can be employed for faster client–server communication.<ref>{{Cite web |last=Corbet |first=Jonathan |date=1991 |title=MIT-SHM—The MIT Shared Memory Extension How the shared memory extension works |url=http://www.xfree86.org/current/mit-shm.html |url-status=live |archive-url=https://web.archive.org/web/20231222105026/http://www.xfree86.org/current/mit-shm.html |archive-date=Dec 22, 2023 |website=XFree86}}</ref> However, the programmer must still explicitly activate and use the shared memory extension. It is also necessary to provide fallback paths in order to stay compatible with older implementations, and in order to communicate with non-local X servers.
 
==Competitors==
Some people have attempted writing alternatives to and replacements for X. Historical alternatives include [[Sun Microsystems|Sun]]'s [[NeWS]] and [[NeXT]]'s [[Display PostScript]], both [[PostScript]]-based systems supporting user-definable display-side procedures, which X lacked. Current alternatives include:
* [[macOS]] (and its mobile counterpart, [[iOS]]) implements its windowing system, which is known as [[Quartz (graphics layer)|Quartz]]. When [[Apple Inc.|Apple Computer]] bought NeXT, and used [[NeXTSTEP]] to construct Mac OS X, it replaced Display PostScript with Quartz. Mike Paquette, one of the authors of Quartz, explained that if Apple had added support for all the features it wanted to include into X11, it would not bear much resemblance to X11 nor be compatible with other servers anyway.<ref>{{Cite web |author=mpaque |date=August 19, 2003 |title=Why Apple didn't use X for the window system |url=https://developers.slashdot.org/comments.pl?sid=75257&cid=6734612 |url-status=live |archive-url=https://web.archive.org/web/20231112181649/https://developers.slashdot.org/comments.pl?sid=75257&cid=6734612 |archive-date=Nov 12, 2023 |website=Slashdot}}</ref>
* [[Wayland (protocol)|Wayland]] is being developed by several X.Org developers as a prospective replacement for X. It works directly with the [[GPU]] hardware, via [[Direct Rendering Infrastructure|DRI]]. Wayland can run an X server as a Wayland compositor, which can be rootless.<ref>{{cite web
| url = https://wayland.freedesktop.org/docs/html/ch05.html
| title = X11 Application Support
|website=Wayland
|first1=Kristian |last1=Høgsberg
|date=2012
|url-status=live |archive-url= https://web.archive.org/web/20230924095142/https://wayland.freedesktop.org/docs/html/ch05.html |archive-date= Sep 24, 2023 }}</ref> The project reached version 1.0 in 2012. Like Android, Wayland is [[EGL (API)|EGL]]-based.
* [[Mir (software)|Mir]] was a project from [[Canonical Ltd.]] with goals similar to Wayland.<ref>{{cite web|title=MirSpec – Ubuntu Wiki|url=https://wiki.ubuntu.com/MirSpec|url-status=dead|archive-url=https://web.archive.org/web/20130617002119/https://wiki.ubuntu.com/Mir/Spec?action=show&redirect=MirSpec|archive-date=17 June 2013|access-date=6 March 2013|publisher=Wiki.ubuntu.com}}</ref> Mir was intended to work with mobile devices using ARM chipsets (a stated goal was compatibility with Android device-drivers) as well as x86 desktops. Like Android, Mir/UnityNext were EGL-based. Backwards compatibility with X client-applications was accomplished via Xmir. The project has since moved to being a [[Wayland compositor]] instead of being an alternative [[display server]].<ref>{{cite web|url=https://assets.ubuntu.com/v1/bd787c8a-canonical-mir-datasheet-2018-12-20.pdf| title = Canonical Mir Datasheet| date = 20 December 2018}}</ref>
* Other alternatives attempt to avoid the overhead of X by working directly with the hardware; such projects include [[DirectFB]].<ref>[https://fbdri.sourceforge.net/ DRI for framebuffer consoles] 15 December 2009</ref> The [[Direct Rendering Infrastructure]] (DRI) provides a kernel-level interface to the [[framebuffer]].
 
Additional ways to achieve a functional form of the "network transparency" feature of X, via network transmissibility of graphical services, include:
* [[Virtual Network Computing]] (VNC), a very low-level system which sends compressed bitmaps across the network; the Unix implementation includes an X server
* [[Remote Desktop Protocol]] (RDP), which is similar to VNC in purpose, but originated on Microsoft Windows before being ported to Unix-like systems, ''e.g.'' [[NX technology|NX]]
* [[Citrix XenApp]], an X-like protocol and application stack for Microsoft Windows
* [[Tarantella, Inc.|Tarantella]], which provides a Java-based remote-gui-client for use in web browsers
 
==History==
===Predecessors===
There were severalSeveral bitmap display systems beforepreceded X. From [[Xerox]] came the [[Xerox Alto|Alto]] (1973) and the [[Xerox Star|Star]] (1981). From [[AppleApollo Computer]] came [[Domain/OS#User interface|Display Manager]] (1981). From [[Apple Inc.|Apple]] came the [[Apple Lisa|Lisa]] (1983) and the [[AppleMacintosh Macintosh128K|Macintosh]] (1984). In theThe [[Unix|UNIX]] world there washad the [[Andrew Project]] (1982) and [[Rob Pike]]'s [[Blit (computer terminal)|Blit]] terminal (19841982).
 
Carnegie Mellon University produced a remote-access application called Alto Terminal, that displayed overlapping windows on the Xerox Alto, and made remote hosts (typically DEC VAX systems running Unix) responsible for handling window-exposure events and refreshing window contents as necessary.
X derives its name as a successor to a pre-1983 window system called [[W Window System|W]] (the letter X directly following W in the [[Latin alphabet]]). [[W Window System|W]] ran under the [[V (operating system)|V]] [[operating system]]. W used a network protocol supporting terminal and graphics windows, the server maintaining display lists.
 
X derives its name as a successor to a pre-1983 window system called [[W Window System|W]] (the letter preceding X in the [[English alphabet]]). W ran under the [[V (operating system)|V operating system]]. W used a network protocol supporting terminal and graphics windows, the server maintaining display lists.
 
===Origin and early development===
{{quote box|<syntaxhighlight lang="email" style="border: none">
X was initially conceived at MIT in [[1984]] as a collaboration between [[Jim Gettys]] of [[Project Athena]] and [[Bob Scheifler]] of the [[MIT Laboratory for Computer Science]]. Scheifler needed a usable display environment for debugging the [[Argus system]]. Project Athena, a joint project between [[Digital Equipment Corporation]] (DEC), MIT and [[IBM]] to provide easy access to computing resources for all students needed a platform-independent graphics system to link together its heterogeneous multiple-vendor systems; the window system being developed in [[Carnegie Mellon University|CMU]]'s [[Andrew Project]] was not available for licensing and no alternatives were available.
From: rws@mit-bold (Robert W. Scheifler)
To: window@athena
Subject: window system X
Date: 19 June 1984 0907-EDT (Tuesday)
 
I've spent the last couple weeks writing a window
The project solved this by creating a protocol that could run local applications and was able to call on remote resources. An initial Unix port of W in mid-[[1983]] ran at one-fifth the speed under V; in May [[1984]], Scheifler replaced the [[synchronous]] [[protocol (computing)|protocol]] of W with an [[asynchronous]] protocol and the display lists with immediate mode graphics to make X version 1. X was the first window system environment that was truly hardware and vendor independent.
system for the VS100. I stole a fair amount of code
from W, surrounded it with an asynchronous rather
than a synchronous interface, and called it X. Overall
performance appears to be about twice that of W. The
code seems fairly solid at this point, although there are
still some deficiencies to be fixed up.
 
We at LCS have stopped using W, and are now
Scheifler, Gettys and [[Ron Newman (computer programmer)|Ron Newman]] set to work and X progressed rapidly. Version 6 was released in January [[1985]]. DEC was preparing to release its first [[Ultrix]] workstation, and X was the only windowing system likely to be ready in time. X6 was ported to DEC's QVSS display on [[MicroVAX]].
actively building applications on X. Anyone else using
W should seriously consider switching. This is not the
ultimate window system, but I believe it is a good
starting point for experimentation. Right at the moment
there is a CLU (and an Argus) interface to X; a C
interface is in the works. The three existing
applications are a text editor (TED), an Argus I/O
interface, and a primitive window manager. There is
no documentation yet; anyone crazy enough to
volunteer? I may get around to it eventually.
 
Anyone interested in seeing a demo can drop by
Color support was added in Q2 1985 to support the DEC [[VAXstation]]-II/GPX, forming what became version 9. Although MIT had licensed X6 to some outside groups for a fee, it was decided at this time to license X9 and future versions under what became known as the [[MIT License]]. X9 was released in September [[1985]].
NE43-531, although you may want to call 3-1945
first. Anyone who wants the code can come by with a
tape. Anyone interested in hacking deficiencies, feel
free to get in touch.
</syntaxhighlight>|The email in which X was introduced to the [[Project Athena]] community at [[MIT]] in June 1984<ref name="debut of x">{{cite mailing list
| url = https://www.talisman.org/x-debut.shtml
| title = window system X
| author = Robert W. Scheifler
| mailing-list = window@athena
| date = 19 June 1984
| access-date = 7 November 2012}}</ref>
}}
[[File:X11R1.jpg|left|thumb|X11R1 running on a Sun machine]]
The original idea of X emerged at MIT in 1984 as a collaboration between [[Jim Gettys]] (of [[Project Athena]]) and [[Bob Scheifler]] (of the [[MIT Laboratory for Computer Science]]). Scheifler needed a usable display environment for debugging the Argus system. [[Project Athena]] (a joint project between [[Digital Equipment Corporation|DEC]], MIT and [[IBM]] to provide easy access to computing resources for all students) needed a platform-independent graphics system to link together its heterogeneous multiple-vendor systems; the window system then under development in [[Carnegie Mellon University]]'s [[Andrew Project]] did not make licenses available, and no alternatives existed.
 
The project solved this by creating a protocol that could both run local applications and call on remote resources. In mid-1983 an initial port of [[W Window System|W]] to Unix ran at one-fifth of its speed under V; in May 1984, Scheifler replaced the [[Synchronization (computer science)|synchronous]] [[protocol (computing)|protocol]] of W with an [[wikt:asynchronous|asynchronous]] protocol and the display lists with immediate mode graphics to make X version 1. X became the first windowing system environment to offer true hardware independence and vendor independence.
A group at [[Brown University]] ported version 9 to the [[IBM]] [[RT/PC]], but problems with reading unaligned data on the RT forced an incompatible protocol change, leading to version 10 in late 1985. By [[1986]], outside organizations were asking for X. X10R2 was released in [[January]] [[1986]]. X10R3 was released in [[February]] [[1986]] and was the first version to achieve wide deployment, with both DEC and [[Hewlett-Packard]] releasing products based on it. Other groups ported X10 to [[Apollo Computers|Apollo]] or [[Sun Microsystems|Sun]] workstations and even the IBM [[PC/AT]]. The first commercial application for X (a mechanical computer-aided engineering system that ran on VAXes and displayed on PCs running an X Server) was demonstrated at the Autofact trade show at that time. X10R4 was the last version of X10, released in December [[1986]].
 
Scheifler, Gettys and Ron Newman set to work and X progressed rapidly. They released Version 6 in January 1985. DEC, then preparing to release its first [[Ultrix]] workstation, judged X the only windowing system likely to become available in time. DEC engineers ported X6 to DEC's QVSS display on [[MicroVAX]].
Although X10 was interesting and powerful, it had become obvious that a more hardware-neutral redesign of the X protocol was desirable before it was too widely deployed; but the scale of such a complete redesign was beyond the resources available at MIT alone. As it happened, DEC's [[Western Software Laboratory]] was between projects. [[Smokey Wallace]] of DEC WSL and Jim Gettys proposed that X11 be built at DEC WSL and made freely available under the same terms as X9 and X10. It was started in May [[1986]]. The protocol was finalised in August. Alpha testing of the software started in February [[1987]], beta testing in May and X11 was finally released on [[September 15]], [[1987]].
 
In the second quarter of 1985, X acquired [[X11 color names|color]] support to function in the DEC [[VAXstation]]-II/GPX, forming what became version 9.
The X11 protocol design was led by Scheifler and extensively discussed on open mailing lists on the nascent [[Internet]]. X therefore represents one of the first very large scale open source software projects.
 
A group at [[Brown University]] ported version 9 to the [[IBM RT PC]], but problems with reading unaligned data on the RT forced an incompatible protocol change, leading to version 10 in late 1985. X10R1 was released in 1985.<ref>{{Cite web|url=https://ohiostate.pressbooks.pub/graphicshistory/back-matter/cg-historical-timeline/|title=CG Historical Timeline|date=20 June 2017 |last1=Carlson |first1=Wayne E. }}</ref> By 1986, outside organizations had begun asking for X. X10R2 was released in January 1986, then X10R3 in February 1986. Although MIT had licensed X6 to some outside groups for a fee, it decided at this time to license X10R3 and future versions under what became known as the [[MIT License]], intending to popularize X further and, in return, hoping that many more applications would become available. X10R3 became the first version to achieve wide deployment, with both DEC and [[Hewlett-Packard]] releasing products based on it. Other groups ported X10 to [[Apollo Computer|Apollo]] and to [[Sun Microsystems|Sun]] workstations and even to the IBM [[PC/AT]]. Demonstrations of the first commercial application for X (a mechanical computer-aided engineering system from Cognition Inc. that ran on VAXes and remotely displayed on PCs running an X server ported by Jim Fulton and Jan Hardenbergh) took place at the Autofact trade show at that time. The last version of X10, X10R4, appeared in December 1986. Attempts were made to enable X servers as real-time collaboration devices, much as [[Virtual Network Computing]] (VNC) would later allow a desktop to be shared. One such early effort was Philip J. Gust's [[SharedX]] tool.
 
Although X10 offered interesting and powerful functionality, it had become obvious that the X protocol could use a more hardware-neutral redesign before it became too widely deployed, but MIT alone would not have the resources available for such a complete redesign. As it happened, DEC's [[Western Software Laboratory]] found itself between projects with an experienced team. [[Smokey Wallace]] of DEC WSL and Jim Gettys proposed that DEC WSL build X11 and make it freely available under the same terms as X9 and X10. This process started in May 1986, with the protocol finalized in August. Alpha testing of the software started in February 1987, beta-testing in May; the release of X11 finally occurred on 15 September 1987.<ref>{{Cite newsgroup |title=X Version 11 Released (!!!) |author=Ralph R. Swick|date=Sep 15, 1987|url=https://groups.google.com/g/comp.windows.x/c/NFT3Ax2Io7g/m/Jn37aUty-2QJ |access-date=2024-11-09|newsgroup=comp.windows.x}}</ref>
 
The X11 protocol design, led by Scheifler, was extensively discussed on open mailing lists on the nascent Internet that were bridged to USENET newsgroups. Gettys moved to California to help lead the X11 development work at WSL from DEC's Systems Research Center, where Phil Karlton and Susan Angebrandt led the X11 sample server design and implementation. X therefore represents one of the first very large-scale distributed [[free and open source software]] projects.
 
===The MIT X Consortium and the X Consortium, Inc.===
By the late 1980s X was, [[Simson Garfinkel]] wrote in 1989, "Athena's most important single achievement to date". DEC reportedly believed that its development alone had made the company's donation to MIT worthwhile. Gettys joined the design team for the [[VAXstation 2000]] to ensure that X—which DEC called [[DECwindows]]—would run on it, and the company assigned 1,200 employees to port X to both Ultrix and VMS.<ref name="garfinkel19881112">{{cite news | url=http://simson.net/clips/1989/1989.TechRev.Athena.pdf | title=A Second Wind for Athena | work=Technology Review | date=November–December 1988 | access-date=25 January 2016 | author=Garfinkel, Simson L. | author-link=Simson Garfinkel}}</ref><ref name="garfinkel19890506">{{cite news | url=http://simson.net/clips/1989/1989.TechRev.Athena.pdf | title=Ripples Across the Academic Market | work=Technology Review | date=May–June 1989 | access-date=25 January 2016 | author=Garfinkel, Simson L. | pages=9–13 | author-link=Simson Garfinkel}}</ref> By 1990 IBM and [[Motorola]] announced their own X terminals. [[Bill Joy]] of [[Sun Microsystems]]—which made [[diskless workstations]] competing with X terminals—argued that X was technically flawed and could overwhelm networks.<ref name="marshall19900326">{{Cite magazine |last=Marshall |first=Martin |date=1990-03-26 |title=X Window Terminals: Pro and Con |url=https://books.google.com/books?id=1DsEAAAAMBAJ&pg=PT88#v=onepage&q&f=true |access-date=2025-04-12 |magazine=InfoWorld |page=36, 40}}</ref>
In [[1987]], with the success of X11 becoming apparent, MIT wished to relinquish the stewardship of X, but at a June 1987 meeting with nine vendors, the vendors told them they believed that a neutral party was required to keep X from fragmenting in the marketplace. In January [[1988]], the ''MIT X Consortium'' was formed as a non-profit vendor group, with Scheifler as director, to direct the future development of X in a neutral atmosphere inclusive of commercial and educational interests. Jim Fulton joined in January 1988 and [[Keith Packard]] in March 1988 as senior [[programmers|developers]], with Jim focusing on Xlib, fonts, window managers, and utilities and Keith reimplementing the server. Donna Converse and Chris Peterson joined later that year focusing on toolkits and widget sets, working closely with Ralph Swick of MIT Project Athena. The MIT X Consortium produced several significant revisions to X11, the first being Release 2 (X11R2) in February 1988.
 
In 1987, with the success of X11 becoming apparent, MIT wished to relinquish the stewardship of X, but at a June 1987 meeting with nine vendors, the vendors told MIT that they believed in the need for a neutral party to keep X from fragmenting in the marketplace. In January 1988, the ''MIT X Consortium'' formed as a non-profit vendor group, with Scheifler as director, to direct the future development of X in a neutral atmosphere inclusive of commercial and educational interests.
 
Jim Fulton joined in January 1988 and [[Keith Packard]] in March 1988 as senior [[programmers|developers]], with Jim focusing on [[Xlib]], [[Computer font|fonts]], window managers, and utilities; and Keith re-implementing the server. Donna Converse, [[Chris D. Peterson]], and Stephen Gildea joined later that year, focusing on toolkits and widget sets, working closely with Ralph Swick of MIT Project Athena. The MIT X Consortium produced several significant revisions to X11, the first (Release 2{{snd}}X11R2) in February 1988. Jay Hersh joined the staff in January 1991 to work on the [[PHIGS|PEX]] and X113D functionality. He was followed soon after by Ralph Mor (who also worked on PEX) and Dave Sternlicht. In 1993, as the MIT X Consortium prepared to depart from MIT, the staff were joined by R. Gary Cutbill, Kaleb Keithley, and David Wiggins.<ref name=xcoreext>Robert W. Scheifler and James Gettys: X Window System: Core and extension protocols: X version 11, releases 6 and 6.1, Digital Press 1996, {{ISBN|1-55558-148-X}}</ref>
 
[[File:CDE Application Builder.png|thumb|[[Common Desktop Environment]]]]
 
In 1993, the X Consortium, Inc. (a nonprofitnon-profit corporation) was formed as the successor to the MIT X Consortium. It released X11R6 on [[May 16]], [[May 1994]]. In [[1995]], it took overon the stewardshipdevelopment of the [[Motif (widget toolkitsoftware)|Motif]] toolkit and of the [[Common Desktop Environment]] for Unix systems. The X Consortium dissolved at the end of [[1996]], producing a final revision, X11R6.3, and a legacy of increasing commercial influence in the development.<ref>[https://archive.today/20120524185840/http://www.advogato.org/article/844.html Financing Volunteer Free Software Projects] 10 June 2005</ref><ref>[http://www.usenix.org/publications/library/proceedings/usenix2000/invitedtalks/gettys_html/ Lessons Learned about Open Source] 2000</ref>
 
===The Open Group===
In mid-January 1997, the X Consortium passed stewardship of X to [[The Open Group]], a vendor group formed in early 1996 by the merger of the [[Open Software Foundation]] and [[X/Open]].
 
The Open Group released X11R6.4 in early [[1998]]. Controversially, X11R6.4 departed from the traditional liberal licensing terms, as the Open Group sought to assure funding for X'sthe development of X, and specifically cited [http[XFree86]] as not significantly contributing to X.<ref>{{cite web |title=X Statement |url-status=dead |url=https://old.lwn.net/1998/0409/xstate.html |archive-url=https://web.archive.org/web/20210224185608/https://lwn.net/1998/0409/xstate.html]. |date=2 April 1998 |archive-date=24 Feb 2021 |access-date=28 Jan 2024 }}</ref> The new terms would have preventedmade itsX adoptionno by many projects (such aslonger [[XFree86free software]]): andzero-cost evenfor somenoncommercial commercialuse, but a fee vendorsotherwise. After XFree86 threatenedseemed apoised to [[fork (software)|fork]],<ref>{{cite [web|date=6 December 1998|title=XFree86(TM): Press Release|url=http://www.catxfree86.org/news/pr-980407.auhtml|url-status=dead|archive-url=https:/maffew/catweb.archive.org/web/19981206040516/http://www.xfree86.org/news/xfreepr-dawes980407.html|archive-date=6 December 1998|access-date=7 February 2017}}</ref> the Open Group [[Software relicensing|relicensed]], X11R6.4 was relicensed under the traditional license in September 1998.<ref>{{cite [web|last=Browne|first=Christopher|title=X11R6.4 Sample Implementation Changes and Concerns|url=http://cbbrowne.com/info/x11r6.4.html]|url-status=dead|archive-url=https://web.archive.org/web/20080601035445/http://cbbrowne.com/info/x11r6.4.html|archive-date=1 June 2008|website=Christopher Browne's Web Pages}}</ref> The Open Group's last release wascame as X11R6.4 patch 3.
 
===X.Org and XFree86===
[[XFree86]] originated in [[1992]] from the [[X386]] server for [[IBM PC compatible]]s included with X11R5 in 1991, written by Thomas Roell and Mark W. Snitily and donated to the MIT X Consortium by Snitily Graphics Consulting Services (SGCS). XFree86 evolved over time from being just one port of X to being the leading openand sourcemost popular implementation and the ''de facto'' standard of X's development.<ref name="xfree86.org">{{cite mailing list |url=http://www.xfree86.org/pipermail/forum/2004-February/003945.html |title=Re: Announcement: Modification to the base XFree86(TM) license. |date=2 February 2004 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Gettys |first=Jim |author-link=Jim Gettys |language=en |archive-url=https://web.archive.org/web/20050907093907/http://www.xfree86.org/pipermail/forum/2004-February/003945.html |archive-date=7 September 2005}}</ref>
 
In May [[1999]], theThe Open Group formed [[X.Org]]. X.Org supervised the release of versions X11R6.5.1 onward. X development at this time washad become moribund;<ref>{{cite [httpinterview |last=Swales |first=Steve |interviewer-last=Mitchell |interviewer-first=Robert |title=Q&A: The X Factor |work=Computerworld |date=4 February 2002 |publisher=IDG Communications |quote=The stewards of X really dribbled away to almost nothing about five or six years ago. It wasn't really keeping pace with the technology. |url=https://www.computerworld.com/softwaretopicsarticle/software2586955/appdevq-a--the-x-factor.html |url-status=live |archive-url=https:/story/0,10801,67861,00web.archive.org/web/20210626035538/https://www.computerworld.com/article/2586955/q-a--the-x-factor.html]; |archive-date=26 June 2021}}</ref> most technical innovation since the X Consortium had dissolved had taken place in the XFree86 project.<ref>{{cite [httpweb |last=Packard |first=Keith |author-link=Keith Packard |language=en |date=1999 |title=The Evolution of the X Server Architecture |url=https://keithp.com/~keithp/talks/Xarchitecture/Talk.htm] |url-status=live |archive-url=https://web.archive.org/web/20210626041817/https://keithp.com/~keithp/talks/Xarchitecture/Talk.htm |archive-date=26 June 2021}}</ref> In [[1999]], the XFree86 team joined X.Org as an honorary (non-paying) member,<ref>{{cite [mailing list |url=http://xfree86.org/pipermail/forum/2003-March/000418.html], |title=A Call For Open Governance Of X Development |date=23 March 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Wexelblat |first=David |language=en |archive-url=https://web.archive.org/web/20050212012732/http://xfree86.org/pipermail/forum/2003-March/000418.html |archive-date=12 February 2005}}</ref> encouraged by various hardware companies<ref>{{cite [httpweb |title=XFree86 joins X.Org as Honorary Member |date=1 December 1999 |url=https://slashdot.org/article.pl?sidstory/99/12/01/1342251/xfree86-joins-xorg-as-honorary-member |website=Slashdot |url-status=live |archive-url=https://web.archive.org/web/20210626234537/https://slashdot.org/story/99/12/01/1342251]/xfree86-joins-xorg-as-honorary-member |archive-date=26 June 2021}}</ref>{{failed verification|date=June 2021|reason=Source says nothing about hardware companies.}} interested in itsusing useXFree86 with Linux and in its status as the most popular version of X.
 
By [[2003]], while Linux'sthe popularity, of Linux (and hence the installed base of X,) surged, X.Org wasremained allinactive,<ref>{{cite butmailing inactivelist [|url=http://xfree86.org/pipermail/forum/2003-April/003127.html] |title=Another teleconference partial edited transcript |date=13 April 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Harris |first=Mike |language=en |archive-url=https://web.archive.org/web/20050212013335/http://xfree86.org/pipermail/forum/2003-April/003127.html |archive-date=12 February 2005}}</ref> and active development wastook place largely carried out bywithin XFree86. However, there was considerable dissent developed within XFree86. ItThe wasXFree86 perceivedproject assuffered from a perception of a far too [[The Cathedral and the Bazaar|cathedral]]-like in its development model; developers werecould unable tonot get [[Concurrent Versions System|CVS]] commit access<ref>{{cite [mailing list |url=http://www.xfree86.org/pipermail/forum/2003-March/002018.html] |title=Keith Packard issue |date=20 March 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Nolden |first=Ralf |language=en |archive-url=https://web.archive.org/web/20050212013349/http://www.xfree86.org/pipermail/forum/2003-March/002018.html |archive-date=12 February 2005}}</ref><ref>{{cite mailing list |url=https://www.mail-archive.com/devel@xfree86.org/msg03816.html |title=Cygwin/XFree86 - No longer associated with XFree86.org |date=27 October 2003 |access-date=26 June 2021 |mailing-list=devel@xfree86.org |last=Hunt |first=Harold |language=en |archive-url=https://web.archive.org/web/20210626030145/https://www.mail-archive.com/devel@xfree86.org/msg03816.html |archive-date=26 June 2021 |url-status=live}}</ref> and vendors had to maintain extensive [[patch (computing)|patch]]es [sets.<ref>{{cite web |last=Harris |first=Mike |title=9 Jan 2003 |date=9 January 2003 |url=http://www.advogato.org/person/mharris/diary.html?start=5] |archive-url=https://web.archive.org/web/20090214100029/http://www.advogato.org/person/mharris/diary.html?start=5 |archive-date=14 February 2009 |language=en}}</ref> In March 2003, the XFree86 organization expelled Keith Packard, who had joined XFree86 after the end of the original MIT X Consortium, was expelled with considerable ill- feeling.<ref>{{cite [mailing list |url=http://www.xfree86.org/pipermail/forum/2003-March/001997.html] [|title=Invitation for public discussion about the future of X |date=20 March 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last1=Dawes |first1=David |author-link1=David Dawes |last2=Cutshaw |first2=Robin |last3=Evans |first3=Marc |last4=Murphey |first4=Rich |last5=Tombs |first5=Jon |last6=Wexelblat |first6=David |language=en |archive-url=https://web.archive.org/web/20050212013104/http://www.xfree86.org/pipermail/forum/2003-March/001997.html |archive-date=12 February 2005}}</ref><ref>{{cite mailing list |url=http://www.xfree86.org/pipermail/forum/2003-March/002165.html] [|title=A Call For Open Governance Of X Development |date=21 March 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Packard |first=Keith |author-link=Keith Packard |language=en |archive-url=https://web.archive.org/web/20050212012809/http://www.xfree86.org/pipermail/forum/2003-March/002165.html |archive-date=12 February 2005}}</ref><ref>{{cite mailing list |url=http://www.xfree86.org/pipermail/forum/2003-April/003016.html] |title=Notes from a teleconference held 2003-3-27 |date=3 April 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Packard |first=Keith |author-link=Keith Packard |language=en |archive-url=https://web.archive.org/web/20050212013506/http://www.xfree86.org/pipermail/forum/2003-April/003016.html |archive-date=12 February 2005}}</ref>
 
X.Org and XFree86 began discussing a reorganisation suited to properly nurturing the development of X.<ref>{{cite mailing list [|url=http://www.xfree86.org/pipermail/forum/2003-March/000554.html] [|title=A Call For Open Governance Of X Development |date=24 March 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Swales |first=Steve |language=en |archive-url=https://web.archive.org/web/20041222151738/http://www.xfree86.org/pipermail/forum/2003-March/000554.html |archive-date=22 December 2004}}</ref><ref>{{cite mailing list |url=http://www.xfree86.org/pipermail/forum/2003-March/002415.html] [|title=A Call For Open Governance Of X Development |date=23 March 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Wexelblat |first=David |language=en |archive-url=https://web.archive.org/web/20050106075606/http://www.xfree86.org/pipermail/forum/2003-March/002415.html |archive-date=6 January 2005}}</ref><ref>{{cite mailing list |url=http://xfree86.org/pipermail/forum/2003-April/003144.html] |title=Discussing issues |date=14 April 2003 |access-date=26 June 2021 |mailing-list=forum@xfree86.org |last=Pennington |first=Havoc |author-link=Havoc Pennington |language=en |archive-url=https://web.archive.org/web/20041227204437/http://xfree86.org/pipermail/forum/2003-April/003144.html |archive-date=27 December 2004}}</ref> Jim Gettys had been pushing strongly for an open development model since at least 2000.<ref>{{cite [httpconference |url=https://www.usenix.org/legacy/publications/library/proceedings/usenix2000/invitedtalks/gettys_html/Talk.htm] |title=Lessons Learned about Open Source |first=Jim |last=Gettys |author-link=Jim Gettys |date=22 June 2000 |conference=USENIX Annual Technical Conference |url-status=live |archive-url=https://web.archive.org/web/20210627002335/https://www.usenix.org/legacy/publications/library/proceedings/usenix2000/invitedtalks/gettys_html/Talk.htm |archive-date=27 June 2021 |language=en}}</ref> Gettys, Packard and several others began discussing in detail what wasthe neededrequirements for the effective governance of X with open development.
 
Finally, in an echo of the X11R6.4 licensing dispute, XFree86 released version 4.4 in February 2004 under a more restrictive license which many projects relying on X found unacceptable.<ref>{{cite web |title=XFree86 4.4: List of Rejecting Distributors Grows |website=Slashdot |date=18 February 2004 |url=https://yro.slashdot.org/story/04/02/18/131223/xfree86-44-list-of-rejecting-distributors-grows |language=en |url-status=live |archive-url=https://web.archive.org/web/20210627002833/https://yro.slashdot.org/story/04/02/18/131223/xfree86-44-list-of-rejecting-distributors-grows |archive-date=27 June 2021}}</ref> The added clause to the license was based on the original [[BSD license]]'s advertising clause, which was viewed by the [[Free Software Foundation]] and [[Debian]] as incompatible with the [[GNU General Public License]].<ref name="dwheeler.com">{{cite web |last=Wheeler |first=David A. |title=Make Your Open Source Software GPL-Compatible. Or Else. |date=16 February 2014 |orig-date=6 May 2002 |language=en |url=https://dwheeler.com/essays/gpl-compatible.html#xfree86 |url-status=live |archive-url=https://web.archive.org/web/20210126063248/https://dwheeler.com/essays/gpl-compatible.html#xfree86 |archive-date=26 January 2021}}</ref> Other groups saw it as against the spirit of the original X. [[Theo de Raadt]] of [[OpenBSD]], for instance, threatened to [[fork (software)|fork]] XFree86 citing license concerns.<ref name="openbsd">{{cite mailing list |url=https://marc.info/?l=openbsd-misc&m=107696705911864 |title=XFree86 license |date=16 February 2004 |access-date=8 December 2009 |mailing-list=openbsd-misc |last=de Raadt |first=Theo |author-link=Theo de Raadt |language=en |archive-url=https://web.archive.org/web/20190118221625/https://marc.info/?l=openbsd-misc&m=107696705911864&w=2 |archive-date=18 January 2019 |url-status=live}}</ref> The license issue, combined with the difficulties in getting changes in, left many feeling the time was ripe for a fork.<ref>{{cite web |last=Boykin |first=Oscar |title=X Marks the Spot: Looking back at X11 Developments of Past Year |date=25 February 2004 |website=OSNews |language=en |url=https://www.osnews.com/story/6157/x-marks-the-spot-looking-back-at-x11-developments-of-past-year/ |url-status=live |archive-url=https://web.archive.org/web/20210627030537/https://www.osnews.com/story/6157/x-marks-the-spot-looking-back-at-x11-developments-of-past-year/ |archive-date=27 June 2021}}</ref>
Finally, in an echo of the X11R6.4 licensing dispute, XFree86 released version 4.4 in [[February 2004]] under a more restricted license which many projects relying on X found unacceptable [http://yro.slashdot.org/article.pl?sid=04/02/18/131223], particularly as it was held to be incompatible with the [[GNU General Public License]] [http://www.dwheeler.com/essays/gpl-compatible.html#xfree86]. This caused great controversy, and many considered the time was ripe for a [[fork (software)|fork]] [http://www.osnews.com/story.php?news_id=6157].
 
===The X.Org Foundation===
In early [[2004]], various people from X.Org and freedesktop.org formed the [[X.Org Foundation]], wasand formedthe Open Group gave it control of the <code>x.org</code> [[___domain name]]. This marked a radical change in the governance of X. Whereas the stewards of X since 1988 (including the previousprior X.Org) had been vendor organizations, the Foundation was led by software developers and used community development based on the [[The Cathedral and the Bazaar|bazaar]] model,{{citation needed|date=October 2015}} which relies on outside involvement. Membership was opened to individuals, with corporate membership being in the form of sponsorship. X.OrgSeveral alsomajor startedcorporations workingsuch very closely withas [[freedesktop.orgHewlett-Packard]] currently{{timeframe|date=February 2024}} support the X.Org Foundation.
 
The Foundation takes an oversight role over X development: technical decisions are made on their merits by achieving rough consensus among community members. Technical decisions are not made by the board of directors; in this sense, it is strongly modelled on the technically non-interventionist [[GNOME Foundation]]. The Foundation employs no developers.
The Foundation released X11R6.7 in [[April 2004]], based on XFree86 4.4RC2 with X11R6.6 changes merged. Gettys and Packard had taken the last version of XFree86 under the old license and, by making a point of an open development model and retaining GPL compatibility, brought many of the old XFree86 developers on board [http://www.dwheeler.com/essays/gpl-compatible.html#xfree86].
The Foundation released X11R6.7, the [[X.Org Server]], in April 2004, based on XFree86 4.4RC2 with X11R6.6 changes merged. Gettys and Packard had taken the last version of XFree86 under the old license and, by making a point of an open development model and retaining GPL compatibility, brought many of the old XFree86 developers on board.<ref name="dwheeler.com"/>
 
While X11 had received extensions such as OpenGL support during the 1990s, its architecture had remained fundamentally unchanged during the decade. In the early part of the 2000s, however, it was overhauled to resolve a number of problems that had surfaced over the years, including a "flawed" [[Computer font|font]] architecture, a 2D graphics system "which had always been intended to be augmented and/or replaced", and [[Latency (engineering)|latency]] issues.<ref>{{cite conference |last1=Gettys |first1=James |first2=Keith |last2=Packard |title=The (Re) Architecture of the X Window System |conference=Proc. Linux Symposium |volume=1 |year=2004 |url=https://keithp.com/~keithp/talks/xarch_ols2004/xarch_ols2004.pdf}}</ref>
X11R6.8 was released in [[September 2004]]. It added significant new features, including preliminary support for translucent windows and other sophisticated visual effects, screen magnifiers and thumbnailers, and facilities to integrate with 3D immersive display systems such as Sun's [[Project Looking Glass]] and the [[Croquet project]]. Policy for the visual appearance is provided by external applications called ''compositing managers''.
X11R6.8 came out in September 2004. It added significant new features, including preliminary support for translucent windows and other sophisticated visual effects, screen magnifiers and thumbnailers, and facilities to integrate with 3D immersive display systems such as Sun's [[Project Looking Glass]] and the [[Croquet project]]. External applications called ''[[compositing window manager]]s'' provide policy for the visual appearance.
 
On 21 December 2005,<ref>[http://xorg.freedesktop.org/wiki/Other/Press/X11R6970Released?action=show&redirect=PressReleases%2FX11R6970Released X11R6.9 and X11R7.0 Officially Released] 21 December 2005</ref> X.Org released X11R6.9, the monolithic [[source code|source]] tree for legacy users, and X11R7.0, the same source code separated into independent modules, each maintainable in separate projects.<ref>[https://www.x.org/wiki/ModularizationProposal/ Modularization Proposal] 31 March 2005</ref> The Foundation released X11R7.1 on 22 May 2006, about four months after 7.0, with considerable feature improvements.<ref>[https://www.x.org/wiki/ChangesForX11R71/ Proposed Changes for X11R7.1] 21 April 2006</ref>
==Future directions==
With the X.Org Foundation and freedesktop.org, X development is progressing rapidly once more. Present and future releases are intended as usable finished products, not merely a base for vendors to build a product upon.
 
XFree86 development continued for a few more years, with 4.8.0 being released on 15 December 2008.<ref>{{cite web|url=http://www.xfree86.org/releases/rel480.html|title=The Current XFree86 Release: 4.8.0.|work=xfree86.org}}</ref>
Hardware manipulation is being moved to the kernel, the plan being for the video hardware to be accessed only via [[OpenGL]] ([[Mesa (OpenGL)|Mesa]] for systems without hardware OpenGL) and the [[Direct Rendering Infrastructure]] module, introduced in XFree86 version 4 and present in X11R6.7 and later [http://keithp.com/~keithp/talks/xserver_ols2004/].
 
The architecture of the reference implementation is also being separated into independent modules that can each be maintained as separate projects. X11R6.9 will be the monolithic [[source code]] and X11R7.0 the modular source code for the same set of features [http://wiki.x.org/wiki/ModularizationProposal]. This is tentatively scheduled for release in [[October 2005]] [http://xorg.freedesktop.org/wiki/X11R6970ReleasePlan]. The Foundation plans to release X11R7.1 within six months of 7.0, with considerable feature improvements [http://xorg.freedesktop.org/wiki/ChangesForX11R71].
<!-- much of the answers to criticisms should be shifted to this section, because Xorg is finally addressing them. Crib from and link to Gettys' late 2003 paper. -->
 
==Nomenclature==
The proper names for the system are listed in the manual page as X; X Window System; X Version 11; X Window System, Version 11; or X11.<ref>[https://www.x.org/archive//X11R6.8.2/doc/X.7.html X – a portable, network-transparent window system] February 2005</ref>
"X Window System" is commonly shortened to "X11" or simply "X". The term "X Windows" (in the manner of "Microsoft Windows") is officially deprecated and generally considered incorrect, though it has been in common use since the inception of X and has been used deliberately for literary effect, for example in the ''[[Unix-Haters Handbook]]''.
 
The term "X-Windows" (in the manner of the subsequently released "Microsoft Windows") is not officially endorsed{{snd}}with X Consortium release manager Matt Landau stating in 1993, "There is no such thing as 'X Windows' or 'X Window', despite the repeated misuse of the forms by the trade rags"<ref>{{cite newsgroup | author = Landau, Matt | title = Re: Asynchronous X Windows? | date = 23 April 1993 | newsgroup = comp.windows.x |message-id= 1rccdq$s6s@armory.centerline.com | url = https://groups.google.com/forum/?fromgroups=#!topic/comp.unix.solaris/CtGaZqWiFNc | access-date = 6 March 2013}}</ref>{{snd}}though it has been in common informal use since early in the history of X<ref>''e.g.'' [http://www.phy.ohiou.edu/computer/xwin/xfaq.html "X Windows FAQ"] {{Webarchive|url=https://web.archive.org/web/20130511192422/http://www.phy.ohiou.edu/computer/xwin/xfaq.html |date=11 May 2013 }}, the FAQ for Usenet newsgroup comp.windows.x.</ref> and has been used deliberately for provocative effect, for example in the ''[[Unix-Haters Handbook]]''.<ref name="The X-Windows Disaster"/>
 
===Key terms===
The X Window System has nuanced usage of a number of terms when compared to common usage, particularly "display" and "screen", a subset of which is given here for convenience:
; device: A graphics device such as a computer graphics card or a computer motherboard's integrated graphics chipset.
; monitor: A physical device such as a [[Cathode-ray tube|CRT]] or a flat screen computer display.
; screen: An area into which graphics may be rendered, either through software alone into system memory as with [[VNC]], or within a graphics device, some of which can render into more than one screen simultaneously, either viewable simultaneously or interchangeably. Interchangeable screens are often set up to be notionally left and right from one another, flipping from one to the next as the mouse pointer reaches the edge of the monitor.
; virtual screen: Two different meanings are associated with this term:
:* A technique allowing panning a monitor around a screen running at a larger resolution than the monitor is currently displaying.
:* An effect simulated by a window manager by maintaining window position information in a larger coordinate system than the screen and allowing panning by simply moving the windows in response to the user.
; display: A collection of screens, often involving multiple monitors, generally configured to allow the mouse to move the pointer to any position within them. [[Linux]]-based workstations are usually capable of having multiple displays, among which the user can switch with a special keyboard combination such as control-alt-''function-key'', simultaneously flipping all the monitors from showing the screens of one display to the screens in another.
 
The term "display" should not be confused with the more specialized jargon "[[Zaphod display]]". The latter is a rare configuration allowing multiple users of a single computer to each have an independent set of display, mouse, and keyboard, as though they were using separate computers, but at a lower per-seat cost.
 
==Release history==
{{See also|XFree86#Release history|X.Org Server#Releases}}
 
{|class="wikitable sortable"
{| {{prettytable}}
|- style="background:#ccf;"
! Version
! Release date
! Most important changes
|-
!Version
|X1
!style="width:10em"|Release date
|June [[1984]]
!Most important changes
|First time the software called X; fundamental changes were made that distinguished it from W.
|-
|{{Version|o|X1|sortKey=1.0}}
|X6
|{{dts|format=dmy|1984|06}}
|January [[1985]]
|First use of the name "X"; fundamental changes distinguishing the product from [[W Window System|W]].
|-
|{{Version|o|X6|sortKey=6.0}}
|{{dts|format=dmy|1985|01}}
|First version licensed to a handful of outside companies.
|-
|{{Version|o|X9|sortKey=9.0}}
|X9
|{{dts|format=dmy|1985|09}}
|September [[1985]]
|Color. First release under [[MIT License]].
|-
|{{Version|o|X10|sortKey=10.0}}
|X10
|{{dts|format=dmy|1985|11}}
|late [[1985]]
|IBM RT/ PC, AT (running [[DOS]]), and others.
|-
|{{Version|o|X10R2|sortKey=10.2}}
|X10R2
|{{dts|format=dmy|1986|01}}
|January [[1986]]
|
|-
|{{Version|o|X10R3|sortKey=10.3}}
|X10R3
|{{dts|format=dmy|1986|02}}
|February [[1986]]
|First freely redistributable X release. Earlier releases required a BSD source license to cover code changes to init/getty to support login. [[Ultrix Window Manager|uwm]] made standard window manager.
|First release outside MIT.
|-
|{{Version|o|X10R4|sortKey=10.4}}
|X10R4
|{{dts|format=dmy|1986|12}}
|December [[1986]]
|Last version of X10.
|-
|{{Version|o|X11|sortKey=11.0}}
|X11
|{{dts|format=dmy|1987|09|15}}
|[[September 15]], [[1987]]
|First release of the current protocol.
|-
|{{Version|o|X11R2|sortKey=11.2}}
|X11R2
|{{dts|format=dmy|1988|02}}
|February [[1988]]
|First X Consortium release. <ref>[http://www.linuxdocs.org/HOWTOs/XWindow-User-HOWTO-2.html The X Window System: History and Architecture] 1 September 1999</ref>
|-
|{{Version|o|X11R3|sortKey=11.3}}
|X11R3
|{{dts|format=dmy|1988|10|25}}
|[[October 25]], [[1988]]
|[[X Display Manager (implementation)|XDM]].
|
|-
|{{Version|o|X11R4|sortKey=11.4}}
|X11R4
|{{dts|format=dmy|1989|12|22}}
|[[December 22]], [[1989]]
|Application improvements, new fonts[[XDMCP]], [[twm]] (from the beginning known as Tom's window manager) brought in as standard window manager, application improvements, [[shape extension]], new fonts.
|-
|{{Version|o|X11R5|sortKey=11.5}}
|X11R5
|{{dts|format=dmy|1991|09|05}}
|[[September 5]], [[1991]]
|[[X386|X386 1.2]], [[PHIGS|PEX]], Xcms ([[color management]]), [[X Font Server|font server]], [[X video extension]].
|X386
|-
|{{Version|o|X11R6|sortKey=11.6}}
|X11R6
|{{dts|format=dmy|1994|05|16}}
|[[May 16]], [[1994]]
|[[ICCCM]] v2.0; Inter-Client Exchange; X Session Management; X Synchronization extension; [[X Image Extension|X Image extension]]; XTEST extension; X Input; X Big Requests; XC-MISC; XFree86 changes.
|-
|{{Version|o|X11R6.1|sortKey=11.6.1}}
|{{dts|format=dmy|1996|03|14}}
|[[March 14]], [[1996]]
|X Double Buffer extension; [[X Keyboardkeyboard extension]]; X Record extension.
|-
|{{Version|o|X11R6.2<br />X11R6.3 (Broadway)|sortKey=11.6.3}}
|{{dts|format=dmy|1996|12|23}}
|[[December 23]], [[1996]]
|Web functionality, [[Low Bandwidth X|LBX]]. Last X Consortium release. X11R6.2 is the tag for a subset of X11R6.3 (Broadway) with the only new features over R6.1 being XPrint and the Xlib implementation of vertical writing and user-defined character support. <ref>[http://www.xfree86.org/3.3.6/RELNOTES1.html XFree86 and X11R6.3] December 1999</ref> Broadway was the code name for running X applications on a [[web browser]] via a [[browser plugin]] and [[Low Bandwidth X]].<ref>{{Cite web |date=1997 |title=X11R6.3 (Broadway) Overview |url=http://www.opengroup.org/tech/desktop/x/broadway.htm |url-status=dead |archive-url=https://web.archive.org/web/19970707154444/http://www.opengroup.org/tech/desktop/x/broadway.htm |archive-date=1997-07-07 |access-date= |website=[[The Open Group]]}}</ref>
|-
|{{Version|o|X11R6.4|sortKey=11.6.4}}
|{{dts|format=dmy|1998|03|31}}
|[[March 31]], [[1998]]
|[[Xinerama]]. <ref>[http://www.opengroup.org/tech/desktop/Press_Releases/x11r6.4ga.htm The Open Group Announces Internet-Ready X Window System X11R6.4] 31 March 1998</ref>
|-
|{{Version|o|X11R6.5|sortKey=11.6.5}}
|{{dts|format=dmy|2000}}
|
|Internal X.org release; not made publicly available.
|-
|{{Version|o|X11R6.5.1|sortKey=11.6.5.1}}
|{{dts|format=dmy|2000|08|20}}
|[[August 20]], [[2000]]
|
|-
|{{Version|o|X11R6.6|sortKey=11.6.6}}
|{{dts|format=dmy|2001|04|04}}
|[[April 4]], [[2001]]
|Bug fixes, XFree86 changes.
|-
|{{Version|o|X11R6.7.0|sortKey=11.6.7.0}}
|{{dts|format=dmy|2004|04|06}}
|[[April 6]], [[2004]]
|First X.Org Foundation release, incorporating XFree86 4.4rc2. Full end-user distribution. Removal of [[X Image Extension|XIE]], [[PHIGS|PEX]] and libxml2. <ref>[httphttps://lwn.net/Articles/79302/ X.Org Foundation releases X Window System X11R6.7] 7 April 2004</ref>
|-
|{{Version|o|X11R6.8.0|sortKey=11.6.8.0}}
|{{dts|format=dmy|2004|09|08}}
|[[September 8]], [[2004]]
|Window translucency, XDamage, Distributed Multihead X, [[XFixes]], Composite, <!--Assume comma ok before next:-->[https://freedesktop.org/wiki/Software/XEvIE/ XEvIE].
|-
|{{Version|o|X11R6.8.1|sortKey=11.6.8.1}}
|{{dts|format=dmy|2004|09|17}}
|[[September 17]], [[2004]]
|Security fix in [[XPM (image format)|libxpm]].
|-
|'''{{Version|o|X11R6.8.2'''|sortKey=11.6.8.2}}
|{{dts|format=dmy|2005|02|10}}
|[[February 10]], [[2005]]
|Bug fixes, driver updates.
|-
|{{Version|o|X11R6.9<br />X11R7.0|sortKey=11.7.0}}
|{{dts|format=dmy|2005|12|21}}
|[[October 2005]] (tentative) [http://xorg.freedesktop.org/wiki/X11R6970ReleasePlan]
|Driver[[X.Org improvementsServer|XServer 1.0.1]], minor features[[EXA]], major source [[code refactoring ]].<ref>[httphttps://xorgwww.freedesktopx.org/wiki/ChangesSince68]./ 7Changes Since R6.08] is21 toOctober be2005</ref> From the same source-code base, the modular [[GNU build system|autotooled]] version andbecame 67.90 and the monolithic [[imake]] version ofwas thefrozen sameat source code6.9.
|-
|{{Version|o|X11R7.1|sortKey=11.7.1}}
|{{dts|format=dmy|2006|05|22}}
|[[2006]]
|XServer 1.1.0, EXA enhancements, [[KDrive]] integrated, [[AIGLX]], OS and platform support enhancements.<ref>[https://www.x.org/archive//X11R7.1/doc/RELNOTES.html Release Notes for X11R7.1] 22 May 2006</ref>
|Larger changes not included in 6.9/7.0 [http://xorg.freedesktop.org/wiki/ChangesForX11R71].
|-
|{{Version|o|X11R7.2|sortKey=11.7.2}}
|{{dts|format=dmy|2007|02|15}}
|XServer 1.2.0, Removal of [[Low Bandwidth X|LBX]] and the built-in keyboard driver, X-ACE, [[XCB]], autoconfig improvements, cleanups.<ref>[https://www.x.org/wiki/Releases/7.2/?action=show&redirect=ChangesForX11R72 The X.Org Foundation released 7.2.0 (aka X11R7.2)] 15 February 2007</ref>
|-
|{{Version|o|X11R7.3|sortKey=11.7.3}}
|{{dts|format=dmy|2007|09|06}}
|XServer 1.4.0, Input [[hotplug]], output hotplug ([[RandR]] 1.2), [[DTrace]] probes, [[Peripheral Component Interconnect|PCI]] ___domain support.<ref>[https://www.x.org/wiki/Server14Branch X server version 1.4 release plans]. Retrieved 25 August 2007.</ref>
|-
|{{Version|o|X11R7.4|sortKey=11.7.4}}
|{{dts|format=dmy|2008|09|23}}
|XServer 1.5.1, XACE, PCI-rework, EXA speed-ups, _X_EXPORT, [[GLX]] 1.4, faster startup and shutdown.<ref>{{cite web |url=https://www.x.org/wiki/Releases/7.4 |title=Foundation Releases X7.4 |publisher=X.org |access-date=10 November 2009}}</ref>
|-
|{{Version|o|X11R7.5|sortKey=11.7.5}}
|{{dts|format=dmy|2009|10|26}}<ref>{{cite web|url=https://www.x.org/wiki/Other/Press/X11R75Released |title=7.5 release announcement |publisher=X.org |access-date=10 November 2009}}</ref>
|XServer 1.7.1, Xi 2, XGE, E-[[EDID]] support, [[RandR]] 1.3, [[Multi-Pointer X|MPX]], predictable pointer acceleration, [[DRI2]] memory manager, SELinux security module, further removal of obsolete libraries and extensions.<ref>{{cite web |url=https://www.x.org/wiki/Releases/7.5 |title=Wiki – 7.5 release plans |publisher=X.org |access-date=10 November 2009}}</ref>
|-
|{{Version|o|X11R7.6|sortKey=11.7.6}}
|{{dts|format=dmy|2010|12|20}}<ref>{{cite web|url=https://www.x.org/wiki/Other/Press/X11R76Released |title=7.6 release announcement |publisher=X.org |date=20 December 2010 |access-date=21 December 2010}}</ref>
|X Server 1.9.3, [[XCB]] requirement.<ref>{{cite web|url=https://lists.x.org/archives/xorg-devel/2009-October/002995.html |title=Thinking towards 7.6 katamari, including xcb |date=21 October 2009 |publisher=Lists.x.org |access-date=10 November 2009}}</ref><ref>{{cite web |url=https://www.x.org/wiki/Releases/7.6 |title=Wiki – 7.6 release plans |publisher=X.org |access-date=21 December 2010}}</ref>
|-
|{{Version|c|X11R7.7|sortKey=11.7.7}}
|{{dts|format=dmy|2012|06|06}}
|X Server 1.12.2; Sync extension 3.1: adds Fence object support; Xi 2.2 multitouch support; XFixes 5.0: Pointer Barriers.<ref>{{cite web|url=https://lists.x.org/archives/xorg-announce/2012-June/001977.html |title=[ANNOUNCE] X11R7.7 |date=6 June 2012 |publisher=Lists.x.org |access-date=7 June 2012}}</ref><ref>{{cite web|url=https://www.x.org/wiki/Releases/7.7 |title=Releases/7.7 |publisher=X.org |access-date=7 June 2012}}</ref>
|-
|colspan=3 |{{Version|l|show=010100}}
|}
 
On the prospect of future versions, the X.org website states:<ref>{{cite web|url=https://www.x.org/wiki/Releases/7.8 |title=Releases/7.8 |publisher=X.org |access-date=6 May 2014}}</ref>
 
{{Blockquote|X.Org continues to develop and release the X Window System software components.
 
These are released individually as each component is ready, without waiting for a overall X Window System "katamari" release schedule - see the individual X.Org releases directory for downloads, and the xorg-announce archives or git repositories for details on included changes.
 
No release plan for a X11R7.8 rollup katamari release has been proposed.}}
 
==See also==
{{Portal|Free and open-source software}}
* [[Bitstream Speedo Fonts]]
* [[Cairo (graphics)]]
* [[DESQview/X]]
* [[DirectFB]]
* [[General Graphics Interface]]
* [[History of the graphical user interface]]
* [[List of Unix commands]]
* [[Microwindows|Microwindows (Nano-X)]]
* [[rio (windowing system)|rio]] – the windowing system for [[Plan 9 from Bell Labs|Plan 9]]
* [[SVGALib]]
* [[VirtualGL]]
* [[GEM (desktop environment)#X/GEM|X/GEM]]
* [[X11 color names]]
* [[Xgl]]
* [[Xmark]]
 
==Notes==
{{Reflist|30em}}
 
==References==
{{Refbegin|2}}
*Robert W. Scheifler and James Gettys: ''X Window System: Core and extension protocols: X version 11, releases 6 and 6.1'', Digital Press 1996, ISBN 1-55558-148-X
* {{cite web |author-link1=Jim Gettys |first1=James |last1=Gettys |first2=Philip L. |last2=Karlton |author-link3=Scott A. McGregor |first3=Scott A. |last3=McGregor |url=http://www.hpl.hp.com/techreports/Compaq-DEC/CRL-90-8.pdf |title=The X Window System, Version 11 |work=Software: Practice and Experience |date=10 December 1990 |url-status=dead |archive-url=https://web.archive.org/web/20231019083448/http://www.hpl.hp.com/techreports/Compaq-DEC/CRL-90-8.pdf |archive-date= Oct 19, 2023 }}
*[http://keithp.com/~keithp/talks/Xarchitecture/Talk.htm The Evolution of the X Server Architecture] ([[Keith Packard]], 1999)
* {{cite journal |first1=Hania |last1=Gajewska |first2=Mark S. |last2=Manasse |first3=Joel |last3=McCormack |url=https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=BF6ECA6E7FEBD2FBC5A0C935008A0DC2?doi=10.1.1.8.2723&rep=rep1&type=pdf |title=Why X Is Not Our Ideal Window System |journal =Software{{snd}} Practice & Experience |volume=20 |issue=S2 |date=October 1990 |citeseerx=10.1.1.8.2723 |url-status=dead |archive-url=https://web.archive.org/web/20220704070843/https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=BF6ECA6E7FEBD2FBC5A0C935008A0DC2?doi=10.1.1.8.2723&rep=rep1&type=pdf |archive-date= Jul 4, 2022 }}
*[http://www.cat.org.au/maffew/cat/xfree-dawes.html The means to an X for Linux: an interview with David Dawes from XFree86.org] (Matthew Arnison, CAT TV, June 1999)
* {{Cite book|author1=Linda Mui|author2=Eric Pearce|title=X Window System Volume 8: X Window System Administrator's Guide for X11 Release 4 and Release 5, 3rd edition|publisher=O'Reilly and Associates|date=July 1993|ISBN=0-937175-83-8}}
*[http://www.usenix.org/publications/library/proceedings/usenix2000/invitedtalks/gettys_html/Talk.htm Lessons Learned about Open Source] ([[Jim Gettys]], [[USENIX]] 2000 talk on the history of X)
* {{cite book |chapter-url=http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html |chapter=The X-Windows Disaster |title=[[UNIX-HATERS Handbook]] |first1=Don |last1=Hopkins |publisher= Don Hopkins' Gallery |url-status=live |archive-url=https://web.archive.org/web/20230829202916/http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html |archive-date= Aug 29, 2023 }}
*[http://cbbrowne.com/info/xbloat.html On the Thesis that X is Big/Bloated/Obsolete and Should Be Replaced] (Christopher B. Browne)
* Robert W. Scheifler and James Gettys: ''X Window System: Core and extension protocols: X version 11, releases 6 and 6.1'', Digital Press 1996, {{ISBN|1-55558-148-X}}
*[http://freedesktop.org/~jg/roadmap.html Open Source Desktop Technology Road Map] (Jim Gettys, 09 Dec 2003)
* {{Cite web|url=https://keithp.com/~keithp/talks/Xarchitecture/Talk.htm|title=The Evolution of the X Server Architecture|author=Keith Packard|date=1999}}
*[http://www.osnews.com/story.php?news_id=6157 X Marks the Spot: Looking back at X11 Developments of Past Year] (Oscar Boykin, ''OSNews'', 25 Feb 2004)
* {{Cite web|url=http://www.cat.org.au/maffew/cat/xfree-dawes.html|archive-url=https://web.archive.org/web/20060916213448/http://www.cat.org.au/maffew/cat/xfree-dawes.html|archive-date=2006-09-16|title=The means to an X for Linux: an interview with David Dawes from XFree86.org|author=Matthew Arnison|website=cat.org.au|date=June 1999}}
*[http://keithp.com/~keithp/talks/xserver_ols2004/ Getting X Off The Hardware] (Keith Packard, July 2004 [[Ottawa Linux Symposium]] talk)
* {{Cite web|url=https://www.usenix.org/legacy/publications/library/proceedings/usenix2000/invitedtalks/gettys_html/Talk.htm|title=Lessons Learned about Open Source|author=Jim Gettys|publisher=USENIX|date=2000}}
*[http://developers.slashdot.org/comments.pl?sid=75257&cid=6734612 Why Apple didn't use X for the window system] (Mike Paquette, Apple Computer)
* {{Cite web|url=https://linuxfinances.info/info/xbloat.html|archive-url=https://web.archive.org/web/20160312092336/http://linuxfinances.info/info/xbloat.html|archive-date=2016-03-12|title=On the Thesis that X is Big/Bloated/Obsolete and Should Be Replaced|author=Christopher B. Browne}}
*[http://www.dwheeler.com/essays/gpl-compatible.html#xfree86 The Cautionary Tale of XFree86] (from ''Make Your Open Source Software GPL-Compatible. Or Else.'' by [[David A. Wheeler]], 16 Feb 2005)
* {{Cite web|url=http://people.freedesktop.org/~jg/roadmap.html|archive-url=https://web.archive.org/web/20080413140042/http://people.freedesktop.org/~jg/roadmap.html|archive-date=2008-04-13|title=Open Source Desktop Technology Road Map|author=Jim Gettys|date=9 December 2003}}
* {{Cite web|url=https://www.osnews.com/story/6157/x-marks-the-spot-looking-back-at-x11-developments-of-past-year/|title=X Marks the Spot: Looking back at X11 Developments of Past Year|author=Oscar Boykin|website=OSNews|date=25 February 2004}}
* {{Cite conference|url=https://keithp.com/~keithp/talks/xserver_ols2004/ |title=Getting X Off The Hardware|author=Keith Packard|date=July 2004|conference=Ottawa Linux Symposium}}
* {{Cite web |author=mpaque |date=August 19, 2003 |title=Why Apple didn't use X for the window system |url=https://developers.slashdot.org/comments.pl?sid=75257&cid=6734612 |url-status=live |archive-url=https://web.archive.org/web/20231112181649/https://developers.slashdot.org/comments.pl?sid=75257&cid=6734612 |archive-date=Nov 12, 2023 |website=Slashdot}}
* {{cite web|url=https://www.x.org/archive/X11R6.8.2/doc/X.7.html|title=X Man Pag|website=x.org|access-date=9 November 2024}}
* {{cite conference
| title = SNAP Computing and the X Window System
| url = https://www.landley.net/kdocs/mirror/ols2005v1.pdf
| first = Jim
| last = Gettys
| conference = Proceedings of the Linux Symposium
| volume = One
| ___location = Ottawa, Ontario, Canada
| date = July 2005}}
* {{Cite web|url=https://www.ibm.com/docs/en/zos/3.1.0?topic=zcsipgr-xwindow-system-interface-in-zos-communications-server-environment|title=X Window System interface in the z/OS Communications Server environment|publisher=IBM|access-date=9 November 2024}}
{{Refend}}
 
==External links==
{{Commons category}}
*[http://www.x.org/ X.Org Foundation] (official home page)
{{Wikibooks|Guide to X11}}
*[http://catalog.com/hopkins/unix-haters/x-windows/disaster.html The X Windows Disaster] (''[[UNIX-HATERS Handbook]]'')
* {{Official website}}
*[http://dri.freedesktop.org/~jonsmirl/graphics.html The State of Linux Graphics] (Jon Smirl, 30 August 2005)
*[http://h30097.www3.hp.com/docs/dev_doc/DOCUMENTATION/HTML/AR5NHATE/TOC.HTM Writing a Graphics Device Driver and DDX for the DIGITAL UNIX X Server]
 
===Notable implementations===
*[http://xorg.freedesktop.org XOrg Foundation Open Source Public Implementation of X11] &mdash; the official reference implementation
*[http://www.xfree86.org XFree86] &mdash; for many years the most popular version, particularly on the open-source Unix-like platforms
*[http://www.apple.com/macosx/features/x11/ X11 for Mac OS X] &mdash; [[Apple X11]], closely integrated with Mac OS X
 
{{XWinSys}}
[[Category:X Window System|*]]
{{Open Group standards}}
[[Category:Windowing systems]]
{{X desktop environments and window managers}}
[[Category:Application programming interfaces]]
{{Authority control}}
 
[[Category:X Window System| ]]
[[ca:XWindow]]
[[Category:Massachusetts Institute of Technology software]]
[[de:X Window System]]
[[esCategory:XOpen WindowGroup Systemstandards]]
[[Category:Remote desktop]]
[[fr:X Window System]]
[[Category:Software using the MIT license]]
[[it:X Window System]]
[[Category:Unix windowing system-related software]]
[[lt:X Window]]
[[nl:X Window-systeem]]
[[ja:X Window System]]
[[pl:X Window System]]
[[pt:X Window System]]
[[ru:X Window System]]
[[fi:X Window System]]
[[sv:X Window System]]
[[uk:X Window System]]