X Window System

概要

Xは1984年、マサチューセッツ工科大学が開発した。現在のバージョンであるX11は1987年9月に登場した。現在はX.Org FoundationがXプロジェクトを主導している。リファレンス実装であるversion 11 release 7.3（2007年9月6日）はフリーソフトウェアとしてMIT Licenseおよび類似のライセンスで提供している。
Xは、GUI環境構築のための基本フレームワークやプリミティブを提供する。ウィンドウを画面上に描画したり、移動させたり、マウスやキーボードを使ってやり取りする。Xはユーザインタフェースを規定しない。それは、個々のクライアントプログラムの管理下にある。そのため、Xに基づいた環境の見た目は様々である。プログラムごとにインタフェースは異なる。XはOSの中核 (kernel) には含まれない。アプリケーション層構築の基盤となっている。
それ以前の表示プロトコルとは異なり、Xは表示機器に付属した（あるいは統合された）システムではない。ネットワークコネクションを通して使うことを意図して設計している。X の特徴は、Xプロトコルという、画面表示や入出力時に利用するプロトコルがネットワーク透過だということである。そのため、手元のマシンの表示と遠隔のマシンとの表示で表示方法に差がない。このことは、ネットワークを利用したUNIXワークステーション群でGUI表示を行なうのに便利であり、UNIXマシンの普及と共にXも普及していった。

ユーザインタフェース

Xは意図的にアプリケーションのユーザインタフェースの仕様を含まないようにしている。ボタン、メニュー、ウィンドウのタイトルバーなどである。代わりに、ウィンドウマネージャ、GUIウィジェット・ツールキット、デスクトップ環境、アプリケーション固有のグラフィカルユーザインタフェースなどがそのような詳細を定義し提供している。そのため、典型的なXのインタフェースを示すことは不可能である。
ウィンドウマネージャは、アプリケーションのウィンドウの位置と見た目を制御する。そのインタフェースはWindowsやMacintoshと似ているものもあるし（GNOMEのMetacity、KDEのKWin、XfceのXfwmなど）、全く異なるものもある。実用本位のウィンドウマネージャもあれば（twmなど）、デスクトップ環境に近い機能を持つものもある（Enlightenmentなど）。
多くのユーザーはデスクトップ環境を通してXを利用している。デスクトップ環境にはウィンドウマネージャ、各種アプリケーションなどが一貫したインタフェースで含まれている。GNOME、KDE、Xfceなどが主なデスクトップ環境である。freedesktop.orgはデスクトップ環境間の相互運用性を高めることを目的としている。
Xサーバは、グラフィカルなデスクトップでのキーボードとマウス操作を管理している。そのため、一部のショートカットキーはXサーバと結び付けられている。Control-Alt-Backspaceは通常、現在動作しているXセッションを終了させる。Control-Altとファンクションキーの組合せは、一般にバーチャルコンソールに連携している。ただし、これは個々のXサーバの実装の詳細であり、常に同じとは限らない。例えば、WindowsやMacintoshで動作するXサーバでは、そのようなショートカットキーは提供されない。

OpenVMS

HPEおよびVSIのOpenVMSにはXとCDE (DECwindows) が標準のデスクトップ環境として含まれている。

OS-9

OS-9にもかつてメーカー純正のXサーバがあった。

macOS

X.Org ServerはmacOSでの動作をサポートしており、X11.app (XQuartz) として公開されている。Mac OS X v10.5~v10.7では標準搭載されていた。
Mac OS X v10.3では、XFree86 4.3とX11R6.6に基づいたX11.appがMac OS Xに統合されていた。10.5以降はXFree86ではなく、X.Org Serverになった。古いMac OS 7などにもサードパーティー製のXサーバがある。

Windows

