コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「X Window System」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
m Botによる: {{Normdaten}}を追加
Cewbot (会話 | 投稿記録)
146行目: 146行目:


== Xと競合するシステム ==
== Xと競合するシステム ==
Unix系システムでは、グラフィックス表示にはXが使われるのが普通である。しかしXの代替となるシステムを開発しようという試みはいくつかある。歴史的には、[[サン・マイクロシステムズ]]の[[NeWS]](市場では成功しなかった)、[[NeXT]]の[[Display PostScript]]([[アップル (企業)|アップル]]が[[Quartz]]に置換した)、日本製の[[GMW]]があった。
Unix系システムでは、グラフィックス表示にはXが使われるのが普通である。しかしXの代替となるシステムを開発しようという試みはいくつかある。歴史的には、[[サン・マイクロシステムズ]]の[[NeWS]](市場では成功しなかった)、[[NeXT]]の[[Display PostScript]]([[Apple]]が[[Quartz]]に置換した)、日本製の[[GMW]]があった。


Quartz開発者の1人であるMike Paquetteは、アップルがDisplay PostScriptからXに移行せずに独自のウィンドウサーバを開発した理由として、アップルが必要とする全ての機能をX11に追加してみたら、X11とは似ても似つかないものになり、他のXサーバとの互換性も失ってしまったと説明した<ref>[http://developers.slashdot.org/comments.pl?sid=75257&cid=6734612 Why Apple didn't use X for the window system] August 19, 2007</ref>。
Quartz開発者の1人であるMike Paquetteは、アップルがDisplay PostScriptからXに移行せずに独自のウィンドウサーバを開発した理由として、アップルが必要とする全ての機能をX11に追加してみたら、X11とは似ても似つかないものになり、他のXサーバとの互換性も失ってしまったと説明した<ref>[http://developers.slashdot.org/comments.pl?sid=75257&cid=6734612 Why Apple didn't use X for the window system] August 19, 2007</ref>。
163行目: 163行目:
== 歴史 ==
== 歴史 ==
=== 先駆的開発 ===
=== 先駆的開発 ===
X以前にも、ビットマップディスプレイを使ったシステムは存在していた。[[ゼロックス]]は[[Alto]](1973年)と[[Xerox Star|Star]](1981年)を開発している。[[アップル (企業)|アップル]]は[[Lisa (コンピュータ)|Lisa]](1983年)と [[Macintosh]](1984年)を開発した。UNIX関連では[[Andrew Project]](1982年)と[[ロブ・パイク]]の[[Blit]]端末(1984年)がある。
X以前にも、ビットマップディスプレイを使ったシステムは存在していた。[[ゼロックス]]は[[Alto]](1973年)と[[Xerox Star|Star]](1981年)を開発している。[[Apple]]は[[Lisa (コンピュータ)|Lisa]](1983年)と [[Macintosh]](1984年)を開発した。UNIX関連では[[Andrew Project]](1982年)と[[ロブ・パイク]]の[[Blit]]端末(1984年)がある。


Xの名称は、それ以前の[[W Window System]]の後継であることから名づけられた。W Window Systemは[[V (オペレーティングシステム)|V]]というOS上で動作した。Wはネットワークプロトコルを使って端末やグラフィックウィンドウをサポートし、サーバ側でディスプレイリストを管理する。
Xの名称は、それ以前の[[W Window System]]の後継であることから名づけられた。W Window Systemは[[V (オペレーティングシステム)|V]]というOS上で動作した。Wはネットワークプロトコルを使って端末やグラフィックウィンドウをサポートし、サーバ側でディスプレイリストを管理する。

2021年5月20日 (木) 10:51時点における版

X Window System
開発元 X.Org Foundation
最新版
バージョン11, リリース7.7 / 2012年6月6日 (12年前) (2012-06-06)
対応OS クロスプラットフォーム
種別 ウインドウシステム
公式サイト X.Org Foundation
テンプレートを表示
GNOME 2.28
KDE 4.x
Xfce 4.6

X Window Systemエックスウィンドウシステム、別称:「X11」・「X」など→名称については後述)とは、ビットマップディスプレイ上でウィンドウシステムを提供する表示プロトコルである。リファレンス実装として X.Org Server があり、標準ツールキットとプロトコルを提供し、Unix系オペレーティングシステム (OS) やOpenVMSなどでのグラフィカルユーザインタフェース (GUI) を構築するのに使われる。他の多くの汎用OSにも移植されている。

概要

Xは1984年、マサチューセッツ工科大学が開発した。現在のバージョンであるX11は1987年9月に登場した。現在はX.Org FoundationがXプロジェクトを主導している。リファレンス実装であるversion 11 release 7.3(2007年9月6日)はフリーソフトウェアとしてMIT Licenseおよび類似のライセンスで提供している[1]

Xは、GUI環境構築のための基本フレームワークやプリミティブを提供する。ウィンドウを画面上に描画したり、移動させたり、マウスやキーボードを使ってやり取りする。Xはユーザインタフェースを規定しない。それは、個々のクライアントプログラムの管理下にある。そのため、Xに基づいた環境の見た目は様々である。プログラムごとにインタフェースは異なる。XはOSの中核 (kernel) には含まれない。アプリケーション層構築の基盤となっている。

それ以前の表示プロトコルとは異なり、Xは表示機器に付属した(あるいは統合された)システムではない。ネットワークコネクションを通して使うことを意図して設計している。X の特徴は、Xプロトコルという、画面表示や入出力時に利用するプロトコルネットワーク透過だということである。そのため、手元のマシンの表示と遠隔のマシンとの表示で表示方法に差がない。このことは、ネットワークを利用したUNIXワークステーション群でGUI表示を行うのに便利であり、UNIXマシンの普及と共にXも普及していった。

アーキテクチャ

Xはクライアントサーバモデルに基づき、Xサーバが各種「クライアント」プログラムと通信する。サーバはグラフィカルな出力要求を受け付け、(マウスキーボードタッチパネルなどからの)ユーザー入力をクライアントに送信する。Xプロトコル自身はハードウェア環境に依存しない。そのため、X Window Systemが動作するマシンはUNIXマシンだけとは限らない。Windows上でXサーバを動作させる、通称PC Xサーバというソフトウェアや、ハードウェア(ファームウエア)でXプロトコルを処理する、通称X端末も存在する。特にX端末は、UNIXマシンが非常に高価な時代に、GUIだけを安価に表示、処理できる機器として良く利用された。

このクライアントサーバという用語(ユーザーの端末サーバクライアントであるアプリケーション)は、しばしば新規のXユーザーを混乱させる。なぜなら用語が逆に使われているように見えるからである。しかしXはエンドユーザーではなく、むしろアプリケーションからみた考え方をしている。XはディスプレイI/Oサービスをアプリケーションに提供している。そのためサーバである。アプリケーションはこれらのサービスを利用している。そのためアプリケーションはクライアントである。

この例では、Xサーバがキーボードとマウスの入力を受け取り、画面に表示する。ウェブブラウザ端末エミュレータがローカルに動作しており、system updaterがリモートのサーバ上で動作しているが、それを制御しているのはローカルのマシンである。リモート・アプリケーションはローカルに動作するのと何ら変わりなく動作することに注意されたい。

サーバとクライアント間の通信プロトコルは、ネットワーク透過性を備える。クライアントとサーバは同じマシン上でも動作するし、別々のマシン上でも動作する。双方のアーキテクチャやOSが違っていても構わない。クライアントとサーバ間の通信は、インターネット上でもトンネリングによって安全に行うことができる。

Xクライアント自体がXサーバを内包し、複数のクライアントに対してサーバとして動作する構成も可能である。これを「Xネスティング」と呼ぶ。XnestXephyrは、Xネスティングをサポートしたオープンソースのクライアントである。

リモートのクライアントプログラムをローカルなサーバで表示するには、端末エミュレータのウィンドウを開き、telnetあるいはsshでリモートのクライアントアプリケーション(あるいはシェル)を起動し、入出力先をローカルに指定してクライアントを起動する(すなわち、export DISPLAY=[ユーザーのマシン]:0 をリモートのマシン上で設定する)。クライアントアプリケーションはローカルサーバと接続され、ローカルマシンのディスプレイと入力機器を使って動作する。またローカルマシンは、リモートマシンに接続しクライアントアプリケーションを起動する小さなプログラムを実行することもできる。

リモートクライアントの実用的な利用例として、次のようなものがある。

  • リモートマシンの管理をグラフィカルに行う。
  • リモートマシンで計算量の多いシミュレーションを実行し、ローカルなデスクトップマシンでその結果を表示する。
  • 複数のマシンでグラフィカルなソフトウェアを同時に実行し、その表示を1つのマシンで行い、1人のユーザーが全体を操作する。

設計思想

1984年、Bob ScheiflerとJim GettysはXの基本原則を以下のように定めた[2][3]

  • 実際のアプリケーションでどうしても必要という場合以外は、新機能を追加するな。
  • 機構が何でないのかを定義することは、何であるのかを定義するのと同じように重要である。あらゆる要求に答える必要はない。むしろ、互換性を維持した状態で拡張可能にしておけ。
  • 1つでも例を挙げて一般化したほうが、全く例を挙げずに一般化するよりもマシである。
  • 問題が完全に把握できないときは、解決策も提供しないのが最善の方法である。
  • 10%の作業で望みの90%の効果が得られるときには、その解法を使え。
  • 複雑さは可能な限り分離せよ。
  • 方針よりも機構を提供せよ。特にユーザインタフェースについての方針はクライアント側に任せておけ。

先頭の原則は、X11の設計時に「具体的アプリケーションがそれを必要としていることを知っている場合に限って、新たな機能を追加せよ」に修正された。

Xはだいたいにおいてこれらの原則に従ってきた。参考実装は拡張性と改良を視野に入れて開発されており、1987年当時のプロトコルとほぼ完全な互換性を維持している。

ユーザインタフェース

Xは意図的にアプリケーションのユーザインタフェースの仕様を含まないようにしている。ボタンメニュー、ウィンドウのタイトルバーなどである。代わりに、ウィンドウマネージャ、GUIウィジェット・ツールキットデスクトップ環境、アプリケーション固有のグラフィカルユーザインタフェースなどがそのような詳細を定義し提供している。そのため、典型的なXのインタフェースを示すことは不可能である。

ウィンドウマネージャは、アプリケーションのウィンドウの位置と見た目を制御する。そのインタフェースはWindowsMacintoshと似ているものもあるし(GNOMEMetacityKDEKWinXfceのXfwmなど)、全く異なるものもある。実用本位のウィンドウマネージャもあれば(twmなど)、デスクトップ環境に近い機能を持つものもある(Enlightenmentなど)。

多くのユーザーはデスクトップ環境を通してXを利用している。デスクトップ環境にはウィンドウマネージャ、各種アプリケーションなどが一貫したインタフェースで含まれている。GNOMEKDEXfceなどが主なデスクトップ環境である。freedesktop.orgはデスクトップ環境間の相互運用性を高めることを目的としている。

Xサーバは、グラフィカルなデスクトップでのキーボードとマウス操作を管理している。そのため、一部のショートカットキーはXサーバと結び付けられている。Control-Alt-Backspaceは通常、現在動作しているXセッションを終了させる。Control-Altとファンクションキーの組合せは、一般にバーチャルコンソールに連携している。ただし、これは個々のXサーバの実装の詳細であり、常に同じとは限らない。例えば、WindowsやMacintoshで動作するXサーバでは、そのようなショートカットキーは提供されない。

実装

X.Org Serverは、リファレンス実装としてX Window Systemの正式な実装として扱われる。フリーソフトウェアプロプライエタリソフトウェアの実装が複数存在する。商用UNIXベンダーはリファレンス実装を採用し、それを自身のハードウェアに合わせて修正し、独自の拡張を様々に凝らすことが多い。

2004年まで、XFree86がフリーなUnix系システムでのX実装の事実上の標準だった。XFree86はXを80386搭載のパーソナルコンピュータ (PC) 上に移植することから始まり、1990年代末ごろにはXのデファクトスタンダードの地位を得ていた[4]。しかし、2004年にX.Org ServerがXFree86のライセンスの変更を期にして派生し、こちらが主流となっていった。

XとUNIXの組合せはよく知られているが、Xサーバは他のグラフィカル環境用にも存在している。

WindowsやmacOSなどの他のウィンドウシステム上でXサーバを動作させる場合、統合のさせ方がソフトウェアによって色々あり、X.Org ServerではWindowsとmacOSでは以下の方式の最初の3つをサポートしている。Unix系ではフルスクリーンだが、それ以外はXnestによりサポートしている。

  • シングルウィンドウ - X11のルートウィンドウをOSのトップレベルウィンドウにマッピングする。
  • マルチウィンドウ - X11のトップレベルウィンドウをOSのトップレベルウィンドウにマッピングする。
  • ルートレス (rootless) - 本来のウィンドウシステムが背景と基本メニューを提供し、Xのウィンドウの位置を管理する。すなわち、Xのクライアントが表示するウィンドウが、手元のウィンドウシステムで表示されるアプリケーションが出すウィンドウと同じように表示される。X11のウィンドウマネージャが利用される。
  • フルスクリーン

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.appMac 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から実装されている物もある。フリーソフトウェアとしては、WeirdMindWeirdX などがある。プロプライエタリソフトウェアとしては、ASTEC-XExceedReflectionXWiredXXmanagerX-Deep/32XmingX-Win32XVision Eclipse などがある。かつては、Xoftware/32(ネットマネージ製)、DynaWinX、PC-Xware(NCD製、数社が取り扱い)、Super-X(Frontier Technologies製、コンテック扱い)、eXodus for Windows(White Pine Software製、DIT扱い)という商品もあった。これらは通常、リモートのXクライアントを表示・制御するのに使われる。

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

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

X端末

Network Computing Devices製のNCD-88k X端末

X端末は、Xサーバを実行するシンクライアントである。これはUNIXワークステーションが高価だったころ、大きめのサーバを複数人で共有し、各人がグラフィカルな環境を使えるようにする安価の手段として人気となった。また、これはMITのプロジェクトが本来想定していた方向性でもある。

X端末は、ネットワーク上で X Display Manager Control Protocol (XDMCP) を使って利用可能なホスト(クライアントを実行できるマシン)を探す。まず最初のホストでXディスプレイマネージャを起動する必要がある。

専用ハードウェアとしてのX端末はその後少なくなり、より安価なXサーバ用端末としてPCや新たなシンクライアントが使われるようになっている。

Xの限界と批判

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

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

Xはユーザインタフェースの仕様やアプリケーション間通信の仕様を意図的に含まないようにしている。このためそれぞれ全く異なったインタフェースが生まれ、アプリケーション間の連携を阻む原因ともなっている。ICCCMはクライアントの相互運用に関する仕様だが、正しく実装するのが困難なことで有名である。MotifCDEも標準化の試みだったが、解決策とはならなかった。この問題は、プログラマやユーザーを長い間悩ませてきた[6]。2007年現在、アプリケーションのルック・アンド・フィールとアプリケーション間通信の一貫性を保つためには、特定のデスクトップ環境あるいは特定のウィジェット・ツールキットを採用してプログラムを作成するのが一般的である。

Xプロトコルは音声を全く扱わない。そのため、サウンドカードの制御も含めた部分はOSやOSSALSAなどのオーディオシステムが分担している。多くのプログラマはOS固有のサウンドAPIを使っている。クライアントサーバ型のサウンドシステムとしては、古くはrplayやNetwork Audio Systemがあった。その後、EsounD (GNOME)、aRts (KDE) などが開発された。2001年、X.Orgはこの問題に対処するためMedia Application Server (MAS) の開発を発表した。しかし、これらはいずれも根本的な解決策とはなっていない。

ネットワーク

SSH上でX11アプリケーションをトンネリングしている例

XクライアントをあるXサーバからデタッチし、別のXサーバに再アタッチすることはできない。しかしVirtual Network Computing (VNC) ではそれが可能であり、一部のアプリケーションやツールキットではそのような機能を提供している[7]

XサーバとリモートのXクライアントの間の通信トラフィックは、デフォルトでは暗号化されていない。そのため悪意ある者がLANアナライザを使えば、それを覗き見ることができるので注意が必要である。

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

Xの設計では、クライアントとサーバはそれぞれ独立して動作する。ハードウェアからの独立性やクライアントとサーバの分離などのオーバーヘッドは、OS内にグラフィックス機能が統合されているシステム(WindowsやMac OS)にはないものである。Xが適切な性能を発揮するには、4MBから8MBのRAMを必要とすると言われている。これは1990年代中ごろまではWindowsやMac OSに比較すると大きかった。

Windows Vista/Windows Server 2008以降のWindowsに搭載されているWDDMやOS XのQuartzはXのようなクライアントとサーバの分離を行えるようになっている。オーバーヘッドの大半は、ネットワーク上のラウンドトリップタイムによるものである(つまりプロトコル自体の問題ではなく、レイテンシである)。性能問題を解決するにはそのレイテンシを考慮したアプリケーション設計をする必要がある[8]。Xのネットワーク機能が過度に複雑であるために、ローカルで使っても性能に悪影響があるという誤解を持つ人が多いが、現在のXの実装ではローカルな接続では単にソケットと共有メモリを使うので、X固有のオーバーヘッドはほとんどない。

ディスプレイドライバのクラッシュ時に発生する問題

ディスプレイサーバー本体やディスプレイドライバの実装は安定しているが、Windows系システムとは異なり[9]、ディスプレイドライバがクラッシュした場合、直前までの表示内容は失われ、Xサーバー本体とXクライアントアプリケーションを手動で再起動しなければならない。 そのため、監視システムやインフラ制御システムなどのミッションクリティカルなGUIアプリケーションの利用には注意を要する。

Xと競合するシステム

Unix系システムでは、グラフィックス表示にはXが使われるのが普通である。しかしXの代替となるシステムを開発しようという試みはいくつかある。歴史的には、サン・マイクロシステムズNeWS(市場では成功しなかった)、NeXTDisplay PostScriptAppleQuartzに置換した)、日本製のGMWがあった。

