
Kevés szoftverkomponens létezett olyan hosszan és olyan mélyen beágyazódva a számítástechnika világába, mint az X Window System. Ez a grafikus display szerver több mint három évtizeden át szolgálta ki a Unix-alapú operációs rendszerek grafikus felhasználói felületeit, alapot nyújtva a GNOME, KDE, Xfce és sok más desktop környezet működéséhez. A története azonban nem az X11-cel kezdődik.
A számítógépes grafikus interfészek első lépései a Xerox PARC kutatólaborjában indultak a hetvenes években, ahol a legendás Xerox Alto megmutatta, hogy a számítógéppel való interakció radikálisan megváltoztatható egy vizuális, ikonokon alapuló kezelőfelület révén. A PingvinBázis blog második bejegyzésében részletesen bemutatom, hogy miként alakult ki és fejlődött az X display szerver, hogyan vált a Unix és Unix-like világ szabványos grafikus alrendszerévé, milyen technikai megoldások tették különlegessé, és hogyan jutott el a jelenlegi szerepéig – ahol már újabb technológiák, például a Wayland fenyegetik a létét.
Tartalomjegyzék

Előzmények
Az első grafikus felületek és a Xerox Alto
Az első grafikus felhasználói felületeket (GUI) az 1970-es években fejlesztették ki a Xerox kutatólaboratóriumában. A Xerox Alto számítógép 1973-ban mutatkozott be, és a világon először kínált grafikus felületet egérrel és ablakokkal. Ezt követte a Xerox Star (1981), valamint az Apple Lisa (1983) és Macintosh (1984) rendszerek, melyek a GUI fogalmát a személyi számítógépek világába is elhozták. Eközben a UNIX-közösség is kereste a módját egy grafikus felület megvalósításának: ilyen korai kísérlet volt az Andrew Project (Carnegie Mellon Egyetem, 1982) és Rob Pike Blit terminálja (1982), melyek már bitmap kijelzőket és ablakokat használtak.
Fontos megemlíteni, hogy a Xerox Alto koncepciója nem csak a grafikus interfészt mutatta be, hanem a hálózati működést is: az Alto „Alto Terminal” nevű programja lehetővé tette, hogy egy távoli UNIX gép grafikus ablakokat jelenítsen meg az Alto képernyőjén, tehát a távoli gép végezte a rajzolást, az Alto pedig csak megjelenítőként szolgált. Mindezek az előzmények alapozták meg a későbbi grafikus rendszerek fejlődését, és inspirációt adtak egy platformfüggetlen, hálózati képességű grafikus rendszerhez a UNIX környezetben.
Az X Window System születése (X1–X10)
A mai X Window System gyökerei az 1980-as évek elejére nyúlnak vissza, a MIT egyetemen folytatott Project Athena keretében. A grafikus munkaállomások elterjedésével igény mutatkozott egy olyan ablakrendszerre, ami többféle hardveren és többféle UNIX vagy UNIX szerű operációs rendszeren is működőképes. 1984 júniusában Bob Scheifler (MIT LCS) és Jim Gettys (Project Athena) kezdtek el fejleszteni egy új ablakkezelő rendszert, amelyet a korábbi „W” nevű rendszer utódjának szántak – innen ered az X elnevezés (az angol ABC-ben a W után következő betű). Scheifler első levele 1984. június 19-én jelentette be az X rendszer első verzióját, amelyet egy DEC VS100 terminálon valósított meg:
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
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
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
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.
Az elmúlt néhány hetet azzal töltöttem, hogy írtam egy ablakkezelő rendszert a VS100-hoz. Jelentős mennyiségű kódot „kölcsönöztem” a W rendszerből, aztán körülvettem egy aszinkron, nem szinkron interfésszel, és X-nek neveztem el. Az általános teljesítmény körülbelül kétszerese a W rendszerének. A kód jelenleg meglehetősen stabilnak tűnik, bár még akadnak hiányosságok, amiket ki kell javítani.
Az LCS-nél [MIT Laboratory for Computer Science] mi már nem használjuk a W-t, és aktívan az X-re építünk alkalmazásokat. Mindenki más, aki még a W-t használja, komolyan fontolja meg a váltást. Ez nem az „utolsó” ablakrendszer, de úgy gondolom, jó kiindulási alap lehet a kísérletezéshez. Jelenleg létezik CLU (és Argus) interfész az X-hez; egy C interfész is készülőben van. A három meglévő alkalmazás egy szövegszerkesztő (TED), egy Argus I/O interfész, valamint egy kezdetleges ablakkezelő. Dokumentáció még nincs – akad valaki aki elég őrült, hogy önként jelentkezzen? Talán egyszer majd én is megírom.
Akit érdekel egy demó, nyugodtan jöjjön be az NE43-531 irodába, bár érdemes előtte a 3-1945-ös telefonszámon érdeklődni. Aki szeretné a kódot, hozhat egy szalagot. Ha valaki szívesen segítene a hiányosságok javításában, bátran keressen meg.
– írta. Az X első változata (X1) tehát szakított a korábbi megoldások egy részével: aszinkron, üzenet-alapú protokollt használt, és immediate mode grafikus modellre váltott (szemben a W által használt display list megoldással), aminek köszönhetően már ekkor hardver- és gyártófüggetlenül működött.

