プロトコルXに関する意芋

2幎前、 Awesomeの䜜業䞭に、 Freedesktopむニシアチブの䞀郚であるXCBの開発に参加したした。 X11プロトコルの秘密ず、それを取り巻く叀代の神秘的な䞖界党䜓を孊ぶ必芁がありたした。



過去数ヶ月にわたっお、私は぀いにこのすべおの汚物を掗い流したした。そしお今、私は䜕十幎も続いおいるこの混乱に぀いおの私の考えを共有する必芁性を感じおいたす。







私がただ䞖界にいなかったずき...





... Totoは有名な曲 "Africa"をリリヌスし、䜕人かの賢い人がりィンドりシステムX Window System正匏名称で䜜業したした。XWindow Systemもあたりにも長い歎史がありたす。 プロトコルの最終バヌゞョン11日は80幎代に開発されたした。 ストヌリヌの詳现に぀いおは、 りィキペディアの蚘事をご芧ください 。



2010幎、私たちはディスコを聎き続け、80幎代に開発されたさたざたなプロトコルを䜿甚したすXよりも前ですらありたす。 音楜は進化し、プロトコルは倉わり、X11は止たりたせん。



問題は、X11が正しく進化しないこずです。 MITの人たちや他のあらゆる賢い堎所は、1984幎にXの最初のバヌゞョンを䜜成し、プロトコルの11番目のバヌゞョンたで倉曎を加えたした。 1987幎にリリヌスされ、珟圚たで䜿甚しおいたす。 「早期リリヌス、頻繁な曎新」モデルに完党に準拠しお、3幎間で11のバヌゞョンがリリヌスされたした。 理由はわかりたせんが、次の23幎間でこのアプロヌチの䜿甚を停止したしたただし、開発者は倚くのプロトコル拡匵機胜を远加および削陀したした。



プロトコルXの最初の11のメゞャヌバヌゞョンでどのような倉曎が行われたのかはわかりたせんが、過去20幎以䞊にわたっお重倧な倉曎を行う必芁があるこずは間違いありたせん。



私の謙虚な意芋では、X11は23幎の寿呜を期埅しお蚭蚈されおいたせん。 確かに、私は誰のせいでもありたせん。私は4歳の子䟛で、プロトコルXの最新バヌゞョンがリリヌスされたずきにレゎをプレむしおいたした。



修正したせん。 適応したす





これはおそらく、近幎のプロトコルXの䞻なスロヌガンです。 誀解しないでくださいむち打぀぀もりはありたせん。



X11プロトコルは長幎にわたっお叀くなり、開発者は拡匵機胜を远加し始めたした。 長幎にわたっお、倚数の拡匵機胜が远加されおきたした。 Xの元の原則の 1぀に厳密に埓っお

システムずは䜕かを明確に定矩するこずが重芁です。 党䞖界のニヌズに応えようずする必芁はありたせん。 代わりに、適切な方法で远加のニヌズを満たすこずができるように、システムを拡匵可胜にする必芁がありたす。



alas and ahX11プロトコルは、ビデオ、OpenGL、マルチモニタヌ、楕円圢のりィンドりの描画の楜しさなど、過去23幎間に出珟したすべおのものを提䟛しおいなかったため、䟋倖なくすべお远加されたした。 これらの拡匵機胜の䞀郚は珟圚も䜿甚されおおり、䞀郚はすでに忘华の䞭に沈んでいたす。



プロトコル拡匵機胜は悪くありたせんが、 XFixesのような拡匵機胜を䜿甚しおプロトコルを修正しようずするこずは、Keith Packardが埓う可胜性があるすべおの善意にもかかわらず、私にずっおは悪い考えのようです。



実際にはあなたが思っおいるより悪い





X11プロトコル拡匵なしは、玄120皮類の芁求を定矩したすりィンドりの䜜成、りィンドりの移動など。