Quartz開発者の1人であるMike Paquetteは、アップルがDisplay PostScriptからXに移行せずに独自のウィンドウサーバを開発した理由として、アップルが必要とする全ての機能をX11に追加してみたら、X11とは似ても似つかないものになり、他のXサーバとの互換性も失ってしまったと説明した[10]

他にも、FrescoやY Window SystemといったXを置換することを意図したシステムもある。しかしXとの互換性を無視したこれらのシステムは、今のところ広く受けいれられてはいない。MirWaylandは互換性を重視している事もあって一応Linuxディストリビューションやプレインストールでの採用実績があるが、大きな流れには至っていない。

ハードウェアを直接操作することでXのオーバーヘッドに対処しようとした競合システムもある(例えば、DirectFBやFrameBuffer UI)。ダイレクト・レンダリング・インフラストラクチャ (DRI) は、ほぼ同等の機能をX内でモジュール化したものと言え、それら競合システムの努力が無駄になる可能性もある。しかし、(RTAIなどを使った)組み込みシステム用LinuxではDRIのリアルタイム性は思わしくなく、そのような応用にXは今のところ不向きと言える。

グラフィックス関連のサービスでネットワーク透過性を達成するその他の手段には、以下のものがある。

歴史

先駆的開発

X以前にも、ビットマップディスプレイを使ったシステムは存在していた。ゼロックスAlto(1973年)とStar(1981年)を開発している。AppleLisa(1983年)と Macintosh(1984年)を開発した。UNIX関連ではAndrew Project(1982年)とロブ・パイクBlit端末(1984年)がある。