Az X gyors ütemben fejlődött tovább az Athena projekt keretében. 1985 januárjában kiadták az X Version 6-ot (X6), amelyet a DEC is átportolt saját Ultrix munkaállomásaira (QVSS kijelzőre), mivel a Digital Equipment Corporation felismerte, hogy az X az egyetlen olyan ablakrendszer, ami időben elkészülhet a termékeikhez. 1985 második negyedévében az X színes megjelenítést is kapott (X9 verzió) a DEC VAXstation II/GPX munkaállomáson.
1985 végére elkészült az X Version 10 (X10), amely már számos különböző platformon futott. Az X10 első nyilvános kiadása (X10R3) 1986-ban jelent meg, immár MIT licenc alatt – az MIT ugyanis úgy döntött, hogy az X6-tal ellentétben (amit korábban díj ellenében licenceltek néhány külső csoportnak) az X10 és későbbi verzióit szabadon hozzáférhetővé teszi, bízva abban, hogy így szélesebb körben elterjed.
stratégiát siker koronázta: az X10R3 lett az első széles körben terjesztett X verzió, és olyan nagy számítástechnikai cégek építettek rá termékeket, mint a DEC és a Hewlett-Packard. Az X10-et hamarosan átültették Apollo és Sun munkaállomásokra, sőt IBM PC/AT gépekre is, ami megmutatta, hogy az X képes heterogén környezetben is egységes grafikus platformot nyújtani. Mindezek alapján az X Window System már az X11 előtt is egy ígéretes, erőteljes funkcionalitású rendszer volt, bár egyes korlátai és hardverfüggő megoldásai jelezték, hogy szükség lehet egy átfogóbb újratervezésre.
Út a világsiker felé
X11 – a szabványos UNIX grafikus környezet felemelkedése
1986-ra világossá vált, hogy az X protokollt érdemes továbbfejleszteni egy hardversemlegesebb, tisztább architektúra felé, mielőtt túlságosan elterjedne a korlátozásaival együtt. Az MIT azonban egyedül nem rendelkezett elegendő erőforrással egy ilyen nagyszabású áttervezéshez. Ekkor lépett közbe a DEC nyugati parti szoftverlaborja (Western Software Laboratory): Smokey Wallace (DEC) és Jim Gettys javasolták, hogy a DEC vegye kézbe az X következő generációjának fejlesztését, és tegye azt is szabadon elérhetővé az MIT licenc feltételei szerint. 1986 májusában elindult az X11 projekt, és már augusztusra véglegesítették is az új protokollt.
Az X11 referencia-implementációjának első alfa verziója 1987 februárjában készült el, béta verziója májusban, míg a végleges X11 Release 1 (X11R1) 1987. szeptember 15-én jelent meg. Ez hatalmas mérföldkő volt: az X11 új, letisztult protokollja megteremtette az alapját annak, hogy az X valóban hosszú távú szabványos grafikus rendszerré váljon. A fejlesztés nyíltságát mutatja, hogy az X11 protokoll tervezése nyilvános levelezőlistákon és USENET hírcsoportokon zajlott, így az egyik első igazán nagyszabású, az internet egy korai előfutárán szerveződő, nyílt forráskódú projektté vált. Az X11 készítői között Scheifler továbbra is vezető szerepet töltött be, és az új protokoll sok korábbi hiányosságot orvosolt, miközben megtartotta az X10 legjobb tulajdonságait.

Az X11 megjelenésével a rendszer rövid időn belül a UNIX világ de facto grafikus szabványává vált. Az X11 tette lehetővé, hogy a különböző gyártók UNIX operációs rendszerei egységes grafikus alapokra épüljenek: hamarosan minden jelentősebb munkaállomás-gyártó (DEC, HP, IBM, Sun, stb.) támogatta az X11-et termékein. A DEC például a VMS és Ultrix rendszerein DECwindows néven forgalmazta az X11 alapú grafikus felületet, és állítólag 1200 fejlesztőt állított rá, hogy az X-et különböző platformokra portolják.