X.Org ServerはCygwin併用の形でWindowsでの動作をサポートしており、Cygwin/X (Xwin) として公開されている。
それ以外にもサードパーティーから各種実装が出ている。X.Org Serverから派生した物もあれば、1から実装されている物もある。フリーソフトウェアとしては、WeirdMind、WeirdX などがある。プロプライエタリ・ソフトウェアとしては、ASTEC-X、Exceed、ReflectionX、WiredX、Xmanager、X-Deep/32、Xming、X-Win32、XVision Eclipse などがある。かつては、Xoftware/32（ネットマネージ製）、DynaWinX、PC-Xware（NCD製、数社が取り扱い）、Super-X（Frontier Technologies製、コンテック扱い）、eXodus for Windows（White Pine Software製、DIT扱い）という商品もあった。これらは通常、リモートのXクライアントを表示・制御するのに使われる。

スマートフォン・タブレット

MeeGo、Maemo、Tizen、Ubuntu Touchなど各種Linuxスマートフォン・タブレットでもX Window System (X.Org Server) が使われている。

X端末

X端末は、Xサーバを実行するシンクライアントである。これはUNIXワークステーションが高価だったころ、大きめのサーバを複数人で共有し、各人がグラフィカルな環境を使えるようにする安価の手段として人気となった。また、これはMITのプロジェクトが本来想定していた方向性でもある。
X端末は、ネットワーク上で X Display Manager Control Protocol (XDMCP) を使って利用可能なホスト（クライアントを実行できるマシン）を探す。まず最初のホストでXディスプレイマネージャを起動する必要がある。
専用ハードウェアとしてのX端末はその後少なくなり、より安価なXサーバ用端末としてPCや新たなシンクライアントが使われるようになっている。

Xの限界と批判

UNIX-HATERS Handbook（1994年）は、1つの章を割いてXの問題を論じている。Why X Is Not Our Ideal Window System（1990年、Gajewska, Manasse, McCormack）は、Xプロトコルの問題を詳細に論じ、改善の方法を示唆している。

ユーザインタフェース機能

Xはユーザインタフェースの仕様やアプリケーション間通信の仕様を意図的に含まないようにしている。このためそれぞれ全く異なったインタフェースが生まれ、アプリケーション間の連携を阻む原因ともなっている。ICCCMはクライアントの相互運用に関する仕様だが、正しく実装するのが困難なことで有名である。MotifとCDEも標準化の試みだったが、解決策とはならなかった。この問題は、プログラマやユーザーを長い間悩ませてきた。2007年現在、アプリケーションのルック・アンド・フィールとアプリケーション間通信の一貫性を保つためには、特定のデスクトップ環境あるいは特定のウィジェット・ツールキットを採用してプログラムを作成するのが一般的である。
Xプロトコルは音声を全く扱わない。そのため、サウンドカードの制御も含めた部分はOSやOSSやALSAなどのオーディオシステムが分担している。多くのプログラマはOS固有のサウンドAPIを使っている。クライアントサーバ型のサウンドシステムとしては、古くはrplayやNetwork Audio Systemがあった。その後、EsounD (GNOME)、aRts (KDE) などが開発された。2001年、X.Orgはこの問題に対処するためMedia Application Server (MAS) の開発を発表した。しかし、これらはいずれも根本的な解決策とはなっていない。

ネットワーク

XクライアントをあるXサーバからデタッチし、別のXサーバに再アタッチすることはできない。しかしVirtual Network Computing (VNC) ではそれが可能であり、一部のアプリケーションやツールキットではそのような機能を提供している。
XサーバとリモートのXクライアントの間の通信トラフィックは、デフォルトでは暗号化されていない。そのため悪意ある者がLANアナライザを使えば、それを覗き見ることができるので業務で使用するには注意が必要である。

クライアント/サーバの分離