Xの名称は、それ以前のW Window Systemの後継であることから名づけられた。W Window SystemはVというOS上で動作した。Wはネットワークプロトコルを使って端末やグラフィックウィンドウをサポートし、サーバ側でディスプレイリストを管理する。

1990年代初期のX Window Systemによるデスクトップ。twmxtermxbiff、xload、グラフィカルなmanページブラウザなど、MIT X Consortiumのディストリビューションにあったアプリケーションが動作している。

起源と初期の開発

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を最後にリリースした。コンソーシアム参加各社による囲い込みのような状況になったことが解散の原因とされている[11][12]

The Open Group

1997年中ごろ、X Consortium, Inc.はXの管理運営をThe Open Groupに移管した。これは、Open Software FoundationX/Openが1996年初めに合併して結成された業界団体である。

The Open Groupは1998年初めにX11R6.4をリリースした。しかし、The Open GroupはXの開発資金を確かなものとするため、これまでのライセンス条件を変更し、これが議論を呼んだ[13]。新たな条件では、多くのプロジェクト(XFree86など)やいくつかの商用ベンダーでの採用が困難であった。これを受けてXFree86が分裂しそうになると、The Open Groupは1998年9月にX11R6.4を改めて従来のライセンス条件でリリースした[14]。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の実装としてのデファクトスタンダードとなった[15]