1990-re az IBM és a Motorola is bejelentették saját X termináljaikat – az X terminál olyan hálózati eszköz volt, amely csak egy X szerverből (kijelzőből) állt, és minden alkalmazás távoli szervereken futott, kihasználva az X hálózati képességeit. Noha az X11 sikere nyilvánvaló volt, kritikák is érték: például Bill Joy (a Sun társalapítója) 1989-ben arra figyelmeztetett, hogy az X technikailag nem tökéletes és túlterhelheti a hálózatokat a nagy adatmennyiségű grafikus műveletekkel. Ennek ellenére az X11 gyors adaptációja megállíthatatlannak bizonyult, és a rendszer rugalmassága, platformfüggetlensége, valamint nyílt licencelése révén az 1990-es évekre szinte minden Unix-szerű rendszer grafikus alapjává vált.
Kliens-szerver architektúra és hálózati átlátszóság az X-ben
Az X Window System egyik legjellegzetesebb tulajdonsága a hálózati átlátszóság, amely egy kliens-szerver architektúrára épül. A lenti diagram szemlélteti az X működését: az X szerver fut a megjelenítést végző gépen (tipikusan ez a felhasználó munkaállomása), és kezeli a grafikus kártyát, monitort, billentyűzetet, egeret. Az X kliensek ezzel szemben azok az alkalmazások, amelyek az X protokollon keresztül utasításokat küldenek a szervernek (például ablakok nyitása, rajzolás, stb.), illetve eseményeket (egér, billentyűzet) kapnak tőle.
A hálózati átlátszóság azt jelenti, hogy az X protokoll hálózaton keresztül is működik, azaz a kliens program futtatásának helye fizikailag eltérhet a megjelenítés helyétől: akár egy távoli számítógépen is futhat az alkalmazás, miközben a képe a helyi X szerver ablakában jelenik meg. Ezt a funkciót már a kezdetektől fogva beépítették az X-be, így az X11 előtt álló egyik fő kihívás – a heterogén hálózati környezetek támogatása – már meg volt oldva.
Az X protokoll technikailag egy bináris üzenetváltáson alapul: a kliens kéréseket (request) küld a szervernek, például új ablak létrehozására vagy grafikus primítív kirajzolására, a szerver pedig eseményeket (event) továbbít a kliensnek, például billentyűleütéseket vagy egy ablak bezárásának eseményét. A protokoll aszinkron jellegű, azaz a kliens egyszerre több kérést is küldhet sorban, nem kell megvárnia minden művelet visszaigazolását – ezzel elkerülték a fölösleges várakozásokat és növelték a teljesítményt. A hálózati kommunikáció alapértelmezetten megbízható byte-pufferelt kapcsolat (eredetileg TCP/IP vagy DECnet felett), de helyi gépen a hatékonyság növelhető: modern X szerverek például Unix domain socketeket használnak a lokális klienssel való kommunikációra, és létezik megosztott memóriás kiterjesztés (MIT-SHM), ami lehetővé teszi a nagy mennyiségű grafikus adat gyorsabb átadását a kliens és szerver között.
Ezen optimalizációk ellenére is gyakori kritika az X-szel szemben, hogy ha csak lokálisan használják, a hálózati réteg egy extra komplexitást és némi többlet késleltetést visz a rendszerbe. Ugyanakkor az X flexibilitása óriási előny volt a korai időkben: lehetővé tette vékonykliensek (X terminálok) használatát, ahol a felhasználó gépe csak a grafikus megjelenítést végezte, míg az alkalmazások egy erősebb szerveren futottak akár az egész épület hálózatán keresztül. Ez a tulajdonság – a helyi és távoli futtatás közti átlátható különbség hiánya – az X Window Systemet egyedülállóvá tette sok más korabeli GUI-hoz képest.
Fontos kiemelni, hogy az X nem határoz meg semmilyen konkrét megjelenésű vagy viselkedésű felhasználói interfészt a protokoll részeként. Az X csak egy alapvető keretrendszert ad a grafikus alkalmazások számára: biztosítja az ablakok létrehozását, mozgatását, rajzolását, valamint az input eszközök (egér, billentyűzet) kezelését. Az úgynevezett ablakkezelés és dekoráció azonban már nem az X szerver feladata, hanem külső programok (ablakkezelők) végzik, ahogy a magas szintű grafikus vezérlők (gombok, menük, stb.) megrajzolását is az alkalmazások könyvtárai (widget toolkit-ek) valósítják meg.
Ennek köszönhetően az X alapú környezetek megjelenése rendkívül változatos tud lenni: különböző ablakkezelők és toolkit-ek egészen eltérő kinézetű és működésű felületet nyújthatnak, noha mind ugyanazon X protokollon keresztül kommunikálnak. Ez a modularitás és testreszabhatóság szintén hozzájárult ahhoz, hogy az X11 sikeres legyen, hiszen a gyártók és felhasználók igényei szerint alakíthatták a grafikus környezet stílusát anélkül, hogy a rendszer alapszintjét (az X szervert) módosítani kellett volna.
Az X Consortium és a rendszer standardizálása (1988–1996)
Az X11 gyors térnyerése után felmerült a kérdés, ki felügyelje a rendszer további fejlesztését és szabványosítását. 1987-ben, nem sokkal az X11 megjelenése után az MIT jelezte, hogy szívesen átadná az X gondozását egy független szervezetnek. A nagyobb ipari szereplők azonban ragaszkodtak ahhoz, hogy legyen egy semleges testület, amely koordinálja az X fejlődését és megakadályozza a piac fragmentációját. Ennek eredményeként 1988 januárjában megalakult az MIT X Consortium, egy non-profit konzorcium, amelyben egyetemek és cégek közösen vettek részt, és amelynek igazgatója továbbra is Bob Scheifler lett.
Az X Consortium égisze alatt folytatódott az X11 fejlesztése, és sorra jelentek meg az X11 új kiadásai: 1988 februárjában az X11R2, majd gyakori frissítésekkel egészen X11R5-ig (1991) és X11R6-ig (1994). 1993-ban az X Consortium formailag is átalakult egy önálló jogi személlyé, az X Consortium, Inc.-vé, mely 1994. május 16-án adta ki az X11R6 változatot. Érdemes megjegyezni, hogy ebben az időszakban az X Consortium felügyelete alá került néhány fontos, X-szel kapcsolatos technológia: 1995-ben a szervezet átvette a Motif grafikus widget-készlet és a Common Desktop Environment (CDE) fejlesztését is, amelyek a UNIX rendszerek egységes megjelenését voltak hivatottak biztosítani.
Az X Consortium azonban 1996 végén feloszlott, miután kiadta az X11R6.3 verziót. A feloszlás hátterében részben az állt, hogy az X ekkorra már kellően érett és széles körben támogatott volt, ugyanakkor a fejlesztés irányát egyre inkább a kereskedelmi érdekek kezdték meghatározni. 1997 januárjában az X felügyelete átkerült az újonnan létrejött The Open Group szervezethez. (Az Open Group a korábbi X/Open és Open Software Foundation egyesülésével jött létre 1996-ban, és egy ipari konzorcium volt.)
Az Open Group gondozásában 1998 elején jelent meg az X11R6.4 verzió, ám ez komoly vitákat váltott ki: az Open Group megpróbálta megváltoztatni az X addigi nyílt licencét egy szigorúbb, félig zárt licencre, amely ingyenes használatot csak nem kereskedelmi célra engedélyezett volna, a kereskedelmi felhasználást pedig díjhoz kötötte. A lépést azzal indokolták, hogy az X fejlesztésének finanszírozását biztosítani kell, és nehezményezték, hogy a közösségi fejlesztés (kiemelve az XFree86 projektet) nem járult hozzá érdemben a kód bázisához. Ez a licencváltás azonban szembement az addigi nyílt fejlesztési modellel, és óriási ellenállásba ütközött.
Az X közössége és több nagy cég egyaránt tiltakozott; felmerült az is, hogy az XFree86 csapat forkolja (azaz licencváltás miatt saját ágra vigye) az X kódját, hogy megőrizze a szabad státuszát. Végül az Open Group kénytelen volt meghátrálni: 1998 szeptemberében visszaállították az X11R6.4 hagyományos, MIT-szerű licencét. Az Open Group ezután már nem is adott ki újabb jelentős verziót (csak egy javítócsomagot az R6.4-hez), ezzel tulajdonképpen át is engedte a terepet a szabad szoftveres X fejlesztéseknek.
XFree86: az X a PC-ken és a nyílt forrású közösség felemelkedése
Míg az X Consortium és az Open Group főként a kereskedelmi UNIX világra fókuszált, 1992-ben a PC-szférában megszületett az X Window System egy különösen fontos implementációja: az XFree86. Az XFree86 projekt Thomas Roell X386 nevű X szerverportján alapult, amely az X11R5-höz készült IBM PC kompatibilis gépekre. Ezt a kódot Roell és munkatársai adományozták az X Consortium-nak, majd egy csapat fejlesztő továbbvitte XFree86 néven. Az XFree86 az 1990-es években fokozatosan fejlődött és egyre több videókártyát, PC hardvert támogatott – végül ez vált a Linux és más nyílt UNIX-szerű rendszerek de facto X11 szerverévé, és az X fejlesztésének motorjává.