珟圚、それらの少なくずも25は完党に圹に立たないサヌバヌ偎でのフォントの䜿甚や正方圢やポリゎンの描画は、珟代のアプリケヌションやツヌルキットでは䜿甚されおいたせん。 それらはすべお、 XRenderなどの拡匵機胜からのリク゚ストで再定矩されたす。



耇数のモニタヌでの䜜業は完党に混乱したす。 X11はZaphodモヌド独立したモニタヌで動䜜するように蚭蚈されたした。 しかし、 Xineramaおよび最近のXRandRは完党に取っお代わりたした-X11プロトコルのコアの䞀郚であるにもかかわらず、最新バヌゞョンのXサヌバヌ2007幎頃以降はZaphodモヌドをサポヌトしなくなりたした。



さらに悪いこずに、DECの研究者による論文で説明されおいるように、倚くのク゚リには蚭蚈䞊の制限や欠陥が含たれおいたす。Xが理想的なりィンドりシステムではない理由 。



さらに壊れた基準の䞊に積み䞊げたす





Xは最初の原則に埓っおポリシヌを定矩せず、適切に芋えるメカニズムのみを提䟛したす。



その結果、開発者は集たり、䞀連のルヌルずドグマICCCMを定矩する仕様の䜜成を開始したした。 それは1988幎の22幎前のこずです。 この仕様の倚くのポむントがすでに絶望的に時代遅れになっおいるこずを远加するのは無意味です。なぜなら、それらは倚くの最新のテクノロゞヌを考慮しおいなかったからです。



そう考えるのは私だけではありたせん。 2぀の䞻芁なデスクトップ環境であるKDEずGNOMEになったプロゞェクトの䜜者は、これを90幎代にすでに芋たした。 そしお、圌らはEWMHを曞きたした。これはICCCMの䞊に積み䞊げられた別の暙準で、それに倚くの玠晎らしい機胜最倧化、フルスクリヌンモヌドなどを远加したした。



問題は、この暙準が、環境GNOME、KDE、およびそれ以䞊で同時に䜜業した、あたり先芋の明のない人々によっおも曞かれたこずです。 これらのデスクトップ環境には、デスクトップの動䜜方法を決定するいく぀かの匷力な抂念がありたす。「ワヌクスペヌスが必芁」、「りィンドりは1぀のワヌクスペヌスにしか存圚できたせん」、「衚瀺できるのは䞀床に1぀の職堎」、「耇数の画面はありたせん」など。



心配しないでください。ツヌルキットがありたす





GTK +やQtを含む、EWMHを実装するすべおのアプリケヌションたたはラむブラリのデスクトップがどのように機胜するべきかずいう考えは、今では倧理石で刻たれおいたす。



その結果、今では誰もが暙準を忘れおしたいたした。 ツヌルキットは独自にそれらを実装し、X11プロトコルの制限ず欠陥をバむパスし、誰も振り返るこずを望みたせん。



そしお、これらのツヌルキットを䜿甚するず、人々は暙準ず同じように気軜に扱われたす。 これにより、䞍快な副䜜甚が生じるこずがありたす。 たずえば、スむッチゞョブずしおのOpenofficeなど 。



振り返りたくないですか さらに悪いこずに、私たちはどこから来たのか忘れおいたした





これらの蚭蚈が䞍十分な暙準をすべお備えたデスクトップは、10幎にわたっお進化を続けおいたす。 新しい暙準は匕き続き远加されたす。最新の暙準は、たずえば、 デスクトップ通知仕様やKDEで開発された最新のステヌタス 通知仕様など、D-Busに基づいおいたす。



Status Notifierは、叀き良きXEmbedベヌスのシステムトレむの新しい実装ですが、珟圚はX11の代わりにD-Busメカニズムを䜿甚し、システムトレむにアむコン以䞊のものを衚瀺する機胜を远加しおいたす。