1999年5月、The Open GroupはX.Orgを設立した(後のX.Org Foundationとは異なる)。X.Orgは当時進行中だったX11R6.5.1のリリースを実施した。当時のX開発は壊滅寸前であった[16]。X Consortium, Inc.が解散した後の技術的進歩の多くはXFree86プロジェクトで生まれた[17]。1999年、XFree86はX.Orgの(会費を払わない)名誉会員となり[18]、XFree86とLinuxを製品に使いたいと思っていた多くのハードウェア企業がこれを歓迎した[19]

2003年までにLinuxとXの組合せが非常に一般的になってきても、X.Orgは活発にはならず[20]、やはり開発の中心はXFree86であった。しかし、ここでXFree86内で大きな意見の相違が発生した。XFree86は、あまりにも伽藍的開発モデルであり、開発者はCVSにコミットアクセスできず[21][22]、ベンダーは多数のパッチを保守する必要があった[23]。2003年3月、XFree86からキース・パッカードが追い出された。彼はMIT X Consortiumの消滅後にXFree86に参加していた[24][25][26]

X.OrgとXFree86は、Xの開発を推進するための組織改編についての議論を開始した[27][28][29]。Jim Gettysは2000年ごろからオープンな開発モデルが必要であることを強調していた[30]。GettysとPackardは他の何人かと共に効率的なXのオープン開発の要求仕様について議論を開始した。