Gyakorlatilag az ezredfordulóra az X új funkcióinak zöme és a hardvertámogatás bővítése már az XFree86 keretében történt, miközben az X hivatalos kiadásai (X Consortium / Open Group) meglehetősen lassan fejlődtek.
1999-ben az Open Group létrehozott egy új szervezetet X.Org néven, hogy formálisan összefogja az X11 fejlesztését az R6.5.1 kiadástól kezdve. Bár az X.Org bizottság papíron felügyelte a fejlesztést, a gyakorlatban ebben az időben az innováció nagy része még mindig az XFree86 projektben történt. 1999-ben az XFree86 csapatát meg is hívták az X.Org tagságába, de csak tiszteletbeli (nem fizető) tagként; e lépést a hardvergyártók is szorgalmazták, mivel Linux alatt mindenki az XFree86-ot használta, és szerették volna, ha az X jövője egyeztetettebb mederben folyik. Ennek ellenére a 2000-es évek elejére az X fejlesztése körül feszült légkör alakult ki.
Az XFree86 projektet az a vád érte, hogy túlságosan „katedrális” jellegű a fejlesztési modellje (kevés fejlesztőnek volt commit joga, és a döntéseket zárt körben hozták meg), ami megnehezítette a közösségi együttműködést. 2003-ban egy belső konfliktus odáig fajult, hogy az XFree86 vezetősége kizárta a projektből Keith Packardot, a neves X fejlesztőt, aki az X Consortium megszűnése óta kulcsszereplő volt a közösségi X fejlesztésben. Ez az incidens sokakban erősítette azt az érzést, hogy az XFree86 irányítása nem megfelelően nyitott és progresszív.
A döntő fordulat 2004 elején következett be. Az XFree86 4.4-es verzióját 2004 februárjában a korábbinál szigorúbb licenc feltételekkel adták ki: egy új záradék került bele, amely a BSD licenc hírhedt reklámzáradékához hasonlóan kikötötte, hogy a szoftver említésekor a fejlesztőket is meg kell nevezni. Ezt a kiegészítést a Free Software Foundation és a Debian projekt is a GPL licenccel összeegyeztethetetlennek minősítette, mások pedig az X szellemiségével ellentétes lépésnek tartották.
Például Theo de Raadt (az OpenBSD vezetője) azzal fenyegetőzött, hogy az OpenBSD egy saját forkot hoz létre az XFree86 kódjából, ha a licencproblémák megmaradnak. A licencvita, valamint az XFree86-on belüli együttműködési nehézségek oda vezettek, hogy a fejlesztők és a nagyobb felhasználói közösségek egy része számára nyilvánvalóvá vált: eljött az idő egy nyíltabb, közösségibb X szervezet létrehozására.
2004-ben megalakult az X.Org Foundation, egy új, független szervezet, amely átvette az X Window System fejlesztésének irányítását. Az Open Group átadta az x.org domain nevet az alapítványnak, ezzel szimbolikusan is lezárult a korábbi, elsősorban gyártói konzorciumok által vezérelt korszak. Az X.Org Foundation alapvetően más elven működött: a vezetést szoftverfejlesztők és a közösség kulcsszereplői vették át, a döntéshozatal pedig nyílt, konszenzusra törekvő folyamat lett, a „bazár” modellt követve. A tagság egyéni fejlesztők előtt is nyitva állt, a vállalatok pedig szponzori formában támogathatták a projektet. Az X.Org Foundation maga nem foglalkoztatott fejlesztőket, csupán koordinációs és infrastrukturális szerepet töltött be, teret adva a közösség spontán innovációinak.
Az X.Org Foundation első kiadása az X11R6.7 volt 2004 áprilisában, amely lényegében az XFree86 4.4 (licencvita előtti) kódjára épült, kiegészítve az X11R6.6 óta történt változtatásokkal. Ezt gyors ütemben követte az X11R6.8 még 2004 szeptemberében, ami már jelentős új funkciókat hozott: bekerültek a kompozíciós kiterjesztések első verziói, lehetővé vált áttetsző ablakok kezelése, árnyékok, animációk, valamint megjelentek a képernyőnagyítók és miniatűr előnézetek támogatásai is. Tulajdonképpen az X11R6.8-cal indult el az az átalakulás, amely az addig csak 2D grafikára és XRenderre építő X-et kiegészítette modern vizuális effektekkel és a 3D-s gyorsítás jobb integrációjával (OpenGL támogatás már korábban is volt GLX formájában, de ekkortól vált széles körben használhatóvá).
A kompozíciós ablakkezelők megjelenése – mint amilyen először a Compiz volt 2005-ben – látványos effekteket hozott az X11-be, bár ezek kihasználásához már a Window Manager-ek új generációja kellett. 2005 végén az X.Org kiadta az X11R6.9 és X11R7.0 verziókat párhuzamosan: előbbi még a monolitikus forrásfa utolsó kiadása volt, utóbbi pedig már az X szerver és komponenseinek moduláris szétválasztását valósította meg. A modularizáció jelentősen megkönnyítette az egyes alrendszerek (pl. videodriver, input driver, stb.) fejlesztését külön projektként. Innentől az X.Org Server verzióit is áttérítették egy új számozásra (7.1, 7.2, stb., majd a 2010-es évektől 1.x verziójelölésre), de ezek részletes története már túlmutat a ’90-es és 2000-es évek fordulóján lezáruló nagy átalakuláson.
Összességében az X.Org Foundation megalakulása stabilizálta és felgyorsította az X11 fejlődését a 2000-es években. A nyílt fejlesztési modell hatására számos régi probléma megoldódott vagy javult (például a betűkezelési rendszer átalakítása, modern font-renderelés bevezetése; a Extensions rendszer kibővítése új képességekkel; a hálózati késleltetés csökkentése bizonyos műveleteknél). Az X így továbbra is lépést tudott tartani az igényekkel egy olyan időszakban, amikor a Linux és a nyílt forrású OS-ek robbanásszerűen terjedtek a piacon.
Ablakkezelők és desktop környezetek ökoszisztémája
Mivel az X Window System maga nem határoz meg konkrét felületet, a vizuális megjelenésért és az interakciós paradigmákért az úgynevezett ablakkezelők (window manager, WM) és asztali környezetek (desktop environment, DE) felelősek. Az X történetének része ennek az ökoszisztémának a kialakulása és fejlődése is. Az első időkben egyszerű ablakkezelők léteztek: maga az X11R1 is tartalmazott egy alap ablakkezelőt (twm – Tom’s Window Manager), amely minimalista címsávokat és kereteket rajzolt az ablakok köré.

