# Wayland (protocol)

Wayland is een computerprotocol als alternatief voor het X11-systeem.

## Software-architectuur

Høgsberg koos ervoor om X volledig te schrappen tussen de clients en de hardware in plaats van een uitbreiding te maken voor X.Org Server. Vertaald citaat uit de FAQ-sectie op de website:
   Er is veel infrastructuur verhuisd van de X-server naar de kernel (geheugenbeheer, commandogeheugenbeheer, commandoplanning, mode-setting) of bibliotheken (Cairo, Pixman, FreeType, fontconfig, Pango etc.) waardoor er zeer weinig dient te gebeuren in een centraal serverproces. … [Een X-server heeft] enorme functionaliteit die ondersteund moet worden om te claimen dat je het X-protocol ondersteunt, terwijl niemand dit ooit zal gebruiken. … Dit gaat onder meer over codetabellen, glyph rasterization en caching, X logical font description (XLFD) (echt waar, XLFD's!) en de hele teken-API om gestippelde lijnen, polygonen, brede bogen en meer grafische primitieve elementen uit de jaren 80 te tekenen. We hebben de X.Org Server voorlopig modern kunnen houden door extensies als XRandR, XRender en COMPOSITE toe te voegen … Met Wayland kunnen we de X-server en alle legacytechnologie naar een optioneel codepad verhuizen. Tot een punt komen waar de X-server een compatibiliteitsoptie is en niet langer het belangrijkste weergavesysteem zal een tijd duren, maar [we] zullen er nooit komen als er geen plannen worden gemaakt.
Wayland is het protocol. De implementatie van het protocol is de Waylandcompositor (bijvoorbeeld Weston).

## Verschillen tussen Wayland en X

Er zijn een aantal verschillen tussen Wayland en X in verband met prestaties, code-onderhoudbaarheid en beveiliging:

### Architectuur

    De composition manager is een aparte en bijkomende functie in X, terwijl Wayland de displayserver en de compositor samenvoegt. Sommige functies van de window manager worden ook overgenomen, wat in X een apart client-side-proces is.

### Compositie

    Compositie is optioneel in X, maar verplicht bij Wayland. Compositie in X is "actief", wat betekent dat de compositor alle pixelgegevens moet ophalen wat vertraging oplevert. In Wayland is compositie "passief", wat betekent dat de compositor pixelgegevens direct krijgt van de clients.

### Tekenen (rendering)

    De X-server kan zorgen voor het tekenen (van o.a. vensters), maar kan deze ook gewoon weergeven als deze worden doorgestuurd door een client. In Wayland daarentegen wordt er geen API ter beschikking gesteld voor het tekenen. Wayland delegeert deze taken naar de clients (waaronder het tekenen van lettertypen, widgets etc.). Vensterdecoraties kunnen worden getekend door de clientzijde (bijvoorbeeld door een grafische toolkit zoals Qt) of langs serverzijde (door de compositor).

### Beveiliging en veiligheid

    Wayland isoleert de invoer en uitvoer van elk venster. Hiermee wordt vertrouwelijkheid, integriteit en beschikbaarheid bereikt bij zowel invoer als uitvoer; het originele X-design bevat deze belangrijke beveiligingsfuncties niet, hoewel enkele extensies ontwikkeld werden om te proberen dit op te lossen, Doordat de meeste code bij de client draait, hoeft er niet zoveel code met rootprivileges uitgevoerd worden wat de veiligheid verbetert.

### Communicatie tussen processen

    De X server biedt een basiscommunicatiemethode tussen X-clients, later uitgebreid door ICCCM-conventies. Deze X-client-to-clientcommunicatie wordt gebruikt door window-managers en wordt onder meer gebruikt voor het implementeren van gebruikerssessies, selecties en drag-and-drop. Wayland biedt zelf geen communicatie tussen Wayland-clients aan. Deze functionaliteit moet indien nodig geïmplementeerd worden door de desktopomgevingen (zoals KDE of GNOME) of door een derde partij (door bijvoorbeeld gebruik te maken van het IPC van het onderliggende besturingssysteem).

### Netwerk

    Het X Window System is een architectuur die oorspronkelijk ontwikkeld werd om te werken over een netwerk. Wayland biedt geen netwerktransparantie, maar kan een remote-desktop-protocol implementeren om een "scherm" op afstand weer te geven.

## Gebruik

Wayland wordt gebruikt door Sailfish OS en enkele Linuxdistributies waaronder Fedora.