そしてX11R6.4のライセンス問題の結果、XFree86 version 4.4はより制限されたライセンスで2004年2月にリリースされ、Xを使っている多くのプロジェクトでこれを使うのが困難になった[31]。追加された条項はBSDライセンスの宣伝条項に基づいており、フリーソフトウェア財団DebianもこれをGNU General Public License (GPL) と非互換であるとした[32]。このライセンス問題とソース修正の困難さから、多くの人が分裂の機が熟したと感じていた[33]

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開発者の多くを呼び戻した[34]

2004年9月、X11R6.8がリリースされた。これには多くの新機能が追加された(透明なウィンドウサポート、その他の視覚効果のサポート、3次元表示サポートなど)。また、外部アプリケーションとして、コンポジット型ウィンドウマネージャと呼ばれるもので見た目のポリシーを提供できるようになった。

2005年12月21日、X.Orgは従来からのユーザー向けにモノリシックなソースコードであるX11R6.9と、同じコードをモジュール化して分割したX11R7.0をリリースした[35][36]2006年5月22日、多数の機能強化を施したX11R7.1をリリースした[37]

今後

X.Org Foundationとfreedesktop.orgにより、Xの中核部分の開発が再び加速された。これらの開発者は、単にベンダーによる製品化のベースとしてだけでなく、使用可能な最終製品として今後のバージョンをリリースしようとしている。