A különböző UNIX gyártók a ’80-as évek végén és ’90-es évek elején saját ablakkezelőket és felületi stílusokat fejlesztettek: ismert volt például a Sun Microsystems OpenLook felülete, illetve az OSF (Open Software Foundation) által patronált Motif toolkitre épülő MWMs (Motif Window Manager). Végül 1993-ban több nagyvállalat összefogásából megszületett a Common Desktop Environment (CDE), amely a Motifon alapuló, egységes kinézetű asztali környezet lett számos kereskedelmi UNIX (HP-UX, AIX, Solaris, Tru64 stb.) számára. A CDE lényegében szabványosította a UNIX asztali élményt a ’90-es évek közepére a vállalati szférában, bár megmaradt zárt forráskódúnak és csak 2012-ben nyitották meg a forrását.

A nyílt forrású világban eközben új kezdeményezések indultak az ’90-es évek végén. 1996-ban Matthias Ettrich német egyetemista meghirdette a K Desktop Environment (KDE) projektet, felismerve, hogy a Unix rendszerek grafikus alkalmazásai nagyon széttartóak: minden fontos program más megjelenési könyvtárat (toolkit-et) használt, ami egységtelen felhasználói élményt eredményezett. A KDE célja egy teljes, egységes asztali környezet létrehozása volt, amely egyaránt konzisztens kinézetű és működésű, valamint könnyen használható még kezdő felhasználóknak is. A KDE a Qt toolkitre épült, és első stabil kiadását 1998-ban jelentette meg (KDE 1.0). Nem sokkal később, 1997 augusztusában Miguel de Icaza és Federico Mena elindították a GNOME projektet, melynek célja egy teljesen szabad (GPL/LGPL) asztali környezet megalkotása volt Linuxra és Unixokra.
A GNOME többek között azért jött létre, mert a KDE alapjául szolgáló Qt könyvtár abban az időben még nem volt teljesen nyílt forrású (csak később, 2000-ben vált GPL-licencűvé); a GNOME ezzel szemben a GNU projekt részeként a GTK+ toolkitre épült, biztosítva a vállalt szabadszoftveres elveket. A 2000-es évekre a KDE és a GNOME vált a két domináns Linux-asztali környezetté, és mára is ezek fejlesztése határozza meg leginkább a desktop ökoszisztéma alakulását. Természetesen számos egyéb opció is létezik: a Xfce (1996-tól, eleinte egy könnyűsúlyú CDE-klónként indult), a LXDE/LXQt, a MATE (a GNOME 2 kanonikus továbbélése), a Cinnamon (a Linux Mint saját GNOME-alapú felülete), Budgie, stb.