Xの設計では、クライアントとサーバはそれぞれ独立して動作する。ハードウェアからの独立性やクライアントとサーバの分離などのオーバーヘッドは、OS内にグラフィックス機能が統合されているシステム（WindowsやMac OS）にはないものである。Xが適切な性能を発揮するには、4MBから8MBのRAMを必要とすると言われている。これは1990年代中ごろまではWindowsやMac OSに比較すると大きかった。
最近のWindowsやOS XのQuartzはXのようなクライアントとサーバの分離を行えるようになっている。オーバーヘッドの大半は、ネットワーク上のラウンドトリップタイムによるものである（つまりプロトコル自体の問題ではなく、レイテンシである）。性能問題を解決するにはそのレイテンシを考慮したアプリケーション設計をする必要がある。Xのネットワーク機能が過度に複雑であるために、ローカルで使っても性能に悪影響があるという誤解を持つ人が多いが、現在のXの実装ではローカルな接続では単にソケットと共有メモリを使うので、X固有のオーバーヘッドはほとんどない。

先駆的開発

X以前にも、ビットマップディスプレイを使ったシステムは存在していた。ゼロックスはAlto（1973年）とStar（1981年）を開発している。アップルはLisa（1983年）と Macintosh（1984年）を開発した。UNIX関連ではAndrew Project（1982年）とロブ・パイクのBlit端末（1984年）がある。
Xの名称は、それ以前のW Window Systemの後継であることから名づけられた。W Window SystemはVというOS上で動作した。Wはネットワークプロトコルを使って端末やグラフィックウィンドウをサポートし、サーバ側でディスプレイリストを管理する。

起源と初期の開発

Xの考え方がMITで生まれたのは1984年、Jim Gettys（Project Athena）とBob Scheifler（MITコンピュータ科学研究所）によるものであった。ScheiflerはArgusというシステムのデバッグ用の表示環境を必要としていた。Project Athena（DEC、MIT、IBM によるコンピュータのユーザインタフェースを改善するプロジェクト）ではプラットフォームに依存せず、マルチベンダーシステムで利用できるグラフィックスシステムを必要としていた。当時、カーネギーメロン大学のAndrew Projectでウィンドウシステムが開発中だったが、ライセンス提供を受けることができず、他に代案もなかった。
解決策として、ローカルなアプリケーションも動作させることができ、リモートでも動作させることができるプロトコルの開発という考えが生まれた。1983年中ごろ、WがUNIXに移植された（Vのときの5分の1の速度）。1984年5月、Scheiflerは同期型だったWのプロトコルを非同期型に変更し、これがXバージョン 1となった。Xは世界初のハードウェアやベンダーに依存しないウィンドウシステム環境となった。
Scheifler、Gettys、Ron Newmanが開発を進め、Xは急速に進化していった。1985年1月にはバージョン 6をリリース。当時Ultrixを搭載したワークステーションをリリースしようとしていたDECは、Xの搭載を決断した。DECの技術者がX6をDECのQVSSディスプレイ付きMicroVAXに移植した。
1985年第二四半期、Xはカラーをサポートし、DEC VAXstation-II/GPXで動作した。これがバージョン 9となる。MITはX6を外部グループに料金を徴収してライセンスしていたが、X9リリース時点からMIT Licenseを適用することとした。X9は 1985年9月にリリースされた。
ブラウン大学のグループがIBM RT-PCにX9を移植したが、整列されていないデータの読み込みで問題が発生し、プロトコルに非互換となる変更が必要となった。このため、1985年末にバージョン 10となった。1986年には外部からXについての問合せが増えてきた。X10R2は1986年1月、X10R3は1986年2月にリリース。X10R3では広く製品に採用されるようになった。DECとヒューレット・パッカードはX10R3ベースの製品をリリースし、他のグループが アポロコンピュータのマシンやサン・マイクロシステムズのワークステーションへの移植を行い、IBM PC/ATへの移植も行われた。このころ、Autofactという見本市でXを使った商用アプリケーションが初めてデモンストレーションされた（Cognition Inc.の機械系CAEシステム）。X10の最後のバージョンはX10R4で、1986年12月にリリースされた。
Virtual Network Computing (VNC) がデスクトップの共有を可能にしているように、Xサーバをそのように拡張する試みはこのころから既に行われていた。例えば、Philip J. GustのSharedXツールがある。
X10は強力な機能を持っていたが、Xプロトコルはさらに広く使われるようになる前に、もっとハードウェア中立となるよう再設計する必要があることがわかってきた。しかし、MIT だけではそのような全面的な再設計をするだけのリソースがなかった。そこでDECのWestern Software Laboratory (WSL) がこのプロジェクトに参加を申し出た。DEC WSLのSmokey WallaceとJim Gettysは、DEC WSLがX11を開発し、それをX9やX10と同じ条件でフリーにリリースすることを提案した。設計は1986年5月に開始され、8月にはプロトコルが完成した。アルファテストは1987年2月に開始され、ベータテストは1987年5月に開始された。X11のリリースは、1987年9月15日に行われた。
Scheiflerが中心となって行われたX11プロトコルの設計は、USENETのニュースグループとオープンなメーリングリスト上で盛んに議論しながら進められた。したがって、Xは最初の大規模フリーソフトウェアプロジェクトと言われることもある。