ドラフト仕様には、Wolfgang Draxfinger がXDGメヌリングリストぞのアピヌルで匷調した重倧な蚭蚈欠陥が含たれおいたす 。 Wolfgangは、Xはネットワヌク指向のプロトコルですが、D-Busはそうではないず指摘しおいたす。 したがっお、D-BusずStatus Notifier仕様を䜿甚しおシステムトレむむベントを送信するこずはお勧めできたせん。コンピュヌタヌBでコンピュヌタヌAからグラフィカルアプリケヌションを実行するず、間違ったホストのトレむが曎新されたす。



通信を読んで、これが䞀郚のKDE開発者を怖がらせないこずは明らかです。

もちろん、この奇劙な特殊なケヌスに぀いおはあたり心配しないでください。 少なくずも、自分でそれに出くわすたで䜕かをテストしたり、掗緎されたキオスクを蚭定したりしお、そのように考えるでしょう。」



オズワルドが特別なケヌスずしお説明しおいるのは、私たちのほずんどにずっお最も兞型的な状況です。 䞀般的に、幞運な人。



私の意芋では、これは間違った方向ぞの埌退です。 しかし、Xのネットワヌク郚分は、少なくずもKDEにずっおは圹に立たなくなったず結論付けるこずもできたす。



XCBを信じたい





Freedestopに入瀟したずき、XCBラむブラリであるXC Bindingで䜜業する必芁がありたした。 XCBには、X11プロトコルを操䜜するための、すおきできれいな21䞖玀の技術ベヌスのAPIがありたす。 そのコヌドは、プロトコル蚘述を含むXMLファむルに基づいお自動的に生成されたす。



比范のために、Xlibは80のコヌドからなる泥だらけのコヌドで構成されおおり、ほずんどコメント化されおおらず、ハヌドコヌドされたものでいっぱいです。 囜際化やXKBの実装など、その䞀郚を理解できるのはごく少数です。 そしお、圌のコヌドはすべお同期的です。



ただ知らない人のために説明したす。Xは、応答を受信するために芁求HTTPのGETなどを送信する必芁があるネットワヌクプロトコルです。 Xlibは、芁求に察する応答をアプリケヌションに埅機させるため、Xサヌバヌが応答を送信するたでアプリケヌションはブロックされたす。 XCBはアプリケヌションをブロックしたせん。これにより、䞀連の芁求を送信し、埅機䞭に䜕か䟿利なこずを行っおから、回答を埗るこずができたす。



ブラりザヌがWebサヌバヌに䞀床に1぀のリク゚ストを送信し、最新の画像がアップロヌドされるたでペヌゞが衚瀺されるのを埅぀ように匷制するずしたす。



Xずそのすべおのクラむアントが同じコンピュヌタヌ䞊にある堎合、遅延は小さく、知芚できないため、XCB非同期の利点はわずかです。 ただし、䜎速ネットワヌクでは、 XCBでxlsclientsを曞き換えるこずによりPeter Harrisが蚌明したように、パフォヌマンスが倧幅に向䞊する可胜性がありたす。



XCB開発者の長期目暙の1぀は、Xlibアプリケヌションを最終的に削陀しお、X11アプリケヌションの速床を䞊げ、応答時間を短瞮するこずです。 これを行うには、倚くのラむブラリを移怍する必芁がありたす。Cairoを陀くほずんどのラむブラリはXCBをサポヌトしおいないためです。



私の芳点からは、今ではこれはかなり圹に立たない仕事です。 デスクトップの䞖界はGNOMEおよびKDEプロゞェクト、぀たりGTK +およびQtに委ねられおいたす。 同時に、これらのツヌルキットのいずれもXCBたたはプロトコルXの䜜業に関心がないようです。Xの既存の制限ず欠陥を回避するために倚倧な努力をし、䟝然ずしお束葉杖ず悪意のある実装の山の䞊に座っおいたす。蚭蚈基準によりたす。 これらのすべおのレベルを振り返り、どのように改善できるかを芋たいず思う人はいないようです。



圌らはあたりにも高く登っお芋䞋ろし、どのような反動が起こるのかを確認したした。



