Torvalds rügt Dateiablage statt Funktion im Linux-Kernel

Linus Torvalds zeigt im aktuellen Merge-Fenster für Linux 7.2 klare Kante bei Code-Organisation, nicht bei Funktionen.

Die hierarchische Struktur von Dateien ist laut Torvalds seit 1965 verfügbar und wird dennoch oft ignoriert.
Highlights
  • Torvalds lehnte die Präfix-Konvention für sched_ext-Dateien ab und forderte ein eigenes Unterverzeichnis.
  • Die Entwickler korrigierten die Dateiablage noch am selben Tag ohne Änderung an der Logik.
  • Der Vorfall unterstreicht Torvalds' Fokus auf langfristige Wartbarkeit des Linux-Kernels.

Linus Torvalds hat sich in der aktuellen Merge-Periode für Linux 7.2 nicht über einen Code-Fehler oder eine Performance-Problematik echauffiert – sondern über die Frage, wo genau bestimmte Dateien im Quellbaum abgelegt werden. Was auf den ersten Blick wie eine Petitesse wirkt, entpuppt sich bei näherem Hinsehen als grundsätzliche Lektion in nachhaltiger Code-Organisation.

Neue Scheduler-Funktionalität ohne Einwände angenommen

Im Zentrum des Vorgangs steht sched_extcodecodecode, das Framework für erweiterbare CPU-Scheduler im Linux-Kernel. Diese Architektur erlaubt es, Scheduler als BPF-Programme im Userspace zu schreiben und wurde mit Linux 6.12 in den Hauptkernel aufgenommen. Seither dient sie sowohl der Verbesserung von Gaming-Performance als auch der schnellen Prototypentwicklung neuer Scheduling-Strategien. Für Version 7.2 arbeitet das Team um die Maintainer an der Unterstützung von Sub-Schedulern – einer hierarchischen Anordnung mehrerer Scheduler auf einem System, die je nach Workload dynamisch zum Einsatz kommen können. Für Multitenant-Umgebungen ist das ein enormer Gewinn.

Torvalds hatte an dieser Funktionalität nichts auszusetzen. Der Code wurde gemergt. Doch beim Merge fügte er eine unmissverständliche Bemerkung hinzu: „Please don’t do this disgusting thing.“

Der Stein des Anstoßes: Dateien ohne Ordner-Struktur

Was Torvalds so deutlich ablehnte, war nicht etwa der Algorithmus oder eine API-Entscheidung, sondern die schiere Ablage der neuen Dateien. Im Verzeichnis kernel/sched/codecodecode befanden sich plötzlich mehrere Dateien mit dem Präfix ext_codecodecode – darunter ext_arena.ccodecodecode, ext_cid.ccodecodecode und ext_types.hcodecodecode. Sie lagen lose neben den bestehenden Scheduler-Dateien, lediglich durch die Namenskonvention als zusammengehörig erkennbar.

Für Torvalds ist das keine Frage des Geschmacks, sondern ein handfester Verstoß gegen grundlegende Prinzipien der Projektstruktur. Er argumentierte, dass eine derartige Anzahl zusammengehöriger Dateien in ein eigenes Unterverzeichnis gehört. Die bloße Kennzeichnung durch ein Präfix nannte er „disgusting and wrong“ – und fügte mit beißender Ironie hinzu: „Proper hierarchical filesystems have been available since 1965.“ Seit mehr als einem halben Jahrhundert also, so die unmissverständliche Botschaft, gibt es die technische Möglichkeit, Dateien in Ordnern zu gruppieren.

Warum Torvalds auf der Verzeichnisstruktur beharrt

Das Bemerkenswerte an diesem Vorgang ist, dass es nicht um Funktionalität ging. Der Code kompilierte einwandfrei, die Logik war korrekt, die Performance stimmte. Dennoch zog Torvalds eine klare Grenze. Sein Argument richtet sich an die Lesbarkeit und Wartbarkeit des Codes für alle, die in Zukunft damit arbeiten werden. Ein Unterverzeichnis signalisiert auf einen Blick: Diese Dateien gehören zusammen und bilden eine logische Einheit. Eine Präfix-Konvention hingegen erzeugt eine Scheinordnung – die Dateien liegen faktisch weiterhin auf derselben Ebene verteilt und zwingen jeden Entwickler, sich die Zusammengehörigkeit jedes Mal bewusst zu erschließen.

Es geht Torvalds nicht um den Moment, sondern um die nächsten Jahre. Jeder, der diesen Code in Zukunft liest, modifiziert oder erweitert, profitiert von einer klaren, hierarchischen Struktur. Das ist keine Marotte, sondern die Konsequenz aus drei Jahrzehnten Kernel-Entwicklung. Bereits 2025 hatte Torvalds in einer ähnlich deutlichen Diskussion um die Implementierung eines case-insensitive Dateisystems Stellung bezogen – auch damals mit dem Fokus auf langfristige Wartbarkeit.

Antwort auf die häufigste Frage: Was genau hat Torvalds kritisiert?

Torvalds kritisierte nicht die Funktion sched_extcodecodecode oder deren Sub-Scheduler-Erweiterung. Er beanstandete die Art der Dateiablage: Statt die zusammengehörigen ext_codecodecode-Dateien in ein eigenes Unterverzeichnis kernel/sched/ext/codecodecode zu legen, wurden sie mit einem Präfix versehen direkt im Hauptverzeichnis abgelegt. Seine Forderung war die Nutzung einer hierarchischen Ordnerstruktur, wie sie seit Jahrzehnten Standard ist.

Noch am selben Tag korrigiert

Die Reaktion der Entwickler war vorbildlich. Tejun Heo, der Maintainer von sched_extcodecodecode, reichte noch am selben Tag einen Pull-Request ein, der die Struktur wie gefordert umstellte. Aus kernel/sched/ext_*.ccodecodecode wurde kernel/sched/ext/*.ccodecodecode. Header- und Quelldateien wurden so angepasst, dass sie weiterhin einzeln analysiert werden können und Editoren sowie Analysewerkzeuge jede Datei korrekt interpretieren.

Keine einzige Zeile Logik änderte sich. Es war eine reine Neuanordnung von Dateien. Und Torvalds mergte auch diesen Patch. Von der Rüge über die Diskussion bis zur Umstrukturierung verging kaum Zeit – ein Beispiel dafür, wie im Linux-Kernel trotz der bekanntermaßen rauen Kommunikation am Ende die Sache selbst im Vordergrund steht.

Der Vorgang zeigt, dass es in der Kernel-Entwicklung nicht allein darum geht, ob Code funktioniert. Sondern auch darum, wie er sich in das Gesamtgefüge einfügt und ob er die Arbeit derjenigen erleichtert oder erschwert, die ihn morgen, in einem Monat oder in fünf Jahren lesen werden. Torvalds‘ Verweis auf das Jahr 1965 war kein historischer Exkurs – es war die knappste Formulierung eines Prinzips, das er seit drei Jahrzehnten verteidigt: Gute Softwarearchitektur fängt bei der Ordnerstruktur an.

Diesen Artikel teilen