JJ Con 2026 Talks are Up

Last week GitButler helped host Git Merge 2026 in Lisbon. This year we "merged" with our friends working on Jujutsu, the cool new version control system that has inspired some of our approaches (and vice versa cough megamerges) since a lot of the same people attended both conferences last year. This year we helped organize the JJ Con event alongside Git Merge, while our friends at Google and ERSC sponsored and hosted it.

As part of the setup, we recorded all the talks, and they are now all up on our YouTube channel. We also live streamed the whole thing, so maybe you caught some of this fun day as it went out in real time.

In any case, they are all up for you to now watch at your leisure. I'll do a quick overview of all 9 talks so you can get a taste for what was covered in each one and where you might want to skip to if there is a particularly interesting snippet.

Let's take a look at what everyone talked about.

The Talks

Emily Shaffer reported that jj had reached general availability for developers inside Google. She also outlined three internship projects: a FUSE-compatible virtual filesystem1, an open-source commit cloud2 for sharing work across machines, and metadata storage for tracking AI contributions through rebases and other history rewrites.

1 jj-vcs/jj-vfs-poc
2{' '} jj-vcs/jj-commit-cloud-poc

Comparing the JJ & Git Object Models

Joshua Steadmon explained how jj builds on Git's object model to make history editing less painful. Stable change IDs and predecessor links track a change across rewrites; storing conflicts lets rebases finish without stopping for repairs. Versioning repository metadata through views and the operation log is what makes jj undo possible.

How to Accidentally Create a Graph-based Version Control System

Nick Gerace traced how adding module support to System Initiative turned its infrastructure database into a version control system. The team needed to preserve local edits while incorporating upstream changes, then ran into expensive graph updates and unwanted conflicts. Operational transforms and moving derived views out of the rebase process made the system practical, but getting there was a lot of work.

Exploring a Jujutsu without git

Pandelis Zembashis walked through VEX, a native jj backend and forge using SQL metadata and object storage, with the operation log kept local. Fetching loose objects proved too slow, so the design builds packs on demand and can serve Git clients too. A remaining obstacle is that custom backends require their own jj build, leaving existing community tools behind.

Change IDs all the way down

Laurynas Keturakis showed two experiments for working with coding agents: a query language for selecting and splitting diff hunks, and Tandem, a prototype that shares jj workspace snapshots across machines. The demos explored making large changes easier to review and letting agents see each other's work without explicit pushes and pulls, including an integration workspace for spotting conflicts early.

Bridging the Gap: Adding native JJ support to a Git-based SCM

Daniele Sassoli and Emily Shaffer demoed a prototype that lets Gerrit read jj's change IDs from commit headers instead of requiring commit-message footers. They updated the same review from both jj and Git and preserved change IDs through server-side edits. One remaining trap: a plain Git rebase or cherry-pick can still discard the header.

Three Writes, Not One: Building Developer Tools on jj-lib

Lita Cho used a small Graphite-style CLI built on jj-lib to show what tool authors must handle themselves: snapshot filesystem changes, run a repository transaction, then synchronize the working copy and Git refs. The library provides repository operations, but the application owns that coordination. Her demo traced the state changes behind initializing a repo and creating a bookmark.

More props for jj tests

Gašper Štukelj built a property-based test harness that generates jj commands and revsets, checks that jj log never panics, and shrinks failures into small reproducers. It reproduced a previously fixed panic and independently found a known operation-log bug. He also showed early experiments with injected failures, where distinguishing jj bugs from mistakes in the harness remained tricky.

jj Tool & Config Ecosystem

André Arko toured the tools and configuration around jj, starting with community workarounds that have become built-in commands, including bookmark advance, bisect, and converge. He then showed elaborate aliases, push helpers, forge integrations, and a range of graphical and terminal interfaces, with concrete examples of what each adds to the basic CLI.

See you next year

Thanks to all the speakers, to Google and East River Source Control for hosting the day, and to everyone who came to Lisbon. We'll see you at the next one.

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论