Kleine toevoeging. Wayland en X zijn niet alleen een kwestie van 'het was nodig om opnieuw te beginnen omdat de code oud was', al speelde dat een rol. Een tweede, misschien belangrijkere factor, is dat de hardware/software interactie gewoon heel anders is vandaag.
Een simpel voorbeeld. X was ontwikkeld met het idee dat je als applicatie opdrachten geeft om individuele lijntjes en tekst karakters te schrijven. Dus wil je een 1 pixel dikke, horizontale lijn die 50 pixels lang is? Dan zeg je dat tegen X. Die geeft dat dan weer aan de video kaart, want video kaarten hebben 2D acceleratie om lijntjes te tekenen.
Je snapt dat dat voor een 1993-achtige computer interface inderdaad goed werkt. En het gaat ook lekker efficiënt over een netwerk! Maar je tekent er geen mooi half-transparant bubble-knopje met anti-aliased tekst mee. Een moderne video kaart heeft dit 2D gedeelte nog, maar alles gaat in 3D en met pixmaps, waarbij een applicatie direct met de video kaart moet praten om een knopje, tekst en de rest van het venster te renderen, en dit daarna als plaatje aan de display server geeft, die dat dan weer met de andere vensters samenvoegt en weer terug geeft aan de video kaart om te renderen en weer te geven. X is daar totaal niet voor geschreven, het is een compleet andere manier van werken. Wayland heeft niets van dit 'vertel me waar ik een pixel neer moet zetten', die zegt gewoon, "hey, hier heb je toegang tot de video kaart, laat het ff weten als je klaar bent en waar je de pixmap van je venster dan hebt, dan vertel ik de video kaart hoe ie het moet samenvoegen met de rest van de apps".
Dus minder heen en weer kopieren (die pixmap kan in het video kaart geheugen blijven ipv terug naar X op de CPU en dan weer terug naar de GPU) en een veel simpeler protocol, wat het natuurlijk ook veel sneller maakt.
Maar het heeft heel lang geduurd, en dat was niet omdat dit niet werkte, maar omdat een display server VEEL meer doet dan beeld weergeven. Het team wilde eigenlijk af van die andere zaken. Denk aan dingen als tekst weergeven, maar ook communicatie tussen vensters en het klipboard, hoe je screen recording doet, het positioneren van vensters, focus handling etc etc. Het gevolg was dat Wayland veel en veel te simpel was in het begin.
Eigenlijk een tikje jammer, iedereen (KDE, GNOME, etc) moest ontzettend veel zelf doen en synchroniseren met andere teams zodat je kunt kopiëren in een KDE app en plakken in een GNOME app enzo. Dat was niet echt handig, daar die communicatie tussen projecten niet altijd goed werkt - mede omdat ze soms dingen totaal anders willen doen en hun design ideeën niet compatibel zijn. Dus dat vertraagde de implementatie gigantisch. Dat had beter gekund, maar de meeste van deze dingen zijn nu zo'n beetje wel opgelost.
Het is nog steeds zo dat veel meer werk richting de desktop projecten is gepushed, het is allemaal een beetje te 'Linux' gegaan, waarbij niemand echt aan het hele plaatje dacht, maar de Wayland mensen alleen aan Wayland dachten, en elk van de desktops aan hun eigen stukje. Maar goed, we zijn nu wat, 15 jaar bezig, en we komen er langzaam
Al zijn we de netwerk transparantie wel kwijt. Maar dat is ook wel logisch - X deed dat door de 'draw commands' over het netwerk te sturen. Die gebruiken we al jaren niet meer, dus stuurde X tegenwoordig pixmaps over het netwerk - en niet echt efficiënt. De ontwikkelaars vonden dat dat door een aparte tool zou moeten worden gedaan, die er echt voor gebouwd is. Op zich redelijk, maar ja we zijn wel het gemak van bijna-geen-configuratie-nodig netwerk transparantie van apps kwijt. Uncool.
(Ik gebruik zelf Wayland nog steeds niet. Zucht)
EDIT: sorry, dit was geen 'kleine toevoeging' maar een essay.
EDIT2: verhaal liep niet echt, ietsje gefixed, plus iets over netwerk transparantie
[Reactie gewijzigd door Superstoned op 22 juli 2024 22:28]