- Während Anthropic das Ende des Software Engineerings als Zukunftsversprechen verkauft, wird auch Buns Wechsel von Zig zu Rust kritisiert, weil er für die PR-Erzählung genutzt wurde, dass AI Engineering ersetzen könne
- Bun nannte Speicherfehler als Grund für den Wechsel, lieferte aber kaum einen Vergleich von Alternativen und Vor- bzw. Nachteilen und legte auch Kosten wie die langsame Kompilierung von Rust nicht offen, weshalb es wie eine nachträgliche Rechtfertigung wirken kann
- Es hätte auch andere Möglichkeiten gegeben, Zig anders zu nutzen; TigerBeetles TigerStyle zeigt mit statischer Speicherallokation und Simulationstests ein Beispiel dafür, wie sich use-after-free verhindern lässt
- Der dateiweise Port mit unsafe Rust war ein vernünftiger Ansatz, um Risiken zu senken und spätere Neuentwürfe zu ermöglichen, doch Millionen Zeilen AI-konvertierten Code zu akzeptieren und zugleich ein paar von Menschen lesbare Zeilen zur Pointer-Verwaltung zu problematisieren, wirkt inkonsequent
- Agent-Harnesses, Rusts borrow checker, Lesbarkeitsregeln und menschliche Reviews bleiben weiterhin nötig, daher sind die Einführung von Coding-Agenten und die Abschaffung des Software Engineerings nicht dieselbe Entscheidung
Das von Anthropic propagierte Ende des Software Engineerings
- Anthropic treibt aktiv die Erzählung voran, dass nach dem Coding auch das Software Engineering und schließlich der Großteil menschlicher Arbeit verschwinden werde
- Das Unternehmen hat 132 Milliarden US-Dollar an Investitionen eingesammelt und steuert auf einen IPO mit einer Bewertung von über 1 Billion US-Dollar zu, muss aber in einer Lage, in der es keine Profitabilität nachweisen kann, hypothetischen künftigen Einfluss verkaufen
- Wegen dieser Interessenkonflikte sollte Anthropic als unreliable narrator betrachtet werden; wichtig ist nicht nur der Wahrheitsgehalt der Botschaft, sondern auch ihr Einfluss auf die Urteile von Führungskräften, Weltpolitikern und Verwaltern von Pensionsfonds
- Die AI-Erzählung beeinflusst Entscheidungen zu Architektur, Produkten und Personalaufstellung und erschwert nüchterne Urteile in einem Klima aus Entlassungsangst, Warnungen vor dem Abgehängtwerden und Doom Trolling
- Wer AI im Softwarebereich bewertet, braucht eine skeptische Prüfung, die Anthropics Eigeninteressen und PR-Ziele mit einbezieht
Buns Zig→Rust-Wechsel und die verspätete Erklärung
- Anthropic/Bun erklärte die Entscheidung, Bun von Zig nach Rust zu portieren, erst zwei Monate nach dem Merge in den Main-Branch in einem Beitrag
- Bei großen Infrastrukturprojekten ist es üblicher, die Richtung im Vorfeld zu erklären
- In der Zeit bis zur Erklärung verbreiteten Überschriften wie Anthropic’s Bun Rust rewrite merged at speed of AI den Eindruck, AI habe das Rewrite schnell abgeschlossen
- Zig-Gründer Andrew Kelley veröffentlichte eine Erwiderung und kritisierte in ungewöhnlich direktem Ton Technik und Organisationsführung bei Bun
- Reputationsseitig birgt das die Last, einen Präzedenzfall zu schaffen, bei dem der Kopf einer früheren Sprache wegen eines Sprachwechsels sogar persönliche Mängel angreift
- Manche nannten das einen „meltdown“, aber man kann es auch so sehen, dass hier Probleme öffentlich benannt wurden, die öffentlich benannt werden mussten
Maßstäbe zur Bewertung direkter Kritik
- Buddhist right speech geht davon aus, dass jede Äußerung die folgenden fünf Kriterien erfüllen sollte
- Ist sie wahr?
- Ist sie hilfreich?
- Ist sie zum richtigen Zeitpunkt?
- Ist sie freundlich?
- Geht sie von Freundlichkeit aus?
- Andrew Kelleys Reaktion fällt unter wahre, aber unfreundliche Rede; strittig ist daher, ob es trotz Verstoßes gegen übliche Höflichkeitsnormen nötig war, die Probleme öffentlich anzusprechen
Das Verhältnis von Bun, Zig und Richtlinien für AI-Beiträge
- Bun ist eine TypeScript-Runtime, die oft mit einem schnelleren NodeJS verglichen wird, und Zig ist eine Systemprogrammiersprache, die häufig mit einem modernen C verglichen wird
- Bun war bis vor Kurzem in Zig geschrieben und eine der größten Zig-Codebasen überhaupt
- Die Richtlinien der beiden Projekte zu AI-Beiträgen sind vollkommen gegensätzlich
- Bun sagt, Code-Beiträge seien fast zu 100 % AI
- Zig erlaubt keine AI-Beiträge
- Nachdem Anthropic Bun übernommen hatte, führte Gründer Jarred Sumner ein groß angelegtes Agentenexperiment durch, bei dem Zig-Code in unsafe Rust portiert wurde; das Ergebnis wurde wenige Tage später gemergt und Teil einer offiziellen Version
- Unter den Beteiligten scheint niemand dafür einzutreten, Bun weiterhin in Zig zu belassen; die Debatte konzentriert sich weniger auf den Wechsel selbst als auf dessen Begründung und Vermarktung
- Ein groß angelegter Sprachwechsel mithilfe von Agenten ist ein technisches Experiment, das unter passenden Umständen erneut einen Versuch wert wäre
Drei Deutungen derselben Entscheidung
- Für Entwickler, die zwischen Zig und Rust wählen wollen, ist es ein wichtiger Anhaltspunkt, wenn einer der größten Zig-Anwender seine Entscheidung zurücknimmt
- Die Deutung von Anthropic/Bun lautet, dass alle vernünftigen Methoden versucht wurden, Speicherfehler mit Zig aber schwer beherrschbar waren
- Nach Andrew Kelley wurde die Codebasis durch Engineering-Entscheidungen bei Bun ruiniert, etwa weil AI-Agenten zu viel Schreiben und Review von Code übernommen hätten
- Eine banalere Möglichkeit ist, dass es für die realen Speicherprobleme mehrere Lösungen gab, das Management sich aber leicht für ein Rust-Rewrite entscheiden konnte
- Die Fähigkeiten des neuen Fable-Modells konnten beworben werden
- Anthropic nutzte ohnehin bereits Rust
- Das Zig-Projekt spricht sich öffentlich gegen die Nutzung von Anthropic-Produkten aus
- Der Wechsel zu Rust kann geschäftlich sinnvoll sein, doch die Vermarktung fokussiert sich darauf, dass AI stark genug sei, ein Rewrite auszuführen
- Dass AI use-after-free nicht vorab erkannt hat, kollidiert mit dieser Erzählung
- Die Übertreibung über Anthropics Lautsprecher stellt die Urteile von Jarred Sumner und Andrew Kelley direkt nebeneinander und kann unbeabsichtigt auch Zigs Ruf beeinflussen
Warum persönliche Glaubwürdigkeit Teil der technischen Debatte wurde
- Zunächst zur Verantwortung zu ziehen ist weniger der Bun-Gründer als Anthropic, das den Vorfall für seine AI-Erzählung nutzt
- Weil Anthropic Jarred Sumners Glaubwürdigkeit zur Verstärkung der eigenen Botschaft nutzt, kommt man bei einer Reaktion kaum darum herum, auch seine Urteile und Handlungen zu bewerten
- Es wäre besser, nur über technische Fragen zu sprechen, aber wenn Anthropics Botschaft stärker auf Show und PR setzt als auf technischen Vergleich, gerät auch persönliche Glaubwürdigkeit in die Debatte
- Wenn schon das bloße Zusammenstellen öffentlich getätigter Aussagen und Handlungen wie Verleumdung wirkt, könnte dieses Verhalten selbst Teil des Problems sein
Dauer-Crunch und das organisatorische Umfeld bei Bun
- In einer Stellenausschreibung von Bun aus dem Jahr 2022 wurde gewarnt, dass die ersten neun Monate sehr hart würden und der Job nichts für Menschen sei, die eine Work-Life-Balance mit viel arbeitsfreier Zeit bevorzugen
- Ein dauerhafter Crunch-Modus schadet sowohl Gesundheit als auch Produktivität; das wird auch in empirischer Forschung zu Wissensarbeit immer wieder bestätigt
- Als verwandtes Material kann man im Bereich Human Factors von Empirical Software Engineering nachsehen
- Man sollte eher einen Manager wählen, der dafür sorgt, dass Teammitglieder nachts schlafen können, als einen, der mit 90-Stunden-Wochen prahlt
- Andrew Kelleys Schilderung von Einschätzungen aus dem Umfeld des Bun-Teams lässt sich als mangelnde Kommunikation, unrealistische Erwartungen, geringe Empathie und fehlende Erfahrung zusammenfassen, hat aber die Grenze von Hörensagen
- Dennoch passt diese Einschätzung zu dem extremen Arbeitsumfeld, das bereits in der Stellenausschreibung öffentlich beschrieben wurde
- Auch in einem schlechten Arbeitsumfeld kann hervorragende Technik entstehen, und Bun selbst ist ein brauchbares und interessantes Tool
- Die Einschätzung, der Code habe viele Bugs enthalten und sei schwer wartbar gewesen, ist nicht nur externe Kritik, sondern genau der Zustand, den Bun selbst als Begründung für den Rust-Wechsel angeführt hat
Der praktische Wert eines unsafe-Rust-Portierungsansatzes
- Die technischen Details des Übergangsprozesses sind es wert, auch in anderen Modernisierungsprojekten wiederverwendet zu werden.
- Bun hat keine komplette Neugestaltung in sicherem Rust von Grund auf vorgenommen, sondern eine dateibasierte Portierung in unsafe Rust durchgeführt.
- Dadurch blieb die bestehende Struktur erhalten und das anfängliche Risiko der Umstellung wurde reduziert.
- Zugleich wurde eine Grundlage geschaffen, um später die Sicherheit zu verbessern und neu zu entwerfen.
- KI-basierte Automatisierung könnte die Sprachwahl leichter revidierbar machen als früher, doch automatisches Umschreiben hat weiterhin Vor- und Nachteile sowie semantische Unterschiede.
- Es ist auch möglich, mehrere Umschreibungsverfahren zu kombinieren und sie mit Formal Methods zu verstärken.
- TRACTOR von DARPA ist ein Forschungsprogramm zur Übertragung sämtlichen C-Codes nach Rust; der veröffentlichte Evaluierungsbericht behandelt den Stand der Technik bei automatisierter Transformation.
- Selbst wenn Agenten für alten Code mehr Optionen bieten, bleiben Urteilsvermögen und Kommunikation nötig, um Modernisierungsziele festzulegen.
- Eine einschlägige Referenz dazu ist Marianne Bellottis Kill It With Fire.
Ein technisches Entscheidungsdokument mit vielen Lücken
- Um eine technische Entscheidung zu erklären, braucht es mindestens drei Elemente.
- Was war die Motivation?
- Welche Alternativen wurden geprüft?
- Was sind die Vor- und Nachteile jeder Alternative?
- Das Dokument, in dem Richard Feldman seine Gründe für die Portierung des Roc-Compilers von Rust nach Zig zusammenfasst, ist ein Vergleichsfall, der alle drei Elemente enthält.
- Buns Erklärung nennt Speicherfehler als Motivation, behandelt die geprüften Alternativen jedoch nur teilweise, und ein Vergleich der Vor- und Nachteile fehlt faktisch.
- Gerade wenn Vor- und Nachteile ausgelassen werden, kann es so wirken, als sei die Antwort von Anfang an festgestanden und die Begründung erst nachträglich ergänzt worden.
- Es lässt sich auch nicht ausschließen, dass es weitere, nicht veröffentlichte Gründe gab; um die Glaubwürdigkeit der Entscheidung zu erhöhen, sollten auch die nachteiligen Kosten offengelegt werden.
Ein Vergleich, der nur die Vorteile von Rust aufzählt
- Der Abschnitt „Bun is better in Rust“ behandelt nur die Vorteile des Wechsels zu Rust und nennt die Kosten kaum.
- Große Rust-Codebasen zahlen für die gewonnene Sicherheit typischerweise den Preis langsamerer Compile-Zeiten.
- Bun maß der Kompiliergeschwindigkeit in der Vergangenheit große Bedeutung bei und versuchte, durch einen Fork des Zig-Compilers eine 4-fache Beschleunigung zu erreichen.
- Wenn die Build-Zeiten für Mitwirkende durch die Rust-Portierung gestiegen sind, sollte das offengelegt werden; zudem sollte erklärt werden, warum Sicherheit wichtiger ist als dieser Preis, damit die Entscheidung glaubwürdiger wird.
- Wenn andere Verbesserungen nach der Umstellung in die Liste der Vorteile der Rust-Neuschreibung aufgenommen werden, kann der direkte Effekt des Sprachwechsels übertrieben erscheinen.
Nicht geprüfte Optionen bei Style Guides
- Speicherfehler waren bei Bun nicht die einzige Fehlerursache, traten laut einer privaten Auswertung aber so häufig auf, dass vier Fix-Commits pro Woche nötig waren.
- Jeder Speicherfehler bedeutet, dass irgendwo Regeln darüber gebrochen wurden, wie Objekte erzeugt, besessen und freigegeben werden; deshalb könnte man zunächst prüfen, wie sich erwartete Verhaltensweisen je nach Situation klarer festlegen lassen.
- Manuelles Speichermanagement erweitert den Geltungsbereich solcher Regeln, erfordert aber sprachunabhängig wirksame Nutzungsvorgaben; auch Rust hat API-Style-Guidelines.
-
TigerBeetle als gezeigte Alternative
- TigerBeetle, eine weitere prominente Zig-Codebasis für eine Finanztransaktionsdatenbank, leidet nicht unter Speicherfehlern und wirkt wie eine der zuverlässigsten Datenbanken überhaupt.
- Es stützt seine Zuverlässigkeit auf TigerStyle und Simulationstests.
- TigerStyle ist nicht bloß ein einfaches Codierungsschema, sondern eine Engineering-Philosophie, die Design, Speicher und Tests zusammenführt.
- Der gesamte Speicher wird beim Start statisch allokiert.
- Nach der Initialisierung sind weder dynamische Allokation noch Reallokation nach Freigabe erlaubt.
- So werden use-after-free-Fehler verhindert, ohne unvorhersehbare Leistungsschwankungen in Kauf zu nehmen.
- Mögliche Speichermuster werden bereits in der Entwurfsphase berücksichtigt, was zu einfacheren, schnelleren und leichter nachvollziehbaren sowie wartbaren Strukturen führt.
- Nicht jede Anwendung kann diesen Ansatz unverändert übernehmen, aber er zeigt, dass Speicherpolitik mit den gesamten Architekturentscheidungen verknüpft ist.
-
Offene Fragen in Buns Erklärung
- Bun erwähnt TigerStyle und Googles 31.000 Wörter umfassenden C++-Style-Guide und fasst dann zusammen, Style Guides seien schwer durchzusetzen und stützten sich traditionell auf Code Reviews, Linter und statische Analysewerkzeuge.
- Es wird jedoch nicht behandelt, welchen Style Guide Bun tatsächlich verwendet hat, warum er scheiterte und wie er über vier Jahre hinweg verbessert wurde.
- Wenn Speicherprobleme in einem großen Projekt fortbestehen, ist entscheidend, ob Alternativen ernsthaft getestet wurden, bei denen die aktuelle Sprache anders genutzt wird; dafür fehlt jedoch belastbare Evidenz.
- Eine Arbeitsweise, bei der eine einzelne Person den gesamten Kontext im Kopf behalten soll und keine Meetings stattfinden, erschwert die Schaffung expliziter Regeln und eines gemeinsam getragenen Designs.
Der Widerspruch zwischen Agenten-Review und Style Guides
- Bun hält Style Guides für schwer durchsetzbar, erklärt aber zugleich,
PORTING.mdfür die Migration geschrieben zu haben und dass Agenten den gesamten umgeschriebenen Code anhand strenger Vorgaben überprüft hätten. PORTING.mdselbst ist ein auf den Umfang der Umstellung spezialisierter Style Guide; wenn das Agenten-Review erfolgreich war, wäre das Problem der Durchsetzung von Richtlinien damit bereits gelöst.- Unter geeigneten Bedingungen kann Agenten-Review funktionieren, setzt aber ausreichend durchdachte Regeln und Review-Verfahren voraus.
- Dieselbe geistige Anstrengung hätte auch in die Neugestaltung des Zig-Codes und die Verschärfung von Regeln investiert werden können, doch Bun entschied sich für Umschreiben statt Re-Architektur.
- Aus mehreren nicht veröffentlichten Gründen mag das Umschreiben die richtige Wahl gewesen sein, aber die derzeitige Erklärung reicht für einen ausreichenden Vergleich der Alternativen nicht aus.
Eine Million Zeilen Umschreibung und drei Zeilen Pointer-Code
- Bun argumentiert, dass zur Abbildung von Ownership-Erwartungen auf Typebene in Zig zusätzlicher Code wie
SharedPtr(TCPSocket)undderef()nötig wäre und dies weniger bequem sei als die bisherige Nutzung von Pointern. - In diesem Beispiel würde der Code an den Schnittstellengrenzen um ungefähr drei Zeilen wachsen, um die Übergabe von Pointern klarer zu machen.
- Es wirkt inkonsequent, KI-generierte PRs im Umfang von einer Million Zeilen zu akzeptieren, die kaum zu prüfen sind, zugleich aber einige Zeilen zur Klarstellung von Pointer-Ownership mit Verweis auf Lesbarkeitsprobleme abzulehnen.
- Jarred Sumner hat bereits erklärt, dass über Monate hinweg kein Mensch den Code direkt eingegeben habe.
- Wenn Code nicht für Menschen gedacht ist, wird das Argument schwächer, dass ein
SharedPtr-Wrapper unangenehm anzusehen sei; wenn er aber für Menschen gedacht ist, müssen Lesbarkeit, Prüfbarkeit und Wartbarkeit weiterhin berücksichtigt werden. - KI-Unternehmen tun sich schwer damit anzuerkennen, dass Codelesbarkeit weiterhin wichtig ist; sie zu leugnen passt zwar zur Erzählung vom Ende des Software Engineerings, kollidiert aber mit der Realität der Wartung.
- Es gibt auch Benchmarks, denen zufolge Coding-Agenten die Wartbarkeit standardmäßig verschlechtern können.
Dasselbe Beispiel zeigt: „AI allein reicht nicht“
- Die groß angelegte Neuschreibung des Agenten in Bun dient nicht nur der technischen Verbesserung, sondern erfüllt auch eine geschäftliche Funktion, indem Anthropic die Botschaft bewirbt, dass „AI ausreicht“
- Dasselbe Beispiel lässt sich jedoch auch genau gegenteilig interpretieren
- LLMs allein reichen nicht aus, daher werden sie in ein Agent-Harness eingebettet
- AI allein kann Memory Safety nicht garantieren, daher fiel die Wahl auf Rusts Borrow Checker
- Da Menschen den Code lesen müssen, sorgt man sich um die Lesbarkeit von Pointer-Wrappern
- Da Menschen die Wartung übernehmen müssen, wird eine vertraute bestehende Codestruktur betont
- Project Bunsen fand mit einem hybriden Ansatz 50 Bugs in der Zig-Version von Bun
- Open-Source-Maintainer reagieren auf die Belastung durch AI Slop, Probleme bei der Verifizierung von Mitwirkenden, Richtlinien zur Auswahl von AI-Beiträgen und die Neuordnung von Richtlinien für generative AI
- Unter der Annahme, dass sich selbst von Agenten verursachte Probleme mit noch mehr Agenten lösen lassen, verbreitet sich der Ansatz, Tokens zu kaufen statt bessere Werkzeuge zu bauen und
SKILL.mdanzuhängen statt Technik zu erlernen - Statt die Psychologie von Software-Teams zu verstehen, werden parallele Agent-Sessions als Team bezeichnet, was menschliche Organisationen mit automatisierten Ausführungssitzungen verwechselt
Die Einführung von Coding-Agenten und die Abschaffung von Engineering sind nicht dasselbe
- Anthropics Kampagne vom Ende des Software Engineerings kann sowohl für die Hersteller von AI-Tools als auch für deren Nutzer kontraproduktiv sein
- Auch wenn Coding-Agenten eingeführt werden, muss man nicht die Dark Software Factory als Idealmodell betrachten, in der Menschen den Code nicht verstehen
- Das Ziel ist, Dinge zu bauen, die Menschen wollen und die zuverlässig funktionieren; die AI-Blase kann dagegen dazu drängen, Unerwünschtes in niedriger Qualität zu produzieren
- Erforderlich ist ein Weg, AI zu nutzen, ohne Urteilsvermögen, Lernen, Kommunikation, Lesbarkeit und Wartbarkeit aufzugeben
1 Kommentare
Meinungen auf Hacker News
In diesem Beitrag steckt viel Gutes, aber er erinnert mich an KI-generierte Projekte, die nach ein paar Monaten aufgegeben werden. Der Wert eines Projekts liegt weniger in der Menge des generierten Codes als darin, wie stark es in der Praxis erprobt wurde, und reifer bestehender Code ist besser als eine neue Neufassung
Die bestehende Zig-Codebasis ist bereits erprobt, während die Rust-Neufassung außer bestandenen Tests nahezu keine Validierung hat. Wenn sie Datei für Datei als direkte Übersetzung in
unsafe Rustumgesetzt wurde, ist zudem unklar, was daran besser sein soll als Zig als Ausgangspunkt. Erst wenn sie später in sicheres Rust überführt und durch Produktionsumgebungen sowie viele Nutzer validiert wird, gewinnt das an BedeutungIm Grunde ist Bun damit geforkt worden; ob die Zig- oder die Rust-Version überlebt, ist egal, und es gibt keinen Grund, das als Problem der Eignung von Zig zu verstehen
Selbst ich als durchschnittlicher Programmierer habe jeden Tag Dutzende toller Ideen, aber nur extrem wenige halten einer Prüfung stand, und ein paar Tage später erscheinen selbst diese nicht mehr der Mühe wert. Ideen waren schon immer billig, und jetzt sind sogar Proofs of Concept billig geworden; ein Show HN, in das nicht einmal ein Monat investiert wurde, interessiert mich daher nicht
Das Zig-Lager scheint zu befürchten, dass Zig vielleicht von Anfang an eine chancenlose Sprache ist, weil sie gegenüber C nicht genügend Vorteile bietet, um ernsthaft eingesetzt zu werden, und sogar ihr Vorzeigeprojekt sie verlassen hat. Wer im Zig-Issue-Tracker nach
segfaultsucht, versteht, warum man angesichts von Alternativen wie Rust an ihrem künftigen Nutzen zweifeln kannunsafe-Grenzen, die man eine nach der anderen beheben kann; das ist besserSie steuern ihre Botschaft nicht, um das Anti-KI-Lager zu belehren
Größer als die Tatsache, dass Andrew sich unverblümt geäußert hat, ist das Problem der Doppelmoral des Textes: Er ist offensichtlich ein persönlicher Angriff und behauptet zugleich, keiner zu sein
Nachdem ich diesen Text gelesen habe, habe ich keine Lust mehr, etwas mit Zig zu bauen. Egal welche technische Entscheidung man trifft: Der auf Lebenszeit wohlwollende Diktator (BDFL) von Zig kann solche Texte schreiben; es ist schwer vorstellbar, dass sich die Führung anderer Communities wie Python oder Rust so verhält
Manche sehen Andrews Text als Angriff auf Bun, und ich könnte die Reaktionen auf Andrew als persönliche Angriffe sehen. Wenn man die Vorurteile beiseitelässt, muss man entweder sagen, dass beide Seiten falsch lagen oder dass keine Seite falsch lag; man sollte sich bewusst sein, dass persönliche Vorannahmen einen viel zu großen Einfluss haben, wenn man eine Situation aus der Ferne beurteilt
Ich möchte auf Andrews Seite stehen. Nachdem ich Sumners Arbeit über Jahre verfolgt habe, ist Kelleys Kritik zwar unfreundlich, aber zu einem großen Teil zutreffend, und selbst wenn das Ergebnis nützlich und beeindruckend ist, wirkte es von Anfang bis Ende eher wie Einflussnahme zur Selbstvermarktung
Auch ich betreibe täglich acht Stunden agentenbasierte Entwicklung und habe meinem Team empfohlen, Rust und Deno statt Node zu verwenden, aber diese Neufassung war schlecht begründet und wirkt wie die Fortsetzung einer langen PR-Kampagne, die Dario und seine Leute erfolgreich durchgezogen haben. Wäre die Formulierung höflicher gewesen, wäre sie gut aufgenommen worden; trotzdem schätze ich, dass er statt eines vom PR-Team ghostgeschriebenen Textes seine ehrlichen Gedanken vorgelegt hat
Die Erklärung, dass die Interaktion mit dem JavaScript-Garbage-Collector Bun vor besondere, eigene Schwierigkeiten stellt, war hilfreich, aber Andrew ging überhaupt nicht darauf ein. Auch die Erklärung, dass der neue Code mit der bestehenden Testsuite validiert wurde, räumte das Missverständnis aus, die Tests seien ebenfalls per Vibe Coding übersetzt worden und daher nicht vertrauenswürdig. Dass Tests nicht alle Bugs finden, gilt für jede Software, Zig eingeschlossen
Letztlich prallten hier die Sichtweise, dass speicherunsichere Sprachen enorme Fehlerkosten verursachen, und die Reaktion „werde besser und schreibe keine Bugs“ aufeinander; hinzu kamen die KI-Debatte, Anthropics Beteiligung und Andrews Linus-artige Ausdrucksweise, wodurch es sich ausweitete
Ich frage mich, ob Anthropic und Andrew Kelleys Text hier auf dieselbe Weise gelesen wurden. Anthropic ist kein Unternehmen, das Programmiersprachen verkauft, und Buns Beitrag zur Neuschreibung in Rust enthielt viele technische Details dazu, wie sich das Produkt für Endnutzer verbessert hat.
Die Reaktion aus dem Zig-Umfeld wirkt dagegen eher wie eine bissige Kolumne voller persönlicher Angriffe. Ich nutze Codex, habe weder an Zig noch an Rust ein Interesse und beobachte das Ganze von außen.
Außerdem werden bei der Vermarktung erfolgreicher Rewrites oft Aspekte ausgeblendet, die der Erzählung schaden würden, etwa wie schlecht der bestehende Code war; auch diesmal fehlen wichtige Punkte.
Andrew Kelleys Text (https://andrewkelley.me/post/my-thoughts-bun-rust-rewrite.ht...) behandelt Jarreds niedrige Engineering-Standards, schwache Außenbeziehungen wie das Nichterscheinen zu Meetings mit der Zig Foundation ohne vorherige Absage, den Schaden, der dadurch entstand, dass Zig im Zuge des Wechsels zu Rust als schlechte Wahl dargestellt wurde, sowie die daraus folgende Verärgerung der ZSF.
Oberflächlich betrachtet kann man die Sorge haben, dass der Schöpfer einer Sprache einen ehemaligen Nutzer angreift; aber Kelley hat erklärt, warum dieser Eindruck, den auch ich nach der Lektüre von Buns Beitrag hatte, unfair ist. Einige persönliche Angriffe sind allerdings eindeutig, und der später hinzugefügte letzte Abschnitt geht ebenfalls darauf ein.
Java, JavaScript, Python und C# haben die von C++ dominierte Industrie erobert, weil sie Sicherheitsgeländer bieten, mit denen auch nicht perfektionistische Entwickler arbeiten können, ohne große Unfälle zu verursachen. Die Performance-Vorteile von C und C++ waren groß, verlangten aber in einer zunehmend feindlichen Umgebung erhebliche Erfahrung.
Rust und Swift boten eine besser vorhersagbare Performance als Garbage-Collection-Sprachen und zugleich eine ähnliche oder stärkere Sicherheit; Rusts Ideen haben in diesem Bereich eine Explosion neuer Sprachen ausgelöst. Viele davon sind allerdings näher am Handwerkertum als Rust, das stärker aus industriellen Anforderungen heraus entstand.
Als Auto-Analogie: Java, JavaScript usw. sind normale sichere Fahrzeuge, C/C++ sind Zweirad-Motorräder, Rust ist ein schnelles Rallyeauto, das seine Insassen schützt, und Zig ist eher ein Quad oder ein Open-Wheel-Kart. Es rutscht vielleicht nicht leicht weg, aber wenn es sich überschlägt, ist es sehr gefährlich.
Handwerker, die Zeit- und Kostengrenzen ignorieren, glauben, man brauche nur vorsichtige Entwickler. In der Industrie kann man zwar guten Code schreiben, aber 90 % der Arbeit findet unter Einschränkungen statt, sodass man weder eigenem noch fremdem Code leicht vertrauen kann. Zig hat viele Vorzüge, war aber von Anfang an eine Sprache für Menschen, die Hacker-Freiheit der Sicherheit vorziehen.
Auch Memory Safety hätte man ähnlich erreichen können, wenn das Zig-Team den integrierten Fuzzer, den es angekündigt hatte, genutzt hätte, statt KI, Tests und höherstufiges Fuzzing. Trotzdem kann das reifere Rust für ein Projekt wie Bun die bessere Wahl sein.
Andrews Perspektive war unverzichtbar, um zu verstehen, was passiert ist. Manche Formulierungen hätten milder sein können, aber wenn schlechtes Management die direkte Ursache für beschädigte Beziehungen und mangelhafte Engineering-Ergebnisse ist, dann ist das offenzulegen kein persönlicher Angriff, sondern notwendiger Kontext.
Insbesondere lehnt die Zig-Führung Vibe Coding öffentlich ab und kritisiert die Branche; das Projekt weist Contribution Requests zurück, die mit solchen Produkten erstellt wurden.
In dieser Debatte fehlt es eigentlich an technischer Substanz. Buns Rust-Portierung, Andrews aggressiver Beitrag oder Anthropic als Schaufelverkäufer im Goldrausch interessieren mich nicht; ich möchte konkrete technische Inhalte sehen.
Jarreds Gründe für den Wechsel zu Rust wirken trotz etwas dünner Begründung plausibel, aber Andrew hat nicht widerlegt, warum das keine echten Probleme seien oder wie man sie in Zig idiomatisch lösen würde. Besonders wünschenswert wäre eine Analyse der Punkte anhand des tatsächlichen Zig-Codes von Bun.
Bun wurde trotz enormem Umfang und hoher Komplexität von jemandem begonnen, der wenig Zig-Erfahrung hatte, und war von Anfang an ein Projekt, das Code aus anderen Sprachen neu schrieb. Wenn man den JavaScript-/TypeScript-Transpiler von esbuild zeilenweise von Go nach Zig überträgt und dann nach ein paar Jahren die gesamte Codebasis verwirft, um sie erneut in einer anderen Sprache zu schreiben, fragt man sich, was es da noch zu diskutieren gibt.
Bun will Features wie eine Shell-Sprache oder SQLite-/PostgreSQL-Clients so schnell wie möglich ausliefern und möchte sich daher nicht selbst um Speicherverwaltung kümmern. Zig zwingt einen, Speicherverwaltung und Lebensdauern direkt zu behandeln, und fügt bewusst keine Features wie
Drophinzu; Rust passt dankDropbesser.So wie man keine SQL-Datenbank in Python schreibt, ist Zig nicht das passende Werkzeug für Bun; das ist weniger eine Frage einer idiomatischen Lösung in Zig als ein Unterschied in Jarreds Art, das Projekt schnell voranzutreiben.
Einigen von Kelleys Ansichten stimme ich zu, aber das Problem ist der Ton.
Wenn Bun von Rust nach Zig umgeschrieben worden wäre, hätte wahrscheinlich kein Mitglied des Rust-Core-Teams einen Beitrag mit persönlichen Angriffen auf Sumner geschrieben und zugleich behauptet, es sei kein Angriff. So wie Kelley die Freiheit hat, den Beitrag zu schreiben, den er schreiben möchte, haben andere die Freiheit, auf das öffentliche Bild von Zig zu reagieren, das der BDFL einer wachsenden Sprache geprägt hat.
Der Beitrag über Buns Wechsel zu Rust ließ konkrete Vergleiche der Optionen und Zahlen zu den Auswirkungen vermissen und stellte das Ergebnis voreingenommen dar; er fühlte sich nicht wie ein Engineering-Blogpost an.
Die Leute schienen sich eher für den Einsatz von Agenten als für die technischen Gründe der Portierung zu interessieren, und technisch war das sehr enttäuschend.
Man sollte nicht unterschätzen, wie groß der Einfluss von Marketing auf Führungskräfte und Executives ist, und insbesondere, wie sehr Menschen in Positionen wie der eines CEO von kleinlichen Emotionen getrieben sein können.
Allein die Gelegenheit, das neue Fable-Modell zu bewerben, und die Tatsache, dass Zig sich öffentlich gegen die Nutzung von Anthropic-Produkten stellt, könnten praktisch schon ausgereicht haben, um Buns Rust-Rewrite zu besiegeln.
Ich verstehe nicht, warum in einer Debatte über den Sprachwechsel sogar Erwartungen an Arbeitszeiten behandelt werden. Selbst wenn er ein schlechter Manager wäre, wirkt es so, als würde man krampfhaft nach negativem Material suchen.
Bezeichnend ist auch, dass die Zig-Seite sich kaum auf die technischen Vorteile des Rewrites selbst konzentriert. Anthropic hat mehrere Verbesserungen angeführt, aber es ist schwer, auch nur einen Versuch zu finden, diese zu widerlegen.
Wenn mein Projekt mit einem großen Sprachmodell neu geschrieben würde und dabei Verbesserungen ohne Nachteile herauskämen, würde ich sehr besorgt reagieren und darauf eingehen; hier diskutiert man stattdessen abwegig über Arbeitszeiten.
Zwischen einem Projekt im Besitz von Anthropic und der Führung einer Sprach-Community, die KI-generiertem Code öffentlich feindlich gegenübersteht, besteht ein offensichtlicher Interessenkonflikt.
Andrew Kelley hätte es besser dabei belassen sollen, genau das zu sagen; seine Einschätzungen zur Energie und Motivation des Bun-Gründers tragen kaum etwas Wertvolles bei.
Kelley wusste das wohl auch, konnte aber der Versuchung offenbar nicht widerstehen, den Kernpunkt zu verwässern. Der scharfe Beitrag ([0]: https://andrewkelley.me/post/my-thoughts-bun-rust-rewrite.ht...) ging zu weit, aber der Anhang, der zum Weitermachen aufruft, ist vernünftig. Ich denke, ein BDFL sollte lieber etwas würziger sein als allzu fade.