MIT X ConsortiumとX Consortium, Inc.

1987年、X11の成功が明らかになると、MITはXの運営責任を放棄したいと考えるようになった。しかし、1987年6月に9社の主なベンダーが集まった会議で、各社はMITに対してXをまとめていくには中立的な団体が管理する必要があることを訴えた。1988年1月、MIT X Consotiumが非営利の業界団体として設立された。責任者はScheiflerで、今後のX開発の方向性を業界と学界の動向を加味して決定することとなった。1988年1月にはJim Fulton、1988年3月にはキース・パッカードが参加し、Jim はXlib/フォント/ウィンドウマネージャ/ユーティリティの開発、キースはサーバの再実装を分担するようになった。Donna ConverseとChris D. Petersonが同年末までに参加し、ツールキットとウィジェットを分担し、Project AthenaのRalph Swickと連携して作業を行った。MIT X ConsortiumはX11のリビジョンをいくつかリリースしていった。最初のX11R2は1988年2月にリリースされた。
1993年、MIT X Consortiumの後継としてX Consortium, Inc.（非営利組織）が設立された。そして、1994年5月16日にX11R6をリリース。1995年には、MotifツールキットとCommon Desktop Environmentの開発管理も行うようになった。X Consortium, Inc.は1996年末には解散し、X11R6.3を最後にリリースした。コンソーシアム参加各社による囲い込みのような状況になったことが解散の原因とされている。

The Open Group

1997年中ごろ、X Consortium, Inc.はXの管理運営をThe Open Groupに移管した。これは、Open Software FoundationとX/Openが1996年初めに合併して結成された業界団体である。
The Open Groupは1998年初めにX11R6.4をリリースした。しかし、The Open GroupはXの開発資金を確かなものとするため、これまでのライセンス条件を変更し、これが議論を呼んだ。新たな条件では、多くのプロジェクト（XFree86など）やいくつかの商用ベンダーでの採用が困難であった。これを受けてXFree86が分裂しそうになると、The Open Groupは1998年9月にX11R6.4を改めて従来のライセンス条件でリリースした。The Open Groupの最後のリリースはX11R6.4 patch 3であった。

X.OrgとXFree86