A haladó felhasználók pedig gyakran nem is teljes desktopot, hanem csupán egy minimalista ablakkezelőt használnak – akár csempéző (tiling) ablakkezelőket, mint az i3, Awesome, bspwm vagy a XMonad. Az X11 nyíltsága tette lehetővé, hogy ilyen gazdag és sokszínű grafikus környezetek alakuljanak ki: a választás szabadsága megvolt, hogy ki egy Windows-szerű, egységes élményt nyújtó teljes desktopot (pl. KDE Plasma vagy GNOME Shell), ki pedig egyedi összeállítású, könnyű ablakkezelőt futtasson – mindez ugyanazon X11 alap felett.
Meg kell említeni az ablakkezelők fejlődésének egy fontos mérföldkövét: a kompozitálás bevezetését. A 2004-ben megjelent X11 kiterjesztések lehetővé tették, hogy a window manager átvegye a képernyő tartalmának összeállítását (renderelését) ahelyett, hogy azt az X szerver végezné. Így született meg a kompozitor fogalma, és az első kompozitorokat támogató ablakkezelők, mint a Compiz (2005) vagy később a KWin és Mutter, látványos effektusokat, animációkat hoztak az asztali környezetekbe (áttűnő terminálok, „géles” ablakmozgatás, 3D kocka virtuális desktop stb.).
Ezek az újdonságok segítettek abban, hogy az X11 környezet a 2000-es évek második felében is modernnek hasson a felhasználók számára, bár ára a megnövekedett erőforrásigény volt. A kompozitálás bevezetése technikailag is jelzés értékű volt: mutatta, hogy az X architektúra képes evolválódni és befogadni új paradigmákat (ahelyett, hogy mereven ragaszkodna a 80-as években lefektetett modellekhez).
A hanyatlás útjára lépve
Versenytárs grafikus megjelenítő rendszerek: Wayland és más alternatívák
Noha az X11 évtizedeken át uralta a UNIX/Linux grafikus világot, időről időre felbukkantak alternatívák és rivális megoldások. Már a ’80-as években is voltak versenytárs projektek: a Sun Microsystems például a saját NeWS (Network/extensible Window System) nevű rendszerét fejlesztette, a NeXT pedig a Display PostScript alapú grafikus rendszert használta a NeXTSTEP operációs rendszerben. Ezek a korai alternatívák azonban végül alulmaradtak az X11-el szemben – részben mert zárt forrásúak és cégspecifikusak voltak, részben mert az X nyílt és rugalmas természete, valamint az ipari összefogás (X Consortium) az X-et tette vonzóbbá a fejlesztők és gyártók számára.
A 2010-es évekre viszont az X11 korlátai egyre nyilvánvalóbbá váltak, különösen a Linux desktop közösség szemében. Az X szerver kódja rendkívül komplex, sok évtizedes visszamenőleges kompatibilitást cipel, és bár szinte mindent lehetővé tesz, bizonyos modern igényekre (pl. mobil eszközök támogatása, biztonságosabb grafikus szeparáció, vsync-megjelenítés, többmonitoros skálázás) nem elegáns megoldásokat nyújt. 2008 körül néhány X.Org fejlesztő (köztük Kristian Høgsberg) kísérleti projektbe kezdett, amely radikálisan újragondolta a grafikus kiszolgáló szerepét Linuxon.
Ebből nőtt ki a Wayland, amely mára az X11 első számú utódjelöltjévé vált. A Wayland alapelve, hogy a lehető legegyszerűbb protokollt valósítsa meg: a kompozitor (megjelenítő szerver) és az ablakkezelő nem külön folyamat, hanem egy program, amely közvetlenül a grafikus hardvert vezérli (DRM/KMS és EGL interfészeken keresztül). A Wayland kliensek ezáltal közvetlenül a kompozitornak rajzolnak (tipikusan OpenGL-es ablakpufferbe), és a kompozitor rakja össze a képernyőn megjelenő tartalmat. Ezzel kiküszöbölhető számos köztes réteg és kontextusváltás, ami az X11-nél jelen van (például az X szerver és a külön kompozitáló ablakkezelő közti kommunikáció).
A Wayland egyszerűbbé, biztonságosabbá és potenciálisan gyorsabbá teszi a grafikát: nincs meg az a lehetőség, hogy egy rosszindulatú kliens global grab segítségével elfogja más ablakok billentyűzeteit vagy belenézzen más programok ablakaiba, mert a kompozitor izolálja az alkalmazások rajzfelületeit. Ugyanakkor a Wayland szakít az X néhány hagyományos képességével – például nincs beépített hálózati transzparencia.

