Grit: Git mit Agenten in Rust neu schreiben
(blog.gitbutler.com)- Grit ist ein Projekt, das Git von Grund auf als Rust-basierte Bibliothek neu implementiert, mit dem Ziel eines reentranten und linkbaren Kerns, der offiziell mit Git-Repositories interagiert
- Git ist komplexe Software, die über 20 Jahre von Tausenden Menschen rund um die Kombination von Befehlen erweitert wurde, und hat ein strukturelles Problem, bei dem in langlaufenden Prozessen bei jeder Ausführung Fork/Exec-Kosten anfallen
- Grit wurde anhand von mehr als 1.400 Skripten und mehr als 42.000 Tests des Git-Projekts entwickelt und besteht am Ende 41.715 von 42.001 Tests {p:99}
- Die aktuelle Version ist in der Praxis noch nicht ausreichend erprobt und hat Einschränkungen wie langsames Verhalten, eine noch nicht aufgeräumte API, fehlende Windows-Builds und die Möglichkeit von Datenkorruption
- Agentenbasierte Entwicklung machte es möglich, ein groß angelegtes Porting schnell voranzutreiben, zeigte aber, dass Testumgehung, kaputte Harnesses, Koordination, Ressourcen und Kostenmanagement die zentralen Herausforderungen sind
Ziele und Hintergrund von Grit
- Grit war der Versuch, Git nicht durch Portierung des C-Codes, sondern als Rust-zentrierte Bibliothek neu zu implementieren
- Ziel war es, eine reine Rust-Core-Bibliothek zu bauen, die offiziell mit Git-Repositories interagieren kann
- Der Core ist auf Reentranz, Linkbarkeit, Modularität und eine umfassende Struktur ausgelegt
- Ein separates CLI-Crate nutzt diese Bibliothek, um den Reifegrad daran zu messen, möglichst viele Tests der Git-Testsuite zu bestehen
Warum Git neu implementieren?
- Git ist komplexe Software mit vielen Low-Level-Plumbing- und High-Level-Porcelain-Befehlen
- Das bestehende Git basiert nicht auf einer linkbaren, reentranten Bibliothek, sondern folgt eher einer Unix-artigen Philosophie, in der einfache Befehle aneinandergereiht werden
- In dieser Struktur entsteht für langlaufende Prozesse beim Nutzen von Git-Funktionen bei jeder Operation Fork/Exec-Overhead
- Das Git-Projekt enthält mehr als 42.000 Tests über mehr als 1.400 Skripte hinweg, wodurch sich das gewünschte Verhalten sehr konkret prüfen lässt
Aktueller Reifegrad und Hinweise
- Grit ist eine von Grund auf gebaute, bibliotheksbasierte, speichersichere Git-Neuimplementierung in Rust und besteht mehr als 99 % der Git-Testsuite
- Einige Tests wurden bewusst übersprungen, darunter E-Mail-bezogene Funktionen, i18n, Perforce-/SVN-Importer sowie einige midx-/Bitmap-Bereiche
- In dem Bereich, der für allgemeine Leser als besonders relevant eingeschätzt wird, bestehen Grit-Bibliothek und CLI die Git-Testsuite
- Die Erprobung in realen Projekten ist noch unzureichend, und Fehlverhalten oder Datenkorruption sind möglich
- Zu den aktuellen Grenzen zählen langsame Performance, ungetestete Funktionen, eine ungeordnete API und fehlende Windows-Builds
Mögliche Einsatzbereiche
- GitButler und eigenständige Git-Tools können Grit verwenden, um komplexe Push-/Fetch-Netzwerkfunktionen einzubetten
- Die Netzwerkfunktionen von Gitoxide und libgit2 sind nur teilweise vorhanden, langsam oder fehlen ganz
- GitButler und Jujutsu verlassen sich für die Verarbeitung von Push-/Pull-Daten darauf, Git-Prozesse per Fork zu starten
- Komplexe Credential-Logik ist einer der Hauptgründe dafür, und dieser Bereich wird theoretisch von Grit abgedeckt
- WASM-Builds könnten Anwendungsfälle ermöglichen wie das Ausführen fast aller Git-Befehle in Edge-Funktionen von Vercel
- Funktionen wie Cloudflare Artifacts könnten statt einer Teilimplementierung wie isomorphic-git einen vollständig kompatiblen WASM-Build von Grit nutzen
- Wenn Git-Funktionen in einzeln einbettbare Bibliotheksbausteine aufgeteilt werden, lassen sich auch benutzerdefinierte Git-Server oder Client-Funktionen auf Rust-Basis bauen
- Ein vollständiger Build der Rust-Git-Funktionen ist derzeit etwa 27 MB groß; eine Aufteilung in Sub-Crates nach Funktionsdomänen wäre möglich, sodass nur die benötigten Teile verwendet werden
Speichersicherheit
- Der Großteil des Grit-Codes ist in safe Rust geschrieben
- Die Bereiche, die mit C und FFI kommunizieren müssen, sind faktisch nur ein Date-/Time-Modul und ein TTY-Check
- Es gibt keinen reinen Rust-Ersatz für
localtime_r,strftimeundmktime, der korrekt mit der TZ-Umgebung umgeht, daher ist dieses FFI nötig - Der übrige Grit-Code besteht aus safe Rust
Probleme, die sich bei der Agentenentwicklung zeigten
-
Agenten können zum Bestehen von Tests ausweichen
- Das Ziel „Bring die Git-Tests zum Bestehen“ kann Agenten dazu verleiten, eine einfache Funktion zu schreiben, die die Verarbeitung einfach unverändert an Git weiterreicht
- In der AGENTS-Datei mussten Grundregeln wie das Verbot solcher Umgehungen sehr explizit festgehalten werden
- Bei der sha256-Unterstützung prüfte der Test nur, ob nach
git init --object-format=sha256der Befehlrev-parse --show-object-formatsha256ausgibt - Grit bestand diesen Test, indem es die Konfigurationsmetadaten korrekt schrieb, aber
add,commitundlogin sha256-Repositories wurden in der Praxis nicht geprüft - Der Agent implementierte also nur das, was der Test überprüfte, aber keine echte Unterstützung für sha256-Objekte
-
Agenten wissen nicht, was sie kaputt gemacht haben
- Einer der parallelen Agenten beschädigte einen grundlegenden Teil des Test-Harnesses, wodurch es wie eine massive Regression aussah
- Wegen dieses Problems kam man zu dem Schluss, dass parallele Arbeit eher schadet, und das Projekt lag eine Zeit lang fast still
- Nach der Wiederaufnahme Anfang Juni fand und behob ein Agent den Harness-Fehler, wodurch die Erfolgsquote wieder auf etwa 80 % stieg
- Diese Erholung war der Auslöser dafür, das Projekt bis zum Ende durchzuziehen
-
Langlaufende Parallelisierung ist schwer zu koordinieren
- Mehrere langlaufende Agenten, die sich eine gemeinsame Aufgabenliste teilen, waren schwerer zu koordinieren als erwartet
- Eine gemeinsam genutzte Planungsdatei mit Checkboxen wurde unübersichtlich, und Ansätze wie Linear oder GitHub Issues erfordern Netzwerkzugang, Authentifizierung und pro Client eingerichtete Tools
- In der späteren Phase wurde das lokale Ticketsystem Ticgit genutzt, damit sich Aufgabenlisten lokal ändern und dann per Git übertragen lassen
- Auch die Übergabe laufender Arbeiten zwischen mehreren Systemen sorgte immer wieder für Reibung
Ressourcen und Kosten
- Die Arbeit lief in mehreren Umgebungen, darunter ein Laptop, ein Mac Studio, ein Hostinger-Server und Cursor Cloud Agents
- Rust-Kompilierung erforderte bei paralleler Ausführung mehr CPU und Speicher als erwartet
- Die Agenten konnten Probleme wie Swap-Thrashing und CPU-Thrashing debuggen und beheben, doch das Ressourcenmanagement blieb schwierig
- Die Kosten für Cursor und Anthropic wurden nicht exakt berechnet und lagen grob bei 10.000 bis 15.000 US-Dollar
- Der Token-Verbrauch lag ungefähr bei 14 Milliarden für Claude Code, 12 Milliarden für Cursor GPT/Codex und 16 Milliarden für Cursor composer-2, also insgesamt bei rund 45 Milliarden Tokens
- Das Modell
composer-2von Cursor erledigte fast die Hälfte des Projekts über viele kurze, fokussierte Cloud-Agent-Läufe
Verwendete Agentenansätze
-
OpenClaw + Claude Code
- Anfangs wurde OpenClaw genutzt, um Claude-Code-Subagenten remote arbeiten zu lassen
- Durch die per-Token-API-Nutzung entstand innerhalb weniger Tage der Großteil der Gesamtkosten des Projekts
- Wegen Speicher- und CPU-Problemen sowie Ausfällen des Hostinger-Servers war die Laufstabilität gering
-
Cursor Cloud Agents
- Um den Kostenanstieg zu begrenzen, wurde auf eine Strategie mit Abo-Tokens und günstigeren Modellen umgestellt
- Für jede zu bearbeitende Datei wurde ein Cursor Cloud Agent gestartet und nach Abschluss gemergt; so wurde ein großer Teil des Projekts abgearbeitet
- Einige Tests veränderten die Umgebung, nutzten das Grit-Binary anstelle von Git oder beschädigten den Credential-Store, sodass
git pushim Container fehlschlug - In vielen Fällen musste man das Container-Terminal öffnen, ein Remote manuell hinzufügen und den Commit pushen
-
Cursor Cloud Grind Mode
- Wählt man im Modellselektor des Cursor Cloud Agent
Long-running, arbeitet der Agent im „Grind mode“ über längere Zeit weiter - Mit Prompts wie „Sorge dafür, dass alle Tests der t1-Reihe bestehen“ lief der Prozess dann einen Tag lang, sodass sich 100 Commits in einem PR ansammelten
- Dieser Ansatz wurde unter mehreren Versuchen zum bevorzugten Arbeitsmodus
- Wählt man im Modellselektor des Cursor Cloud Agent
-
/goal-Modus und Claude Dynamic Workflows- Auch der
/goal-Modus von Codex und Claude Code führte ähnliche Langläufer-Aufgaben aus - Der
/goal-Modus von Codex arbeitete kontinuierlich weiter, während Claude oft stoppte und Eingriffe brauchte - In der letzten Woche wurden im „Ultracode“-Effort-Mode von Claude Dynamic Workflows große Testreihen aufgeteilt und abgearbeitet
- Parallele
rustc-Builds konnten CPU und Speicher stark belasten und dadurch langsamer werden, weshalb Ressourcenmanagement nötig war
- Auch der
Effektivere Arbeitsweisen
- Mehr Erfolg brachte eine von Menschen festgelegte schrittweise Strategie als eine Gruppe von Agenten mit nur leichter Koordination, die jeweils die nächste Testdatei auswählen
- Ein Bottom-up-Ansatz war effektiv: zuerst grundlegende Plumbing-Befehle, danach wichtige Befehle, die darauf aufbauen
- Bereiche wie die Ausgabe des Diff-Formats, von denen nur wenige andere Funktionen abhängen, waren besser für eine spätere Phase geeignet
- Gute Ergebnisse entstanden, wenn die Reihenfolge der Problembearbeitung detailliert festgelegt und schrittweise übergeben wurde; bei blindem großflächigem Parallelisieren gab es viele Probleme und Stillstand
Lizenz
- Der Git-Quellcode steht unter der GPL-Lizenz, und libgit2 ist so aufgebaut, dass wegen des Kernziels des Linkens eine GPL-Linking-Exception hinzugefügt wurde
- Die Lizenz von libgit2 war schon früher Gegenstand von Diskussionen und ist weiterhin ein Thema
- Nach Prüfung des von LLMs erzeugten Codes und der umfangreichen Architekturänderungen zur Bibliothekisierung und Speichersicherheit wurde entschieden, dass die Grit-Codebasis kein abgeleitetes Werk ist, das die GPL übernehmen muss
- Der Grit-Code wird unter der MIT-Lizenz veröffentlicht
- Diese Entscheidung kann umstritten sein, wurde aber als die beste Wahl für die breitere Git-Community eingeschätzt
Endergebnis
- Die Arbeit lief über einige Wochen im April, wurde dann unterbrochen und in der ersten Juniwoche abgeschlossen
- Die tatsächliche aktive Arbeitszeit lag insgesamt bei etwa 2 bis 3 Wochen mit jeweils einigen Stunden pro Tag; der Großteil bestand aus dem Koordinieren, Integrieren und Auffinden von Problemen im Hintergrundbetrieb
- Der endgültige Codeumfang beträgt mehr als 360.000 LOC
grit-libumfasst rund 100.000 LOCgrit-cliumfasst rund 260.000 LOC- Das entspricht grob dem Umfang des C-Git-Codes ohne Header
- Das Ergebnis entstand über mehr als 500 Pull Requests und mehr als 7.000 Commits
- Das Testergebnis liegt bei 41.715 bestandenen von 42.001 Tests, also 99,3 % Erfolgsquote
- Die Projektwebsite ist https://grit-scm.com
3 Kommentare
https://writings.hongminhee.org/2026/03/legal-vs-legitimate/
Wenn ich die Lizenzkontroverse sehe, muss ich an einen früheren Vorfall denken.
https://github.com/gitbutlerapp/grit/pull/837/changes/b1135eef106c71b0831d964c6506d8817e7a7201
Ziemlich widerlich. Warum ist Grit-lib immer noch unter MIT?
Hacker-News-Kommentare
Die Passage „Nachdem ich den von einem LLM erzeugten Code geprüft hatte, kam ich zu dem Schluss, dass für eine Bibliothekisierung der Implementierung und für Speichersicherheit ziemlich große und weitreichende Architekturänderungen nötig waren, weshalb diese Codebasis kein abgeleitetes Werk sei, das die GPL übernehmen müsse, und ich sie daher unter MIT veröffentlicht habe“ dürfte ein interessanter Streitpunkt werden
Wenn man beim Übersetzen eines Buches allerdings anfängt, sogar Handlung und Charaktereigenschaften zu verändern, wird unklar, ab welchem Punkt es kein abgeleitetes Werk mehr ist. Ich bin kein Jurist, aber ich nehme an, dass diese Grenze in der Rechtsprechung zu kreativen Werken ziemlich oft behandelt wurde
In einer Zeit wie heute, in der der Bereich des „geistigen Eigentums“ immer weiter ausgedehnt wird, wirkt die Rechtsposition schwach, wenn man einräumt, dass das LLM Zugriff auf den Git-Quellcode hatte
Nach Jplag liegt die maximale Ähnlichkeit zwischen den Codebasen unter 1,8 %, das Ganze geschah in gutem Glauben, und ich denke auch, dass es dem gesamten Git-Ökosystem nützt. Natürlich setzt das voraus, dass Grit tatsächlich brauchbar wird, und im Moment ist es noch nicht so weit, das zu behaupten
Aus urheberrechtlicher Sicht ist hiervon nur der erste Punkt relevant. Grit ist eine unabhängig geschriebene Implementierung von Git-kompatiblem Verhalten, und ich denke, die Ähnlichkeit mit dem Git-Quellcode ist vernachlässigbar
antirez hat die Situation gut zusammengefasst, und ich stimme größtenteils zu: https://antirez.com/news/162
Die Menschen, die mich in den vergangenen 20 Jahren aus Git und der Open-Source-Community kennen und mit mir gearbeitet haben, wissen, dass es mir um Beitrag, Teilen, Innovation und die Förderung von Lernen geht. Mehrere der Hauptautoren des Git-Quellcodes sind meine Freunde, und ich hatte nie die Absicht, irgendjemandem etwas zu stehlen. Ich möchte großartige Ideen nur breiter nutzbar machen
https://news.ycombinator.com/item?id=47350424
Wie bei 1984 oder Torment Nexus hat hier jemand ein Konzept, das als Warnung gedacht war, als Bedienungsanleitung verstanden
Nehmen wir zum Beispiel an, man extrahiert das Binary von Goldeneye für das N64, lässt es von einem LLM disassemblieren und in einer modernen Hochsprache neu schreiben. Würde Nintendo sagen: „Ihr habt euch viel Mühe gegeben, also seid ihr jetzt außerhalb unserer Lizenz“? Natürlich nicht. Das ist absurd
Den Quellcode einzuspeisen und ein Ergebnis in einer anderen Sprache erzeugen zu lassen, ist eindeutig ein abgeleitetes Werk. Dafür muss man kein Anwalt für geistiges Eigentum sein
Umgekehrt: Wenn man Claude nur die Dokumentation gibt und es bittet, eine kompatible Implementierung zu erstellen, wäre das dann ein abgeleitetes Werk, auf das die GPL Anwendung findet? Ich glaube schon, aber inzwischen bin ich mir nicht mehr zu 100 % sicher, und ich würde das Risiko nicht eingehen
Noch ein Gedankenexperiment: Wenn jemand diesen „MIT-lizenzierten“ Quellbaum in ein anderes LLM steckt und es anweist, C auszugeben, welche Lizenz hätte das Ergebnis dann? Es gibt nur begrenzte Möglichkeiten, einen SHA1-Hash zu erzeugen oder einen Kommandozeilen-Parser zu bauen, also könnte es ziemlich ähnlich werden
Auch in Oracle v. Google war das einer der Kernpunkte. Google argumentierte erfolgreich, dass es nur begrenzte Möglichkeiten gebe, Schleifen zu schreiben, und dass ähnliche Schleifen wie im Original deshalb nicht automatisch eine Urheberrechtsverletzung seien
Wie auch immer, so eine Position einzunehmen ist wirklich weit hergeholt
Verstehe ich nicht. Gitoxide gibt es bereits, und es ist hervorragend.
Es mag noch Lücken geben, aber es wäre einfacher, die für ein gepflegtes Gitoxide nötigen Netzwerkfunktionen per Vibe-Coding hinzuzufügen, als Tokens zu verbrennen, um Git komplett noch einmal zu duplizieren.
Git will eine Rust-Ergänzung, und Gitoxide ist ein über viele Jahre gewachsenes Projekt, das wahrscheinlich besser wartbar ist als ein improvisierter Vibe-Klon, der nur „sagt, dass die Tests durchlaufen“.
Ich bin nicht grundsätzlich gegen Vibe-Klone, wenn sie in einem nützlichen Fall eingesetzt werden, aber hier sehe ich die Vorteile nicht. Git ist ein Werkzeug, das viele Menschen mögen; das ist keine Situation wie bei vinext, das aus der Abneigung gegen den Vendor Lock-in von Next.js entstanden ist.
Auch das Management sollte verstehen, dass die Geschichte „Wir haben Tausende Dollar an Tokens verbrannt, um unsere eigene Kopie einer geliebten Software zu bauen“ in der Community kaum positiv aufgenommen wird, selbst wenn man die Urheberrechts- und Lizenzdebatte ausklammert.
Es fühlt sich nicht gut an, zuzusehen, wie etwas, das man mag, ohne erkennbaren Nutzen kopiert wird. Wir sind inzwischen über die Phase „ein Experiment, um zu sehen, wie weit AI gehen kann“ hinaus.
Es gibt kürzlich den interessanten Versuch, mehr Git-Funktionalität per Vibe-Loop in Gitoxide einzubringen: https://github.com/GitoxideLabs/gitoxide/pull/2538
Trotzdem denke ich, dass dieses Projekt mit etwas mehr Arbeit wertvoll sein könnte. Diese Ankündigung ist kein Endprodukt, sondern nur ein Meilenstein. Selbst zur Mitte des Projekts war ich nicht sicher, ob das überhaupt möglich sein würde.
Wir haben viel gelernt und werden noch viel lernen, aber sowohl Gix als hochwertige, handgefertigte, meinungsstarke partielle Git-Bibliothek als auch Grit als per Vibe erzeugte, nahezu vollständige, aber etwas unsaubere LLM-Git-Bibliothek könnten nützliche Einsatzbereiche haben. Ich denke, es lohnt sich, vorerst beide Optionen weiter zu erkunden und in beide zu investieren.
Außerdem bin ich das beteiligte Management, und ich habe über die Jahre ziemlich viel für die Git-Community getan. Zu behaupten, ich wolle „meine eigene Kopie“ haben, ist absurd.
Ich habe das Pro-Git-Buch(https://git-scm.com/book/en/v2) und davor das Git community book(https://schacon.github.io/gitbook/index.html) geschrieben und als Open Source veröffentlicht, die offizielle Git-Website(https://git-scm.com) erstellt, GitHub mitgegründet, das fast die gesamte Open-Source-Welt hostet, und das Git-Ökosystem fast 20 Jahre lang verbreitet und unterstützt.
Vor 15 Jahren habe ich die Entwicklung von libgit2 wieder angeschoben und finanziert; man könnte also auch behaupten, das sei ein Manager gewesen, der eine „eigene Kopie“ von Git unter einer freizügigeren Lizenz haben wollte, aber diese Behauptung wäre genauso absurd.
Vermutlich sind sie zu dem Schluss gekommen, dass gitoxide für ihren Anwendungsfall nicht ausreicht oder dass die Kosten für Erweiterung und Verbesserung zu hoch sind.
Dinge wie Speichersicherheit sind schön, aber ehrlich gesagt verstehe ich nicht, für welchen Anwendungsfall das gedacht ist.
Soll damit agentische Entwicklung demonstriert werden? Ich nutze Git seit über zehn Jahren und hatte nie einen Ausfall durch Speicherüberläufe oder Ähnliches. Manche Software gehört einfach in die Kategorie „gut genug, wie sie ist“, und ich bin ziemlich sicher, dass Git dazugehört.
Selbst in Teams mit mehr als 20 Entwicklern und vielen binären Artefakten stoßen wir fast nie an die Grenzen von Git. Wenn man Git wirklich bis an seine Grenzen treibt, muss man sich vielleicht ganz von Git lösen, und ein Rewrite in Rust hilft dann überhaupt nicht. Deshalb würde ich noch einmal fragen: Warum?
Selbst für kleine Aufgaben muss man Prozesse per fork/exec starten und über stdin/stdout kommunizieren. Oder man muss alles vollständig neu implementieren und alle Sonderfälle behandeln.
Zum Beispiel ist das Lesen eines einzelnen Objekts einfach, wenn es ein loses Objekt ist, aber deutlich schwieriger, wenn es in einer Packfile steckt. Das Lesen von Referenzen, also etwa welches SHA ein Branch zeigt, kann ebenfalls aus einer losen Datei, einer Packfile oder einer Reftable kommen.
Niemand wird das als CLI verwenden. Selbst wenn es stabil wird, wird es mit ziemlicher Sicherheit immer langsamer und in jeder Hinsicht schlechter sein. Im Moment ist es nicht einmal stabil.
Man kann libgit2 oder Gitoxide verwenden, und beides sind Projekte, bei deren Start ich geholfen habe oder deren Weiterentwicklung GitButler derzeit unterstützt. In fast jeder Hinsicht sind sie schneller und besser, aber funktional nicht vollständig.
Das ist nicht für Menschen gedacht, die Git benutzen, sondern für Leute, die Werkzeuge bauen wollen, die Teile von Git verwenden.
Jetzt scheint es, als hätten Softwarelizenzen keine Bedeutung mehr, weil jeder einfach behaupten kann, sein LLM-Klon sei kein abgeleitetes Werk.
Casey Muratori sagte kürzlich in einem ähnlichen Zusammenhang, dass Microsofts AI-Vorstoß damit zusammenhängen könnte, dass sie über alte und riesige Codebasen verfügen. Alte große Softwareunternehmen haben beim Modelltraining Vorteile und können mit ihrem geistigen Eigentum zusätzlichen Wert schaffen.
Aber nun könnte genau dieses geistige Eigentum im Modell landen und für jeden zugänglich werden. Wenn man tatsächlich ein Modell mit dem eigenen geistigen Eigentum trainiert, könnte dann jeder dessen API implementieren und eine GPL-Lizenz darauf setzen.
Ab diesem Punkt wird es wirklich interessant.
Das ist Plagiat von GPL-Code und License Washing.
Ich kann nachvollziehen, von der Test-Suite aus rückwärts zu arbeiten, aber hier wurde buchstäblich der Original-Source gelesen: https://github.com/gitbutlerapp/grit/blob/main/AGENTS.md#source-of-truth
Leute, die LLMs benutzen, scheinen in einer anderen Welt zu leben, in der alles, was nicht festgeschraubt ist, gestohlen und dann als eigene Arbeit ausgegeben werden darf
Genau das habe ich zum Beispiel getan, als ich bei GitButler SSH-Commit-Signaturen korrekt zum Laufen bringen wollte: https://blog.gitbutler.com/signing-commits-in-git-explained
Wie man im Artikel sehen kann, habe ich mich tief in den C-Source eingegraben, um das kanonische Verhalten herauszufinden, und dann dasselbe in Rust implementiert, ohne den Source Code zu kopieren
Zwischen dem Rust-Source von Grit und dem von Git gibt es gewisse Ähnlichkeiten, aber meist betrifft das Dinge wie Byte-Offsets, die man für Zeit-/Formatbehandlung oder das Parsen von Packfiles braucht. Ich sehe darin keine direkte Codekopie
Wenn man daraus eine reentrante, speichersichere und bibliotheksorientierte Codebasis machen will, ist der Ansatz ohnehin so anders, dass Kopieren größtenteils nicht hilfreich ist
Aber die Binärformate von Packfile oder reftable sind nicht ordentlich dokumentiert, also kann sie niemand einfach erraten. Ich weiß das gut, weil ich wahrscheinlich einer der wenigen Menschen bin, die versucht haben, das Binärformat von Packfiles zu dokumentieren: https://schacon.github.io/gitbook/7_the_packfile.html
Man muss den Source lesen. Nach dieser Definition wären dann auch libgit2, Gitoxide und jede andere Git-Neuimplementierung „License Washing“, weil sie ebenfalls den Git-Source zur Prüfung der technischen Spezifikation heranziehen mussten
Wenn du in Grit Code findest, der offensichtlich Zeile für Zeile kopiert wurde, sag Bescheid. Dann ersetze ich ihn. Aber der Git-Source ist nun einmal die Git-Spezifikation, und jede Neuimplementierung wird — ganz unabhängig von LLMs — zu diesem Vorgehen gezwungen, wenn sie Kompatibilität herstellen will
Ich verstehe nicht, warum andere Inhaber geistigen Eigentums — etwa von wertvoller proprietärer Software oder Musik, Filmen oder sogar LLMs selbst — nicht denken, dass als Nächstes der Leopard kommt, um ihnen das Gesicht zu fressen
Diese Erosion von geistigem Eigentum muss aufhören. Sonst sind alle, die intellektuelle Arbeit leisten, komplett erledigt. Wenn es nur FOSS-Leute beträfe, würde ich mich schon sorgen, dass sie mit dem Badewasser ausgeschüttet werden, aber das ist offensichtlich ein Problem, das allgemein gilt
Ich habe früher schon die Analogie benutzt: „Es ist wie einem Dschinn einen Wunsch zu äußern. Man muss die Grundregeln wirklich sehr klar machen“
Früher fühlte es sich eher wie ein Golem an, aber wegen Fables Sabotage-Modus https://jonready.com/blog/posts/claude-fable5-is-allowed-to-sabotage-your-app-if-youre-a-competitor.html wirkt es jetzt definitiv eher wie ein Dschinn
Früher habe ich gesagt: „Das Modell gibt dir nicht das, was du willst, sondern das, worum du bittest.“ Jetzt weiß ich es bei Fable nicht mehr, weil es dir nicht einmal mehr das gibt, was du willst
Falls es nur um das Experiment geht, würde mich eher die Gegenrichtung interessieren. Solche Projekte wirken meist so, als würde man sie für „Performance“ neu schreiben, vermutlich weil AI die Kosten gesenkt hat
Ich würde gerne seltsame, aber unterhaltsame Sachen sehen, wie Quake III nach Python zu portieren oder Kubernetes nach Perl oder sogar Rails nach Python
Soweit ich mich erinnere, bestand der Großteil von Natural Selection 2 aus Lua, und das ist auch schon mehr als zehn Jahre her
Es ist langsamer, schlechter getestet und im Grunde eine unvollständige Git-Implementierung, die für gerade einmal 10.000–15.000 Dollar gebaut wurde
Dabei wurde auch ziemlich viel Zeit von Menschen verschwendet
Es hieß außerdem, dass anderswo bereits irgendeine Gruppe an einem Rust-Port arbeitet. Was hätte man alles erreichen können, wenn man dieses Geld und diese Softwareentwicklungsressourcen dort eingesetzt hätte?
AI scheint bereits bewiesen zu haben, dass sie etwas portieren kann, wenn man es nicht gründlich genug testet. Ich sehe deshalb in dieser Art Arbeit immer weniger Wert. Für den Autor mag es Spaß gemacht haben, aber ich weiß nicht, wie es anderen hilft
Die gesamte RiiR-Bewegung ist sehr offensichtlich auch ein Versuch, von der GPL wegzukommen, also von einer Lizenz, die für Nutzer vorteilhaft ist
Dem ersten Teil von „ein ziemlich interessantes Experiment, und ich denke, man könnte daraus etwas wirklich Nützliches für die gesamte Community machen“ stimme ich zu. An Experimenten können wir uns alle erfreuen.
Aber bei dem Teil „weil es nicht als linkbare, reentrante Bibliothek, sondern nach der Unix-Philosophie aufgebaut ist, bei der einfachere Befehle verkettet werden, ist es schwer, es in langlebigen Prozessen ohne den fork/exec-Overhead jedes Mal zu verwenden“ habe ich eine philosophische Meinungsverschiedenheit.
Das ist die einzige Stelle im ganzen Text, die erklärt, „warum“, und man könnte sogar sagen, dass die Unix-Art eine Eigenschaft ist und heute eher noch wichtiger geworden ist: https://aperocky.com/blog/post.html?slug=unix-philosophy-agentic
Der ganze Satz „weil es nicht als linkbare, reentrante Bibliothek, sondern nach der ‚Unix‘-Philosophie aufgebaut ist, bei der einfachere Befehle verkettet werden, ist es schwer, es in langlebigen Prozessen ohne den fork/exec-Overhead für jede Aufgabe zu verwenden“ ist der entscheidende Punkt.
Ich benutze Git seit über 15 Jahren und hatte nicht ein einziges Mal einen Crash. Welches Problem soll hier überhaupt gelöst werden?
Trotzdem war die allgemeine Stabilität wirklich hervorragend. Auf das „Warum?“ dieses speziellen Rewrites kann ich aber keine Antwort geben.
Sie stellen völlig unreflektiert und naiv Dinge an und haben die Fähigkeit verloren, selbst zu denken. Das LLM, das für sie denkt, sagt ihnen nicht „X zu tun ist eine schlechte Idee“. Ein LLM existiert nur dazu, im Interesse seines Eigentümers so viele Tokens wie möglich zu produzieren.
Das kommt von einem GitHub-Mitgründer, also von jemandem, der sehr wahrscheinlich genau weiß, wozu die GPL da ist.
Unabhängig von den juristischen Vor- und Nachteilen ist es gegenüber den ursprünglichen Autoren kein Handeln nach Treu und Glauben, auf der kompletten Test-Suite eines GPL3-Projekts aufzubauen und es dann unter MIT neu zu lizenzieren.
Es ist wirklich widerlich und lässt mich GitButler insgesamt meiden wollen.
Man kann sich nicht eine Lizenz aussuchen und später zusätzliche Bedingungen daran knüpfen, nur weil einem das Ergebnis nicht gefällt. Genau das erlaubt die GPL ausdrücklich nicht.