XFree86の起源は、Thomas RoellとMark W. Snitilyが1991年に書いたPC/AT互換機向けのX11R5であるX386 serverに遡る。Snitily Graphics Consulting Services (SGCS) はこれを1992年にMIT X Consortiumに寄贈した。XFree86は時と共に進化していき、Xの実装としてのデファクトスタンダードとなった。
1999年5月、The Open GroupはX.Orgを設立した（後のX.Org Foundationとは異なる）。X.Orgは当時進行中だったX11R6.5.1のリリースを実施した。当時のX開発は壊滅寸前であった。X Consortium, Inc.が解散した後の技術的進歩の多くはXFree86プロジェクトで生まれた。1999年、XFree86はX.Orgの（会費を払わない）名誉会員となり、XFree86とLinuxを製品に使いたいと思っていた多くのハードウェア企業がこれを歓迎した。
2003年までにLinuxとXの組合せが非常に一般的になってきても、X.Orgは活発にはならず、やはり開発の中心はXFree86であった。しかし、ここでXFree86内で大きな意見の相違が発生した。XFree86は、あまりにも伽藍的開発モデルであり、開発者はCVSにコミットアクセスできず、ベンダーは多数のパッチを保守する必要があった。2003年3月、XFree86からキース・パッカードが追い出された。彼はMIT X Consortiumの消滅後にXFree86に参加していた。
X.OrgとXFree86は、Xの開発を推進するための組織改編についての議論を開始した。Jim Gettysは2000年ごろからオープンな開発モデルが必要であることを強調していた。GettysとPackardは他の何人かと共に効率的なXのオープン開発の要求仕様について議論を開始した。
そしてX11R6.4のライセンス問題の結果、XFree86 version 4.4はより制限されたライセンスで2004年2月にリリースされ、Xを使っている多くのプロジェクトでこれを使うのが困難になった。追加された条項はBSDライセンスの宣伝条項に基づいており、フリーソフトウェア財団もDebianもこれをGNU General Public License (GPL) と非互換であるとした。このライセンス問題とソース修正の困難さから、多くの人が分裂の機が熟したと感じていた。

X.Org Foundation

2004年初め、 X.Orgとfreedesktop.orgの様々な人々が集まりX.Org Foundationが結成され、The Open Groupはx.orgというドメイン名の権利を譲渡した。これにより、Xの管理運営は大きく変化した。1988年以来（前のX.Orgも含めて）Xの開発運営は業界団体が行っていた。しかし、X.Org Foundationはソフトウェア開発者が主導し、バザールモデルに基づいたコミュニティによる開発であり、外部からの参加に依存している。個人参加も可能で、企業がスポンサーとして参加することも可能である。現在、ヒューレット・パッカードなどの企業がX.Org Foundationに援助している。
FoundationはX開発における監督的役割を担う。技術的判断はコミュニティでの合意形成によってなされ、何らかの委員会で決定されるわけではない。これはGNOME Foundationの非干渉主義的開発モデルに非常に近い。Foundationは開発者を雇っていない。
2004年4月、X.Org FoundationがXFree86 4.4RC2にX11R6.6の変更をマージしたX11R6.7をリリースした。GettysとPackardは、従来のライセンスのXFree86の最新版をベースとしてオープンな開発モデルを採用しGPLとの互換性を維持することで、かつてのXFree86開発者の多くを呼び戻した。
2004年9月、X11R6.8がリリースされた。これには多くの新機能が追加された（透明なウィンドウサポート、その他の視覚効果のサポート、3次元表示サポートなど）。また、外部アプリケーションとして、コンポジット型ウィンドウマネージャと呼ばれるもので見た目のポリシーを提供できるようになった。
2005年12月21日、X.Orgは従来からのユーザー向けにモノリシックなソースコードであるX11R6.9と、同じコードをモジュール化して分割したX11R7.0をリリースした。2006年5月22日、多数の機能強化を施したX11R7.1をリリースした。

今後

X.Org Foundationとfreedesktop.orgにより、Xの中核部分の開発が再び加速された。これらの開発者は、単にベンダーによる製品化のベースとしてだけでなく、使用可能な最終製品として今後のバージョンをリリースしようとしている。
ハードウェアやOSとの関係を限定するため、X.Orgは表示用ハードウェアへのアクセスをOpenGLとダイレクト・レンダリング・インフラストラクチャ (DRI) だけにすることを予定している。DRIはXFree86 version 4.0で登場し、X11R6.7以降で標準となった。多くのOSがハードウェア操作のためのカーネルサポートの追加を開始している。