Wayland 11 lat później albo spóźnione życzenia

Mało kto w natłoku spraw codziennych zauważył fakt, że 30 września 2019 roku obchodziliśmy 11 lat protokołu Wayland. Ani to okrągła rocznica, ani też dokładny dzień „obchodów”, czy zatem jest co roztrząsać z takim opóźnieniem? Ano wystarczy szybki rzut oka na działający na naszym komputerze serwer Xorg, aby stwierdzić, że coś poszło nie tak.

Wayland w teorii
Przyczyny powstania Waylanda i tęsknoty za nowoczesnością giną już powoli w pomroce dekad. Bowiem to właśnie w 2008 roku pracujący nad AIGLX oraz DRI2 Kristian Hoegsberg rozpoczął pracę nad projektem, który miał zmienić scenę i pulpit domowego użytkownika Linuksa (i nie tylko). Zauważył on, że obecnie czynione są ogromne wysiłki, aby usprawnić konstrukcję Xorg o nowoczesne rozwiązania, takie jak kompozytor obrazu, który to nierzadko korzysta z pełni mocy karty graficznej (pamiętacie zmagania, aby Compiz zawsze miał pod ręką najnowsze sterowniki NVIDII?). Dzięki temu możliwe stało się wzbogacanie treści i formy ekranowej. Kompozytor jak sama nazwa wskazuje mógł „składać” to co widzimy z kilku elementów i w rezultacie okna mogły być ładniejsze, mogły się pojawić efekty, transformacje zawartości ekranu, itp. Jednak Kristian poszedł krok dalej i stwierdził, że zamiast „doklejać” do całości kompozytor, dlaczego by nie uczynić go sercem serwera wyświetlania? Jak pomyślał tak zrobił.

Takie były początki – środowisko CDE na Linuksie
Warto tutaj przypomnieć sobie w skrócie genezę serwera Xorg. Jego początki to rok 1984, protokół W a potem X i pragnienie, aby program uruchomiony na dowolnym terminalu wyglądał tak samo. W tych czasach to nie było takie oczywiste, gdyż w ramach „terminali” funkcjonowały przeróżne rozwiązania przeróżnych producentów. X Window System miał umożliwić uruchamianie programów zdalnie i lokalnie z zachowaniem jednolitości wizualnej. Zaimplementowane przez Boba Scheifler z MIT asynchroniczna transmisja danych i koncepcja modelu klient serwer, miały wytyczyć dalszą drogą rozwoju. W 1987 roku wydano jedenastą wersję protokołu X i to dlatego do dzisiaj mamy do czynienia z X11. Całość była udostępniona na wolnej licencji MIT, co zapewniło gwałtowny rozwój tego rozwiązania. A potem… potem zaczęła się polityka.

GNOME 1.0 w 1999 roku
W styczniu 1988 roku powołano MIT X Consortium jako grupę non-profit a przewodniczył jej Scheifler. W 1993 zerwano z powiązaniami z MIT i wykrystalizowało się X Consortium, Inc. Na początku roku 1997 projekt przeszedł pod skrzydła The Open Group (grupę zajmującą się rozwojem otwartych standardów, posiadająca prawo do nazwy UNIX). Jednak ich wydanie X116.4 miało być darmowe tylko do domowego użytku. Wobec buntu ekipy XFree86 (która była gotowa na sforkowanie projektu), The Open Group przywróciło X11 jako wolne oprogramowanie. Zaraz, XFree86? To wolna implementacja standardu X11 na potrzeby Linuksa, *BSD, Unixa i innych. Przez lata grała główne skrzypce jeżeli chodzi o rozwoju protokołu X11. W 1999 roku The Open Group stworzyło X.Org, która to organizacja miała zająć się rozwojem protokołu X i implementacji. Jednak to nadal XFree86 było głównym rozwiązaniem stosowanym na Linuksach. Dopiero powolony proces zmian w XFree86 (a wręcz blokowanie zgłaszanych poprawek) doprowadził w 2003 roku do kryzysu w wyniku którego większość programistów przeniosła się do X.Org – w tym Keith Packard. W tym samym czasie projekt XFree86 ponownie strzelił sobie w kolana, zmieniając licencję na niezgodną z GNU GPL (XFree86 License 1.1). To dopełniło czarę goryczy i większość dystrybucji rozpoczęło stopniowy proces wdrażania rozwiązań oferowanych przez X.org. Pierwsza wersja sygnowana przez X.Org Foundation, X11R6.7, została wydana 7 kwietnia 2004 roku. Aby ułatwić migrację została oparta na wersji XFree86 4.4 Release Candidate 2 – ostatniej, która nie zawierała jeszcze zmodyfikowanej licencji – oraz X11R6.6 autorstwa X.Org Group.

Typowy pulpit GNOME w 2019 roku
Niezła telenowela, nieprawdaż? Obecnie rozwój X.Org to wprowadzanie nowych możliwości (poprzez mechanizm rozszerzeń), dzielenie kodu na mniejsze moduły i próba dotrzymania kroku zmianom cywilizacyjnym.

Jednak nie da się ukryć faktu, że struktura i koncepcje X11 odstają już nieco od tego, czego oczekuje przeciętnych użytkownik. Zmianom uległ tutaj sposób zdalnego uruchamiania programów (VNC?), moc i znaczenie kart graficznych w komputerach domowych, rozwój graficznej strony interfejsu, jego złożoność a także aspekt estetyczny. Większość z nas pamięta szał jaki ogarnął wszystkich po prezentacji tego, co potrafi AIGLX, a potem Compiz. Nowe kompozytory na stałe wmontowały się w strukturę X.Orga.

Jednak po czasie zauważono problemy związane z taką protezą. Chociaż protokół X11 radził sobie w ramach rozszerzeń z takimi nowościami, to jednak obliczono, ile użytkownik jest stratny na przerzucaniu danych pomiędzy menedżerem okien i kompozytorem. Nie na darmo wszystkie współczesne środowiska graficzne posiadają opcję pomiń kompozytor w trybie pełnoekranowym. Chodzi o wydajność, a jak mówimy wydajność to myślimy gry.

I tak oto wracamy do pomysłu z 2008 roku i protokołu Wayland. Jego założenia są słuszne – połączyć w jedno serwer okien i kompozytor (oraz inne wynikające z tego uproszczenia i ulepszenia). W praktyce okazało się, że nie jest to takie oczywiste. Bez odpowiednich sterowników całość nie była już tak efektowna. A wielcy producenci pomysł przejścia na Waylanda potraktowali jak natrętną muchę. Po prostu nie uwzględnili go w sterownikach. Dopiero teraz czynione są odpowiednie kroki i w sterownikach NVIDII i AMD pojawiają się pewne rozwiązania. Jednak lista tego co nie działa wciąż dominuje.

I tak upłynęło 11 lat. Wayland doczekał się kompozytorów Weston czy obsługi w menedżerze okien Mutter czy KWin. Jednak projekt uwikłał się w próbę zachowania zgodności z X.Org by ułatwić migrację. Efektem jest cała masa problemów a mitycznego zysku na wydajności po prostu nie widać.

Wszystkiego najlepszego Waylandzie. Może kiedyś i dla ciebie zaświeci słońce.