ハードウェアやOSとの関係を限定するため、X.Orgは表示用ハードウェアへのアクセスをOpenGLダイレクト・レンダリング・インフラストラクチャ (DRI) だけにすることを予定している。DRIはXFree86 version 4.0で登場し、X11R6.7以降で標準となった[38]。多くのOSがハードウェア操作のためのカーネルサポートの追加を開始している。

名称

開発元のX.Org Foundationは、このソフトウェアを以下のいずれかの名前で呼ぶことを求めている[39]

  • X
  • X Window System
  • X Version 11
  • X Window System, Version 11
  • X11

かつてはよく間違われたが、X Window Systemは「"X Window"というシステム」ではなく、「"X"というウィンドウシステム」である。また、X Windowsという表記は誤りである。

Xで利用可能なウィジェット・ツールキット

リリース履歴

バージョン リリース日 最も重要な変更
X1 1984年6月 以前のシステムWから大幅に変更されたと言う意味で、最初のソフトウェアはXと呼ばれる。
X6 1985年1月 いくつかの企業にライセンスされる
X9 1985年9月 色機能追加。MIT License下で初めてリリース
X10 1985年後半 IBM RT-PCPC/AT(のDOS上)等のマシンでの動作
X10R2 1986年1月
X10R3 1986年2月 MIT の外部に初めてリリース。uwmが標準のウィンドウマネージャ。
X10R4 1986年12月 X10 の最後のリリース番号
X11 1987年9月15日 X11の最初のリリースであり、この時のバージョンのXプロトコルが基本的には2018年現在も使われている。
X11R2 1988年1月 Xコンソーシアムによる最初のリリース。[1]
X11R3 1988年10月25日 XDM
X11R4 1989年12月22日 アプリケーションの改善、新しいフォント、twmが標準のウィンドウマネージャとして搭載される。
X11R5 1991年 PHIGS、カラーマネジメント、X386。国際化機能
X11R6 1994年5月16日 ICCCM v2.0、ICE、Xセッションマネジメント、X同期拡張、Xイメージ拡張、XTEST拡張、Xインプット、X Big-Request拡張、XC-MISC、XFree86の変更。
X11R6.1 1996年3月14日 Xダブルバッファ拡張、Xキーボード拡張、X Record拡張。
X11R6.2
X11R6.3 (Broadway)
1996年12月23日 Web機能、 LBX。Xコンソーシアムによる最後のリリース。X11R6.2はX11R6.3の部分機能バージョン。R6.1からの新機能はXPrintと、Xlibにおける縦書きと、ユーザー定義文字のサポートのみ。[2]
X11R6.4 1998年3月31日 Xinerama[3]
X11R6.5 X.orgの内部リリース。公開するためのものではない。
X11R6.5.1 2000年8月20日
X11R6.6 2001年4月4日 バグ修正、XFree86変更。
X11R6.7.0 2004年4月6日 初めて X.Org 財団としてリリース、XFree86 4.4rc2 に統合。完全なエンドユーザー向け配布。XIE、PEX、libxml2の除去。 [4]
X11R6.8.0 2004年9月8日 ウィンドウ透過、XDamageDistributed Multihead XXFixes、Composite、XEvIE
X11R6.8.1 2004年9月17日 libxpmセキュリティ修正
X11R6.8.2 2005年2月10日 バグ修正、ドライバのアップデート
X11R6.9
X11R7.0
2005年12月21日 EXA、モジュール化及びビルド方式に関する大規模なリファクタリング。両者はソースコード自体は基本的には同一であるが、これまでのモノリシックな構成とimakeによるコンフィグはこの6.9で凍結とされ、7.0からはモジュラー化されAutotoolsを使用している。
X11R7.1 2006年5月22日 EXAの改良、KDriveの統合、AIGLX、BSD等のサポート。
X11R7.2 2007年2月15日 LBXとビルトインのキーボードドライバの除去。XACEXCB、autoconfigの改良、クリーンアップ。[40]
X11R7.3 2007年9月6日 XServer 1.4、入力機器のホットプラグ、出力機器のホットプラグ (RandR 1.2), DTraceプローブ、PCIドメインのサポート。[41]
X11R7.4 2008年9月23日 XServer 1.5.1、 XACE、PCIサブシステムのリワーク、EXAの高速化、_X_EXPORT、GLX 1.4、より高速なスタートアップとシャットダウン。[42]
X11R7.5 2009年10月26日 XServer 1.7、Xi 2、XGE、E-EDIDのサポート、RandR 1.3、MPX、予測可能なポインタのアクセラレーション、DRI2メモリマネージャー、SELinuxセキュリティモジュール、古くなったライブラリや拡張のさらなる除去。[43]
X11R7.6 2010年12月20日 XServer 1.9、XCBを要求。[44]
X11R7.7 2012年6月6日 XServer 1.12、Sync extension 3.1 Fenceオブジェクト追加、Xi 2.2マルチタッチ、XFixes 5.0ポインターバリアー[45]