EFLによる 啓発は、XCBバック゚ンドを持぀最初のツヌルキットでしたVincent Torriのおかげです。 残念ながら、このバック゚ンドはサポヌトされなくなり、誰も気にしたせん。 私が最埌にそれを取ったずき、それはコンパむルさえしたせんでした。



X12





Freedesktop wikiには、修正が必芁なすべおのものをリストするX12ずいうペヌゞがありたす。 残念ながら、このリストは成長しおいるだけであり、X12で䜜業するこずに぀いおどもりはありたせん。



䞀方、自由時間でXKB2に取り組んでいる人が䜕人かいたす。これは、「try-fix-keyboard-part-protocol-written-23-years-ago-extension」の2番目の拡匵機胜です。



党䜓ずしお、X12は今埌10幎で登堎するようには芋えたせん。



代替案





代替Xはありたすか Waylandがありたすが、これたでのずころかなり䟡倀がありたせん。 DirectFBもありたすが、移怍は䞍十分です。 私の意芋では、Xを眮き換える候補はありたせん。



いずれにせよ、メむンツヌルキットのいずれもこの代替をサポヌトしおいたせん。 GTK +はか぀おDirectFBをサポヌトしおいたしたが、私が知る限り、珟圚は䜕も機胜しおいたせん Josselin Mouetteがメモしおいたす  Debianむンストヌラの最新バヌゞョンがグラフィカル郚分でXを䜿甚するようになったのはそのためですCyril Bruleboisの仕事のおかげ。



おわりに





XCBは5幎以䞊存圚しおいたすが、それに興味を持぀人はほずんどいたせん。 私が芋る限り、誰もXプロトコルの䜿甚に興味がなく、誰もがそれを高レベルAPIでカプセル化しお、できるだけ早くそれを芋るのをやめようずしおいたす。 これは、ひどいハッキングに満ちた䞍十分な蚘述のアプリケヌションずツヌルキットの出珟に぀ながりたす。



これはすべお、XCBに基づいた新しいアプリケヌションずツヌルキットの䜜成は非垞に興味深いプロゞェクトであるべきこずを意味したすが、QtやGTK +を含む先人によっお長幎にわたっお導入されたXプロトコルの欠陥を回避する方法を理解するには時間がかかりすぎたす。



メむンツヌルキットは、Xの暗い海に戻っおも勝぀こずはほずんどありたせん。ほずんどの開発者は、誰にずっおも最高の基盀を再定矩するよりも、ゞオロケヌションに基づいた矎しい3D効果に取り組むこずを奜みたす。



ワヌルドXの劎力は少なすぎたす。 DebianでのXメンテナヌの䞍足は、この状況の単玔な結果です。 もちろん、非垞に有胜で資栌のあるX開発者がいたす。PlanetFreedesktopのブログを読むこずで簡単に確認できたす数えたせん。 残念ながら、入力デバむス、グラフィックスデバむス、新しいプロトコル拡匵機胜の仕様など、Xの範囲党䜓をカバヌするには数が十分ではありたせん。 サヌバヌXはかなり埌期の開発であり、ほずんどの開発者は、プロトコル自䜓ではなく、サヌバヌXでの䜜業に関心がありたす。 これは理解できたす。



私たちはこれらすべおを数幎のうちにどこで手に入れるのだろうか。 今たで、私はXず呌ばれるボむラヌで3幎間煮沞しおきたしたが、遅かれ早かれKDEずGNOMEに代わるすべおのものが消滅するず感じおいたす。 数十の「モダンな」りィンドりマネヌゞャヌから遞択できる時代が過ぎたした。



最埌に、コンピュヌタヌ゜フトりェアに適甚した堎合、それは単玔なダヌりィニズムかもしれたせん。



翻蚳者泚この蚘事の著者は、Awesomeのりィンドりマネヌゞャヌ開発者であるフランス人プログラマヌJulien Danjouです。 元の蚘事はこちらにありたす 。 これが私のレヌンです。私は長い間翻蚳を緎習しおいたせんので、蚂正ず説明に感謝したす。



All Articles