- Das neue Versionsverwaltungssystem jj ist ein in Rust geschriebenes Projekt, das die Grenzen von Git ausgleicht und sich schrittweise einführen lässt
- Der Autor bewertet jj auf Grundlage seiner früheren Erfahrung mit der Analyse des Wachstumspotenzials von Rust als ähnlich vielversprechend in Bezug auf Market Fit, spezialisiertes Team und Nutzerbasis
- jj ist mit Git-Repositories kompatibel und bietet zugleich einen einfacheren Workflow, was es besonders für Entwickler zugänglicher macht, die mit der internen Struktur von Git nicht vertraut sind
- Die tatsächliche Nutzung breitet sich bereits bei Google und Oxide aus, und es bildet sich eine leidenschaftliche Community mit einem engagierten Entwicklungsteam
- Der Autor schließt sich ERSC an, das eine auf jj basierende Kollaborationsplattform entwickelt, und plant, das Wachstum des jj-Ökosystems wie in den frühen Tagen von Rust selbst mit voranzutreiben
Warum ich mich für Rust entschieden habe
- Der Autor wurde an Weihnachten 2012 auf Hacker News durch die Meldung “Rust 0.5 released” auf die Sprache aufmerksam
- Damals war er Ruby-on-Rails-Entwickler, hatte aber schon seit dem Studium Interesse an Compilern und Systemprogrammierung
- Bei der Einschätzung der Erfolgsaussichten von Rust berücksichtigte er drei Faktoren: Market Fit, Entwicklungsteam und Nutzerbasis
- Es gab keine vertrauenswürdige Sprache, die C/C++ ersetzen konnte, und Rust präsentierte mit Speichersicherheit ohne Garbage Collection einen innovativen Ansatz
- Da Mozilla Rust unterstützte und plante, es in Firefox einzusetzen, hielt er die Chancen für hoch, dass eine echte praktische Nutzungsbasis entstehen würde
- Auch die freundliche und kooperative Atmosphäre der Rust-Community war ein wichtiger Reizfaktor
- Später schrieb der Autor das Tutorial „Rust for Rubyists“ und wurde Mitautor der offiziellen Dokumentation
Das Auftauchen von jj
- jj (Jujutsu) ist keine Programmiersprache, sondern ein neues Versionsverwaltungssystem (VCS), das in Rust implementiert ist
- Es ist mit Git kompatibel und kann schrittweise eingeführt werden, während bestehende Repositories unverändert weiterverwendet werden
- Der Autor begann, jj auf Empfehlung des Entwicklers Rain zu erkunden, dessen technischer Geschmack dem seinen ähnelt
- Rain kommt aus dem Source-Control-Team von Meta, weshalb ihre Empfehlung als vertrauenswürdiges Signal wahrgenommen wurde
- Am Wochenende experimentierte er selbst mit jj und begann ein Tutorial-Projekt zu schreiben
- Wie schon beim Lernen von Rust ordnete er seine Gedanken, indem er beim Schreiben die Konzepte ausarbeitete
- Das Tutorial erhielt in der Community letztlich eine positive Resonanz
Ausblick für jj
- Der Autor erkennt in jj ein Wachstumsmuster, das den frühen Jahren von Rust ähnelt
- Market Fit, Teamstärke und Potenzial für Nutzerverbreitung bewertet er allesamt positiv
- In Sachen Market Fit hat Git zwar eine absolute Vormachtstellung, doch jj kann Git-Repositories direkt verarbeiten und erlaubt dadurch eine teilweise Einführung
- Auch innerhalb von Oxide verbreitete sich die Nutzung ausgehend von Rain so weit, dass sogar ein eigener Kanal entstand
- Auch innerhalb von Google wird jj verwendet, was als ähnliches Signal gedeutet wird wie damals die Einführung von Rust bei Mozilla
- Selbst in Googles großem Monorepo (auf dem Piper-Backend basierend) nutzen einige Projekte jj, was als social proof wirkt
- Es gibt zwar eine Lernkurve, doch für Nutzer, die mit der internen Struktur von Git nicht vertraut sind, bietet jj eher eine intuitivere und einfachere Bedienung
- Je mehr jemand Git-Experte ist, desto stärker ist die Anpassung an neue Konzepte erforderlich; allgemeine Entwickler gewöhnen sich dagegen schnell daran
- Die jj-Community wächst in einer leidenschaftlichen und freundlichen Atmosphäre, die an die frühe Rust-Community erinnert
Das jj-Team und die Community
- Der Gründer Martin widmet sich seit langer Zeit der Entwicklung von jj und hat das Projekt kürzlich von einem privaten Konto in ein offizielles Organisationskonto überführt und die Governance geordnet
- Die Teammitglieder sind erfahrene Spezialisten für die Entwicklung von Source-Control-Werkzeugen und zeigen Stärken bei technischer Ausrichtung und Qualitätsmanagement
- Die Community wächst durch aktives Feedback und Zusammenarbeit schnell und reproduziert die positive Energie der frühen Rust-Community
Neue Herausforderung: Wechsel zu ERSC
- Der Autor hat entschieden, Oxide zu verlassen und sich dem Startup ERSC anzuschließen, das eine auf jj basierende Kollaborationsplattform entwickelt
- Oxide war ein großartiger Arbeitsplatz, doch der Wunsch, tiefer am jj-Ökosystem mitzuwirken, war der entscheidende Faktor
- ERSC plant, auf jj eine Plattform für Entwicklerkollaboration aufzubauen, und erklärt diese frühe Phase mit dem Hinweis darauf, dass GitHub einst unter dem Firmennamen Logical Awesome startete
- Der Autor will seine Arbeit bei Oxide abschließen, sich dann eine Pause gönnen und sich anschließend ganz auf Aktivitäten in der jj-Community und die Fertigstellung des Tutorials konzentrieren
- Er kündigt mehr Aktivität auf Discord, eine Blogserie und weitere Community-Beiträge an
- Er bewertet 2025 als neuen Wendepunkt und drückt seine Dankbarkeit aus, sich einem Projekt widmen zu können, für das er echte Leidenschaft empfindet
Fazit
- Der Autor ist überzeugt, dass jj das Potenzial hat, den Wachstumspfad von Rust nachzuzeichnen
- Die Kompatibilität mit Git, die schrittweise Einführung, ein engagiertes Team und eine aktive Community sind seine Begründung
- jj ist mehr als nur ein Werkzeug und zeigt das Potenzial, sich zu einer innovativen Plattform für die Art und Weise der Entwicklerkollaboration weiterzuentwickeln
- Die Reise des Autors, die mit Rust begann, setzt sich nun mit jj in einem neuen Kapitel fort
2 Kommentare
Das ist schon mehrmals aufgekommen, also sollte ich es mir wohl mal ansehen.
Hacker-News-Kommentare
Ich habe jj etwa zweimal ernsthaft ausprobiert. Das Konzept von first-class conflicts ist cool, aber in der Praxis muss man viel häufiger stagen/committen als Konflikte auflösen. Da ich von magit komme, fühlten sich die Funktionen zum Aufteilen und Auswählen von Hunks in jj sehr umständlich an. Ich rebase häufig, daher hatte ich mit den Rebase-Kurzbefehlen von magit die meisten Vorteile von jj bereits. Für Leute wie mich müsste jj die Hunk-Auswahl-UX deutlich verbessern, um magit zu schlagen
Jedes Mal, wenn ich eine Alternative zu Git sehe, verspüre ich ein wenig ludditische Gefühle. Es gibt schon zu viele Sprachen, Frameworks und Tools. Wenigstens beim VCS bin ich froh, dass es mit Git eine nahezu universelle Lösung gibt. jj mag Probleme lösen, aber wenn man die Belastung bedenkt, dass die Branche beide Systeme unterstützen müsste, scheint mir das kein Nettogewinn zu sein
git-svnverwendet. jj scheint einen ähnlichen Ansatz zu verfolgen. Auch ohne jj laufen bestehende CI-Systeme und Tools weiterIch habe jj ausprobiert, bin aber an Sublime Merge gewöhnt. Wenn man Versionsverwaltung über die CLI macht, muss man viel wiederholt tippen und verliert leicht den Überblick über den Zustand. In einer GUI ist der Zustand immer sichtbar, und per Klick kann man einen Diff öffnen oder eine Commit-Nachricht eingeben. Hunks per Tastatur auszuwählen möchte ich nie wieder machen. SM ist wirklich angenehm. Es wäre schön, wenn die jj-GUI besser würde oder jj in SM integriert würde
Die eigentliche Nachricht ist, dass Leute angefangen haben, Dinge wie „jjhub“ zu bauen (ersc.io)
Man hört, dass jj sich intern bei Google verbreitet, aber Google neigt dazu, seine internen VCS regelmäßig auszutauschen. Innerhalb von sieben Jahren ging es von einem git wrapper über eine erweiterte mercurial-Version bis jetzt zu jj
Ich frage mich, ob jj mit großen Binärdateien besser umgehen kann als git. In der Spieleentwicklung ist Perforce weiterhin der König. Git reicht selbst mit LFS nicht aus
Ich habe etwa einen Tag lang das Jujutsu-Tutorial durchgearbeitet und fand es ziemlich gut. Trotzdem hatte ich das Gefühl, dass ein Puzzlestück fehlt. Zum Beispiel habe ich mich gefragt, ob change IDs beim Erstellen eines PR auf GitHub tatsächlich hilfreich sind. Wahrscheinlich entfalten sie ihren wirklichen Wert nur mit dem internen Piper-Backend von Google. Ich bin gespannt auf die Pläne von ERSC. Persönlich hätte ich gern einen verteilten Workflow mit eingebautem Offline-Code-Review
change-id-Header, sodass jj-Nutzer auch dann Rebase-Verläufe verfolgen können, wenn GitHub jj nicht kennt. Das lässt sich mitgit cat-file -p HEADprüfenIch habe jj ein bis zwei Monate in einem privaten Projekt genutzt und bin ziemlich zufrieden. Wenn man allerdings ältere Revisionen bearbeitet, können neu zu
.gitignorehinzugefügte Dateien versehentlich mit aufgenommen werden. Davon abgesehen ist es gut. Trotzdem habe ich noch viel mehr Wissen über Git, daher werde ich es langsam auch in der Firma einführenIch bin dieses Jahr zu einem Sapling/Subversion-Unternehmen gewechselt und habe jj noch nicht benutzt. Trotzdem ist Sapling viel intuitiver, und Commit-Stacks sind leichter zu verstehen als Branches. Ich frage mich allerdings, wie es ohne Unterstützung wie die Review-UI von Meta aussehen würde. Solche Projekte werden definitiv gebraucht
Wie auch immer der Name sein mag, East River Source Control ist wirklich ein großartiger Name