KDE Linux, die moderne, derzeit noch im Alpha-Stadium befindliche KDE‑Distribution, verwendet derzeit Arch Linux als Grundlage für sein Basissystem. Dauerhaft könnte diese Verbindung jedoch enden. Wie Nate Graham im aktuellen Monatsbericht zu KDE Linux erläutert, arbeitet das Projekt seit einiger Zeit an einer Variante, bei der das Basissystem mit Apache BuildStream direkt aus den Quellen erzeugt wird. Das Vorhaben nähert sich inzwischen dem Punkt, an dem KDE entscheiden will, ob dieser Ansatz in KDE Linux übernommen werden soll.
Arch steckt nur beim Erstellen im System
KDE Linux ist keine klassische Arch-Distribution und stellt dem Anwender auch keinen Pacman-Paketmanager zur Verwaltung des installierten Systems bereit. Das Betriebssystem wird stattdessen als Image ausgeliefert, das/usr-Verzeichnis liegt in einem schreibgeschützten EROFS-Abbild (Enhanced Read-Only File System Image). Bei einem Systemupdate wird das gesamte Image atomar gegen eine neue Version ausgetauscht. Ältere Images bleiben für Rollbacks erhalten. Anwendungen sollen in erster Linie über Flatpak installiert werden.
Arch Linux kommt bislang hauptsächlich beim Bau dieser Images ins Spiel. Dabei verwendet KDE Linux Pacman und die Arch-Repositories, um die Komponenten des Basissystems zusammenzustellen. Anschließend wird der Paketmanager aus dem fertigen System entfernt. Für die Entwicklung ist dieses Verfahren ausgesprochen praktisch: KDE kann auf eine aktuelle Distribution mit einem umfangreichen Paketbestand zurückgreifen, statt große Teile eines Betriebssystems selbst bauen und paketieren zu müssen. Langfristig kollidiert dieser Ansatz aber mit den Release-Plänen von KDE Linux.
KDE Linux ist keine Rolling-Release-Distribution.
Arch Linux folgt dem Rolling-Release-Modell. KDE Linux soll dagegen einem klassischen Release-Modell mit definierten Veröffentlichungsständen folgen, womit spätestens beim Einfrieren eines neuen KDE-Linux-Releases ein Konflikt entsteht. KDE kann entweder den zu diesem Zeitpunkt aktuellen Zustand von Arch einschließlich möglicher Regressionen oder gerade ungünstiger Versionskombinationen übernehmen oder einen bestimmten Snapshot festhalten und anschließend selbst pflegen. Damit fällt ein erheblicher Teil der Paketierungsarbeit bei KDE an.
Dass dies nicht nur ein theoretisches Problem ist, beschrieb KDE-Entwickler Hadi Chokr bereits im September. KDEs eigener Software-Stack hängt von den ABI-Versionen (Application Binary Interface) verschiedener Bibliotheken des Basissystems ab. Bewegte sich Arch an diesen Stellen schneller als KDE Linux, konnten daraus nicht mehr funktionierende Images entstehen. Als Gegenmaßnahme begann KDE deshalb, mit festgelegten Arch-Snapshots zu arbeiten. Das wiederum passt nur bedingt zu einer Distribution, deren Infrastruktur ausdrücklich für kontinuierliche Aktualisierungen ausgelegt ist.
BuildStream statt Distributionspaketen
Genau an dieser Stelle setzt BuildStream an. Das inzwischen von der Apache Software Foundation betreute Projekt ist kein Paketmanager für Endanwender, sondern ein Werkzeug zur reproduzierbaren Integration kompletter Software-Stacks. Abhängigkeiten, Quellen und Build-Schritte werden deklarativ beschrieben. BuildStream erzeugt daraus dann unter anderem Pakete, SDKs oder komplette Betriebssystem-Images. Graham vergleicht den Ansatz vereinfacht mit Yocto. Während KDE Linux derzeit mit mkosi (Make Operating System Image) aus bereits vorhandenen Distributionspaketen ein Betriebssystem-Image zusammensetzt, kann BuildStream die benötigten Komponenten direkt aus deren Quellcode bauen. Die Arch-Pakete als Zwischenschicht würden damit entfallen.
Für KDE bedeutet das vor allem mehr Kontrolle. Das Projekt könnte exakt festlegen, welche Version einer Bibliothek zusammen mit welcher Version von Plasma, systemd oder anderen Komponenten verwendet wird. Ein Arch-Update würde den Unterbau nicht länger unerwartet verändern. Ebenso ließen sich Komponenten integrieren, die Arch derzeit überhaupt nicht paketiert. Damit verschiebt sich auch die Definition von KDE Linux: Statt ein KDE-System aus den Bausteinen einer vorhandenen Distribution zusammenzusetzen, würde KDE den Software-Stack seines Betriebssystems weitgehend selbst definieren.
Auf dem Weg zur Beta
Abseits der Arbeiten an BuildStream verlief die Entwicklung von KDE Linux im September vergleichsweise ruhig, da viele Entwickler an der Akademy-Konferenz in Graz teilnahmen. Eine sicherheitsrelevante Änderung wurde jedoch umgesetzt: sudo und pkexec wurden durch run0 von systemd ersetzt. Dadurch soll unter anderem die Zahl der SUID-Binaries reduziert werden, die grundsätzlich als Ansatzpunkt für Angriffe dienen können. Graham sieht das Projekt derzeit bei 85% auf dem Weg zur Beta.
