Dev News Daily ENDE

Die Plattform schluckt am Ende das, was man gegen sie gebaut hat

Zwei zusammenhanglose Ankuendigungen von heute haben dieselbe Form, und die Form verdient einen Namen, weil sie entscheidet, wo Entwicklungsaufwand verloren geht.

Die erste: HTML-Streaming ausser der Reihe wandert in den Browser. Das Muster — die Seite anzeigen, bevor sie fertig geladen ist, und die Luecken fuellen, sobald Daten eintreffen — gehoerte jahrelang dem Streaming-SSR der grossen JavaScript-Frameworks, jedes mit eigener Client-Laufzeit. Der deklarative Vorschlag legt den Mechanismus in den HTML-Parser, gesteuert ueber <template for="..."> und ein Paar Verarbeitungsanweisungen. Chrome 150 liefert ihn aus.

Die zweite: Hugging Face hat GGUF-Laden in transformers ergaenzt und nutzt dafuer die ggml-Kernels von llama.cpp ueber die kernels-Bibliothek, statt neue zu schreiben.

Verschiedene Gebiete, dieselbe Bewegung. Eine Faehigkeit lebt in einem spezialisierten Werkzeug, weil das allgemeine sie nicht beherrscht. Das spezialisierte Werkzeug beweist, dass die Faehigkeit gebraucht wird. Das allgemeine nimmt sie auf — mal durch Standardisierung des Mechanismus, mal indem es schlicht den Code des Spezialisten einbindet.

Die praktische Folge betrifft den Ort des Aufwands, und sie lautet nicht "keine Frameworks mehr". Sie ist enger:

Die Plattform schluckt am Ende das, was man gegen sie gebaut hat
Die Plattform schluckt am Ende das, was man gegen sie gebaut hat — Dev News Daily

Code, der eine Luecke der Plattform ausgleicht, hat ein Verfallsdatum, das man nicht kontrolliert. Kein Fehler — eine korrekte, getestete, tragende Arbeit, deren Existenzgrund durch das Release eines anderen entfallen kann. Streaming-SSR-Laufzeiten waren richtig, als sie geschrieben wurden. Sie werden gerade zur Kompatibilitaetsschicht.

Die aufnehmende Plattform nimmt selten das Ganze auf. Der Browser-Vorschlag deckt den Einfuegemechanismus ab, nicht die Entscheidung, was aufgeschoben wird, nicht Fehlergrenzen, nicht die Darstellung in einem Browser ohne die Funktion. Die transformers-Arbeit deckt Laden und Kernels ab und beginnt bei Apple Silicon und einer Modellarchitektur. In beiden Faellen behaelt der Spezialist den langen Schwanz — dort sass ohnehin die meiste Komplexitaet.

Bestaendig ist also die Entscheidungsebene, nicht die Mechanikebene. Zu wissen, welche Teile einer Seite das Streamen lohnen, ueberlebt es, dass der Parser streamen lernt. Zu wissen, welche Quantisierung fuer die eigene Aufgabe traegt, ueberlebt jede Laufzeit, die das Dateiformat laden lernt.

Der billige Test beim Hinzufuegen einer Abhaengigkeit: Wenn die Plattform das naechstes Jahr ausliefert — wie viel von meinem Code faellt weg, und wie viel bleibt meiner? Lautet die ehrliche Antwort "das meiste faellt weg", schreibt man eine Zwischenschicht. Zwischenschichten gehoeren duenn, isoliert und leicht entfernbar — und zwar mit Absicht so gebaut.

Ein Effekt zweiter Ordnung lohnt die Beobachtung. Standardisiert sich eine Faehigkeit, wird ihre schlechteste Fassung kostenlos, und der Boden hebt sich fuer alle, die nie darueber nachgedacht haben. Das ist gut fuer Nutzer und unangenehm fuer jeden, dessen Produkt genau diese Faehigkeit war. Es ist auch der Grund, warum signalisierte Unterstuetzung keine ausgelieferte ist: Ein Feature mit einer Engine dahinter bleibt eine Wette, und der Ruecksturzpfad ist der Teil, den man zuerst entwirft.