2026-04-09

We don't break user space

Linus Torvalds wird ein Satz zugeschrieben, der trockener kaum klingen könnte und gerade deshalb so gut ist: „We don't break user space.“ Kein Zukunftsgeflimmer, kein Produktsprech, kein Gerede von Disruption, sondern bloß eine knappe Regel mit erstaunlich viel Anstand. Gemeint ist im Kern, dass interne Änderungen nicht einfach dazu fĂŒhren dĂŒrfen, dass draußen funktionierende Programme, Skripte und ArbeitsablĂ€ufe plötzlich kaputtgehen.

Das klingt zunĂ€chst nach einer rein technischen Maxime aus der Linux-Welt, ist aber eigentlich sehr viel allgemeiner. „User space“ meint dort die Welt, in der Menschen tatsĂ€chlich arbeiten: Tools, Shells, Editoren, Dienste, Routinen, gewachsene Systeme. Und genau diese Welt ist es, die in vielen Projekten erstaunlich wenig Respekt erfĂ€hrt, sobald irgendwo jemand beschließt, nun werde „endlich mal aufgerĂ€umt“.

Der Reiz dieses Satzes liegt darin, dass er eine unangenehme Wahrheit ausspricht: Sobald Leute sich auf ein Verhalten verlassen, ist dieses Verhalten real. Es spielt dann nur noch begrenzt eine Rolle, ob eine Schnittstelle intern schön ist, ob ein Flag historisch gewachsen oder ein Dateiformat nicht mehr elegant wirkt. Irgendwo hĂ€ngt fast immer ein Skript daran, ein Build, ein Server oder schlicht ein Mensch, der sich einen Ablauf ĂŒber Jahre eingeprĂ€gt hat. Von innen sieht das schnell wie Altlast aus; von außen ist es oft einfach etwas, das zuverlĂ€ssig funktioniert.

Genau hier beginnt der Unterschied zwischen technischer Eitelkeit und technischer Reife. Es ist leicht, Dinge neu und sauber zu entwerfen, wenn man so tut, als gĂ€be es keine Vergangenheit. Schwierig ist es, ein System zu verbessern, ohne dabei die Kosten der eigenen Verbesserung nach außen abzuwĂ€lzen. Vieles, was als Modernisierung verkauft wird, ist in Wahrheit bloß eine Verlagerung von Aufwand: Innen wurde etwas hĂŒbscher, außen brechen Dokumentation, Gewohnheiten und Automatismen.

Darum ist KompatibilitĂ€t auch keine feige Tugend und kein Ausdruck von Ideenarmut. Sie ist Respekt vor fremder Zeit. Wer funktionierende Nutzung erhĂ€lt, schĂŒtzt nicht nur Code, sondern investierte Lebenszeit, eingeĂŒbte Handgriffe und oft genug ganze ProduktionsablĂ€ufe. Das ist unerquicklich, weil es MĂŒhe macht. Man muss ÜbergĂ€nge bauen, unschöne SonderfĂ€lle mitschleppen, Ersatzpfade anbieten und manchmal den eigenen Wunsch nach totaler Bereinigung zurĂŒckstellen. Aber genau darin liegt oft die eigentliche Ingenieursleistung.

NatĂŒrlich heißt das nicht, dass niemals etwas verschwinden darf. Jedes System braucht irgendwann Schnitte, sonst erstickt es an seiner eigenen Geschichte. Nur ist eben nicht jeder Bruch schon deshalb legitim, weil die neue Lösung dem Entwickler besser gefĂ€llt. Wenn man etwas Ă€ndern muss, dann möglichst mit BegrĂŒndung, Vorlauf und einem brauchbaren Weg von alt nach neu. Nicht jeder Bruch ist vermeidbar, aber die GleichgĂŒltigkeit gegenĂŒber seinen Folgen wĂ€re es oft schon.

Vielleicht gefĂ€llt mir dieser Satz deshalb so gut, weil er so wenig Theater macht. Er behauptet nicht, die Welt neu zu erfinden, sondern erinnert an etwas viel BodenstĂ€ndigeres: Wenn andere Menschen auf einem System aufbauen, entsteht Verantwortung. Das ist keine spektakulĂ€re Einsicht, aber eine, von der ein erstaunlich großer Teil der Softwarewelt profitieren wĂŒrde.