DevLogTechnical writing
Blogs

jj: The Version Control System Google Runs Internally

October 17, 2026

Version control hasn't changed much since Git won. Twenty-plus years in, most of us still spend part of every day coaxing an index, remembering branch names, and babysitting rebases. The most interesting counter-punch in years is Jujutsu (jj): a Git-compatible VCS that rearranges the mental model — the part that lives on your laptop — and leaves the rest alone. Your repository stays a Git repository. But the way you work changes.

The idea that makes it click: in Git, a commit is a snapshot you're always trying to catch up to, and your working copy is a half-defined in-between state you reason about separately. jj collapses both. Your working copy is itself a commit — a change, not a staging area waiting to happen. There's no index to think about and no dirty-state anxiety. You just edit, and the next command you run snapshots where you are.

That sounds small; it changes daily flow.

Where does something like this come from? Martin von Zweigbergk started jj as a hobby project in late 2019 while at Google; it became his full-time work there. It is written in Rust, and its Git backend sits on the gitoxide library. It broke out in February 2024, when Steve Klabnik and Chris Krycho each published extended tutorials. Google runs it internally today — the project's own roadmap describes a database-backed Jujutsu server that Google keeps commits and repositories on, with jj as the client. And there is a fresh turn: this September, after roughly fifteen years at Google, von Zweigbergk became chief technology officer of East River Source Control, a startup building a next-generation version control platform. jj itself stays open source under Apache 2.0 with more than 30,000 stars on GitHub, and he remains its core maintainer.

The best part for the rest of us: you don't need your team to switch. Because jj is Git-compatible, one person can use it on a shared repository while everyone else stays on plain Git. Try it the boring way — jj git clone an existing repository, run jj describe -m "...", keep coding, then jj git push and open a normal pull request. Most of what you already do still works; the busywork you never liked is what starts to disappear.

Jujutsu still calls itself experimental, and it isn't for everyone — IDE integration lagged, and old habits die hard. But the reason it keeps coming up is simple: it stops making you manage version control and lets you get back to writing code. That is a fair trade.

← More Blogs