X11R7.7を最後に、X.Orgとして全パッケージをまとめてリリースするのを終了し、モジュールごとに個別にリリースする仕組みとなった[46]X.Org Serverなど各モジュールの開発は続いている。

出典・脚注

  1. ^ Licenses”. X.org (2005年12月19日). 2007年10月23日閲覧。
  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
  3. ^ Robert W. Scheifler (2012年6月7日). “X Window System Protocol” (英語). X.org. The Open Group. 2019年7月9日閲覧。
  4. ^ Announcement: Modification to the base XFree86(TM) license. 02 Feb 2004
  5. ^ "The X-Windows Disaster"
  6. ^ Re: X is painful 15 Nov 1996
  7. ^ SNAP Computing and the X Window System 2005
  8. ^ An LBX Postmortem 2001-1-24
  9. ^ タイムアウトの検出と回復 (TDR)”. Microsoft Docs. マイクロソフト (2021年1月1日). 2021年1月1日閲覧。
  10. ^ Why Apple didn't use X for the window system August 19, 2007
  11. ^ Financing Volunteer Free Software Projects 10 Jun 2005
  12. ^ Lessons Learned about Open Source 2000
  13. ^ X statement 02 Apr 1998
  14. ^ X11R6.4 Sample Implementation Changes and Concerns
  15. ^ Announcement: Modification to the base XFree86(TM) license. 02 Feb 2004
  16. ^ Q&A: The X Factor February 04, 2002
  17. ^ The Evolution of the X Server Architecture 1999
  18. ^ A Call For Open Governance Of X Development 23 Mar 2003
  19. ^ XFree86 joins X.Org as Honorary Member Dec 01, 1999
  20. ^ Another teleconference partial edited transcript 13 Apr 2003
  21. ^ Keith Packard issue 20 Mar 2003
  22. ^ Cygwin/XFree86 - No longer associated with XFree86.org 27 Oct 2003
  23. ^ On XFree86 development 9 Jan 2003
  24. ^ Invitation for public discussion about the future of X 20 Mar 2003
  25. ^ A Call For Open Governance Of X Development 21 Mar 2003
  26. ^ Notes from a teleconference held 2003-3-27 03 Apr 2003
  27. ^ A Call For Open Governance Of X Development 24 Mar 2003
  28. ^ A Call For Open Governance Of X Development 23 Mar 2003
  29. ^ Discussing issues 14 Apr 2003
  30. ^ Lessons Learned about Open Source 2000
  31. ^ XFree86 4.4: List of Rejecting Distributors Grows Feb 18, 2004
  32. ^ Appendix A: The Cautionary Tale of XFree86 June 5, 2002
  33. ^ X Marks the Spot: Looking back at X11 Developments of Past Year Feb 25, 2004
  34. ^ Appendix A: The Cautionary Tale of XFree86 June 5, 2002
  35. ^ X11R6.9 and X11R7.0 Officially Released December 21 2005
  36. ^ Modularization Proposal 2005-03-31
  37. ^ Proposed Changes for X11R7.1 2006-04-21
  38. ^ Getting X Off The Hardware July, 2004
  39. ^ X - a portable, network-transparent window system 2005年2月
  40. ^ Releases/7.2
  41. ^ Releases/7.3
  42. ^ Releases/7.4
  43. ^ Releases/7.5
  44. ^ Releases/7.6
  45. ^ Releases/7.7
  46. ^ X.Org

関連項目

参考文献

外部リンク