Really, Truly Breathless With Excitement

Last updated: 3/14/2026 | Originally published: 3/14/2026

A medieval man and woman in a duel An illustration from a 1467 manuscript of Hans Talhoffer’s fight book, from the always-wonderful Public Domain Review

Jujutsu: the future of version control is here! I’m really, truly breathless with excitement now that I’ve spent a week messing around with it.

If you don’t know what version control or git are, you can probably skip this issue 🙂 Perhaps in the near future I’ll talk about Jujutsu for non-software engineers. P.S. yes I will soon discuss my mysterious reasons for being busy mentioned last week.

I’ve always had an alarming level of comfort with git, perhaps because I invested the time to understand its mental model and primarily use it on the command line. I’m not sure I can recommend either; git’s mental model is famously convoluted and counterintuitive, and the git command-line interface is famously clunky (just see the long-standing reuse of “checkout” to mean both “move to a different branch” and “delete a tracked change”!).

Jujutsu — or rather jj, per its command-line interface, which I’ll use from here on out — is beautiful because it’s simple, in a Rich Hickey “Simple Made Easy” way. jj throws out the distinction between commits, the staging area, and the stash, and also tosses most of the branch logic.

Instead, practically the only concept in jj is a revision. jj is always pointing at a “current revision”, represented by the @ symbol. Any changes you make are automatically added to the current revision. Revisions live in a tree, similar to git commits, though revisions can have an arbitrary number of parents and children. At any time, you can create a new, empty revision on top of any other revision, anywhere in the tree, and start adding changes to that commit.

And that’s… about it.

You’ll probably have to unlearn some git habits, but getting used to jj took me about an hour, because it’s just that simple. What does that simplicity buy you? Well…

jj follows all the best practices for CLI design in 2026 — the options are all consistent, and the designers have been thoughtful about naming (for instance, “branches” were renamed “bookmarks” to avoid confusing with git’s branches). It’s one of the nicer command-line tools to use regularly.

The best part is that you can start using jj today. It’s fully compatible with git, so you can use it on your local copy of a GitHub-hosted repo, and if you ever need to switch back to git, you can start using normal git commands at any time (you’ll just have to switch back to a branch, because jj tends to put the repo into a detached HEAD state).

Seriously, I know nobody wants to learn a new version control system, but I can’t recommend jj highly enough. It is one of those pieces of software that just puts a big smile on my face every time I have to use it.

Reply by email!