Ha egy Wayland-es alkalmazást távolról akarunk megjeleníteni, arra jelenleg külön protokollokat kell használni (például VNC vagy RDP alapú megoldásokat), illetve létezik egy köztes út: futtatható egy X szerver Wayland kompozitor formájában (XWayland), ami lehetővé teszi régi X11-es programok hálózati futtatását is a Wayland alatt. A Wayland 1.0 verziója 2012-ben jelent meg, és azóta folyamatosan fejlődik. Mára a legtöbb nagy asztali környezet (GNOME, KDE) támogatja a Waylandet mint opcionális (sőt újabban alapértelmezett) kiszolgálót, de az átállás fokozatos, mivel sok alkalmazás és grafikus driver még évekig X11-specifikus volt.
Említést érdemel a Canonical cég által indított Mir projekt is, amely 2013 körül próbált egy saját display szervert fejleszteni Ubuntuhoz, hasonló célokkal, mint a Wayland. A Mir kezdetben külön úton indult (főként azért, hogy az Ubuntu Touch mobilos környezethez igazodjon, Android driver-kompatibilitást is tervezve), de végül a projekt átváltott és ma már inkább egy speciális Wayland kompozitorként él tovább. A Mir sorsa is azt mutatja, hogy a Wayland protokoll mára iparági standarddá vált a Linux világában, mint az X11 leváltásának iránya.
Nem UNIX/Linux vonatkozású, de a teljesség kedvéért: a macOS saját, X-től független ablakkezelő rendszert használ (Quartz), amely a NeXTSTEP (és annak Display PostScript rendszere) örököse. A Microsoft Windows szintén teljesen külön utat járt be a grafikus rendszerével. Ezek a rendszerek sosem voltak X kompatibilisek, bár érdekes módon mind macOS, mind Windows rendszerekhez készültek opcionális X11 kompatibilitási rétegek (XQuartz illetve Cygwin/X, WSLg, stb.) azoknak, akik X alkalmazásokat akartak futtatni. A modern Linux/Unix grafikus világ fő kérdése azonban ma az, hogy az X11 több mint 35 év után nyugdíjba vonul-e a Wayland javára, vagy hosszabb távon is együtt él a két technológia.
Az X11 helye napjainkban (2020-as évek)
Az X11 hosszú ideig tartó dominanciája után jelenleg egy átmeneti időszakot élünk. A nagy Linux disztribúciók közül sok már alapértelmezésben a Waylandre váltott az asztali környezetekben – például a Fedora a GNOME-mal már 2016 óta Waylandet használ, az Ubuntu is 2020-tól (21.04-től) alapértelmezettként szállítja a Waylandet GNOME Shell alatt, és a KDE Plasma is támogatja a Waylandet stabilan. Egy 2024-es elemzés szerint a Wayland végre „komoly lendületet kapott és úton van afelé, hogy a legtöbb mainstream Linux disztribúció alapértelmezett megjelenítő szervere legyen”.
Ugyanakkor az X11-et semmiképp sem lehet még eltemetni: 2023-ban még mindig az X.Org (X11) a legszélesebb körben használt grafikus szerver a Linux rendszereken, köszönhetően annak, hogy rengeteg alkalmazás és kisebb projekt csak X11 alatt fut natívan, illetve sok disztribúció kínál X.org opciót a kompatibilitás kedvéért. A valóság az, hogy jelenleg a legtöbb Wayland-alapú környezet is tartalmaz egy XWayland komponenst, ami egy X szerver a Wayland alatt – ennek segítségével a régi X11-es programok zökkenőmentesen futhatnak a Waylandes desktopon is. Így a felhasználó lehet, hogy már Waylandet használ, de ha egy alkalmazás nem natív Wayland, akkor is X11 protokollon keresztül fut (XWayland-en át).
Az X.Org szerver fejlesztése ugyanakkor jelentősen lelassult. Az aktív hozzájárulók többsége már a Waylanddel kapcsolatos projekteken dolgozik, és az X.org kódot főleg csak karbantartják, súlyos hibajavításokat és minimális fejlesztéseket végezve. Egy frappáns összefoglaló szerint:
„Ami X.Org-on még történik karbantartás, azt többnyire azok csinálják, akik főállásban a Waylanden dolgoznak. Nincs háború a két tábor között – gyakorlatilag ugyanazok az emberek fejlesztik, és mind azt szeretnék, hogy az X.Org kihaljon. Alig akad bárki, aki önként jelentkezne hosszú távon karbantartani az X.org-ot”.
Ez azt jelenti, hogy a jövő az X11 számára erősen kérdéses: a fejlesztői közösség fókusza már máshol van. Ugyanakkor a gyakorlati igények – például a hálózati átlátszóság hiányára adott válaszok hiányosságai Wayland alatt, vagy bizonyos illesztőprogramok (pl. az NVIDIA zárt driverei) korlátozottabb támogatása – miatt az X11 még mindig nélkülözhetetlen sok felhasználó számára.
Érdemes kitérni a Linuxon túli világra is: a BSD rendszereken – mint a FreeBSD, OpenBSD és NetBSD –, valamint Illumos-alapú Unix klónokon (például OpenIndiana, OmniOS) a Wayland támogatása még gyerekcipőben jár. Jellemzően továbbra is az X11 az elsődleges, sőt néhány esetben szinte az egyetlen, grafikus kiszolgáló. A metux-its hozzászólása szerint az X funkciói, mint a monitorrotáció és más „overrated Wayland-et nem támogató” képességek, BSD-n és illumos-on is működnek, tehát nem csak Linux-specifikus megoldások.

