Die Woche: Desktops und Birnen

Man soll Äpfel nicht mit Birnen vergleichen – und den Linux-Desktop nicht mit dem Kernel. Die Debatte zwischen Miguel de Icaza und Linus Torvalds geht an der Sache vorbei.

In Pocket speichern vorlesen Druckansicht 64 Kommentare lesen
Lesezeit: 5 Min.
Von
  • Dr. Oliver Diedrich

Man soll Äpfel nicht mit Birnen vergleichen – und den Linux-Desktop nicht mit dem Kernel. Die Botschaft geht an den Gnome-Mitbegründer Miguel de Icaza, der ausgerechnet dem Kernel-Chef Linus Torvalds eine Mitschuld am Scheitern des Linux-Desktops gibt; und sie geht an Torvalds, der hämisch darauf verweist, dass der Entwicklungsansatz des Linux-Kernels offenbar viel erfolgreicher ist als die "Wir wissen es besser"-Haltung der Gnome-Macher.

Dass der große Durchbruch des Linux-Desktops ausgeblieben ist, ist offensichtlich – und keine neue Erkenntnis. Die Gründe dafür hat Chris Schläger, früher Entwicklungsleiter bei Suse, jetzt Chef des Operating System Research Center bei AMD, bereits vor sechs Jahren in seinem Artikel Wo bleibt der Linux-Desktop? analysiert: Wo Windows und Mac OS X eine stabile, integrierte und gut dokumentierte Umgebung zur Softwareentwicklung bieten, sieht sich der Anwendungsentwickler unter Linux einer endlosen Fülle von Programmiersprachen, Bibliotheken, Entwicklungsumgebungen, Systemdiensten und APIs gegenüber, deren Dokumentation im schlimmsten Fall lediglich aus dem Quelltext besteht. Daran hat sich bis heute nicht viel geändert.

De Icaza hebt in seinem Blog-Beitrag What Killed the Linux Desktop besonders darauf ab, dass es beim Linux-Desktop zu schnell zu viele Änderungen an den APIs und Subsystemen gegeben habe – ohne Rücksicht auf bestehende Anwendungen, ohne Migrationspfade, ohne Abstraktions- oder Kompatibilitätsschichten. Als Entwickler einer Desktop-Anwendung für Linux kämpft man so mit permanenten, keineswegs immer ausgereiften Umbauten einer sowieso nicht besonders gut dokumentierten API.

So werden viele Funktionen moderner Linux-Systeme von Hintergrundprozessen (Avahi, Upower, NetworkManager, Udisks, SessionManager ...) per D-Bus bereitgestellt. Da gab es in den letzten Jahren zahlreiche inkompatible Umbauten, bei denen auch schon mal Funktionen komplett weggefallen sind. Ich habe noch nirgends eine auch nur halbwegs erschöpfende Übersicht gefunden, welche Funktionen die zahlreichen D-Bus-Objekte bereitstellen, die so ein Linux-Desktop startet und die man sich mit qdbus und qdbus --system auflisten lassen kann. Und dass diese Liste bei jeder Linux-Distribution ein bisschen anders aussieht, macht das Entwickler-Leben auch nicht eben leichter.

Das Problem, das De Icaza benennt, ist also durchaus real. Den Grund für die permanenten Umbauten sieht De Icaza in der Haltung vieler Open-Source-Entwickler, denen eine saubere Architektur und guter Code wichtiger ist als Rückwärtskompatibilität bei den APIs. Und Vorbild für diese Haltung, so De Icaza, seien die Kernelentwickler (und speziell Linus Torvalds) mit ihrer Weigerung, eine stabile binäre Treiberschnittstelle zu schaffen.

Nun sind Treiber aber keine Anwendungen. Die Kernel-Schnittstellen für Treiber (an denen es in der Tat permanent Änderungen gibt) sind im Vergleich zum Linux-Desktop einfach und übersichtlich. Bei Änderungen beispielsweise an kernelinternen Datenstrukturen genügt es in der Regel, die Treiber neu zu übersetzen, ohne dass auch nur eine Zeile Code geändert werden muss; und die allermeisten Treiber sind sowieso Teil des Kernels. Die Schnittstellen des Kernels für Anwendungen – von sehr systemnahen Tools abgesehen – hingegen ändern sich kaum jemals in inkompatibler Weise; ohne es ausprobiert zu haben, würde ich vermuten, dass ein zehn Jahre altes Konsolenprogramm auch noch auf einem aktuellen Linux-System läuft (sofern es statisch gegen alle benötigten Libraries gelinkt ist). Ausgerechnet den Kernel als schlechtes Beispiel für mangelnde API-Stabilität anzuführen, ist da zumindest ein bisschen irreführend.

Torvalds konnte es sich dann auch nicht verkneifen, in seiner Replik (im zweiten Kommentar auf diesen Google+-Post zurückzukeilen: Seit 20 Jahren kämen praktisch alle Impulse für die Weiterentwicklung des Kernels von außen. Die Entwicklung werde von den Bedürfnissen der Linux-Anwender gesteuert, nicht von irgendeiner Vision der Entwickler. Das sei das genaue Gegenteil der Mentalität der Gnome-Entwickler, die ihre Visionen umsetzen, auch wenn die Anwender dagegen revoltieren. (Torvalds Gnome-3-Bashing ist schon geradezu legendär.)

Aber hier macht auch der Linux-Erfinder Obstsalat aus Äpfeln und Birnen: Ein Großteil der Kernelentwicklung besteht in der Verbesserung der Hardwareunterstützung. Dank der modularen Kernelarchitektur (die übrigens durchaus eine Vision ist, die Torvalds sehr hartnäckig verfolgt) hat ein erweiterter oder neuer Treiber keine Auswirkungen auf den Rest des Kernels (und schon gar nicht auf Anwendungen). Desktop-Umgebungen hingegen zeichnen sich gerade durch ihren hohen Integrationsgrad und das enge Zusammenspiel der verschiedenen Komponenten aus; da ziehen Verbesserungen an einer Stelle fast zwangsläufig Anpassungen an anderen Stellen nach sich, die irgendwie miteinander koordiniert werden müssen.

Also: Der Linux-Desktop ist weder gescheitert, weil sich die Entwickler von den ignoranten Kernel-Hacker haben inspirieren lassen (De Icaza), noch, weil sie es anders gemacht haben als die erfolgreichen Kernel-Hacker (Torvalds). Aber über irgendwas muss man ja diskutieren ... (odi)