Ezen túl nemrég került bejelentésre az X11 legújabb forkja XLibre néven, mely több ezer commitban valósít meg modern biztonsági és szigetesített alkalmazás‑izolációs megoldásokat (például XNamespaces), de ez a projekt még annyira friss, hogy képlékeny, mi lesz a hosszútávú sorsa.
Ennek ellenére a Unix miatt valószínű, hogy az X11 a 2020‑as években is velünk marad, legalábbis átmeneti kompatibilitási és izolációs rétegként olyan rendszereken, ahol a Wayland még nem áll készen. Sőt, 2025-ben a Linux‑felhasználók egy része még mindig tudatosan ragaszkodik az X.Org használatához stabilitási vagy funkcióbeli előnyök miatt, különösen régi alkalmazások vagy bizonyos hardveres igények esetén. A GTK és GNOME fejlesztői ugyan tervezik a natív X11 támogatás jövőbeni megszüntetését, de ez leginkább azt vetíti előre, hogy az X11 továbbra is XWayland formájában marad elérhető – mint modern rendszerekben működő, átlátható és kötelező átmeneti réteg.
Összefoglalva, az X11 grafikus rendszer páratlanul hosszú és sikeres pályát futott be: a Xerox Alto inspirálta alapötletektől indulva az MIT-ben öltött testet, majd ipari összefogással szabvánnyá érett, túlélte a licenc- és irányítási viharokat, kiszolgált megannyi hardverplatformot a mainframe-ektől a PC-ken át az okoseszközökig, és több generációnyi grafikus felület alapjául szolgált.
Technikai öröksége – különösen a hálózati átlátszóság és a moduláris felépítés – a mai napig hatással van a számítástechnika világára. Ma, a Wayland korában, az X11 fokozatosan visszavonulóban van, de öröksége és kódja még mindig jelen van minden Unix-szerű rendszer mélyén, és valószínűleg még jó ideig velünk marad, mint a múlt egy tiszteletreméltó, ám lassan stafétát adó oszlopa. Az X története így nem csak egy technológia története, hanem a nyílt forrású közösség alkalmazkodóképességének és együttműködésének krónikája is, amelyből a jövő grafikus rendszerei építkeznek.
Források(Egy részük már csak az Internet Wayback Machnine oldalon keresztül érhető el):
- Smith, D.C. et al. (1982). Designing the Star User Interface. Xerox PARC.
https://guidebookgallery.org/articles/designingthestaruserinterface - X Window System history (Wikipedia)
https://en.wikipedia.org/wiki/X_Window_System - X Window System core/protokoll architektúra (Wikipedia)
https://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture - X11 protokoll referenciakézikönyv (X Protocol Reference Manual, X11R7.7)
https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html - X Window System protokoll leírás (RFC 1013)
https://www.rfc-editor.org/rfc/rfc1013.html - X.Org Server Git repository and release notes
https://gitlab.freedesktop.org/xorg/xserver - Wayland Project – Official documentation
https://wayland.freedesktop.org/ - Wayland architektúra leírás (hivatalos Wayland oldal)
https://wayland.freedesktop.org/architecture.html - Wayland protocol bevezető (architektúra diagrammal)
https://wayland.freedesktop.org/docs/html/ch01.html - Arch Linux Wiki – Wayland
https://wiki.archlinux.org/title/Wayland - Phoronix (különböző cikkek az X11 fejlődéséről és leváltásáról)
https://www.phoronix.com/