Skip to content

Notes from JJ Con 2026

Isaac Corbrey
Sep 17, 20263 min read
2

on't expect a lot from these, I ran out of energy halfway through and tbh they're mostly for me anyway lol

Josh Steadmon: The Git and JJ Object Models

  • Git's reflog exists because refs are mutable and not content addressed, so there needs to be something that keeps track of their changes
  • In JJ commits explicitly point at their predecessor(s) to sidestep having to do reflog archaeology
  • JJ commits can point to multiple root trees instead of just one (used for representing conflicts as a first-class concept)
    • Conflict markers are not stored anywhere in JJ's data, it instead materializes them when populating the worktree on disk from the commit's root trees
      • Conflict algebra fucks
  • Views represent refs, head commits, Git metadata, and worktree commits at a given point in time in an immutable, content-addressed way
  • Operations link views over time

Nick Gerace: How to Accidentally Create a Graph-Based VCS

  • DAGs are DAGs and DAGs are Hard
  • Oh no not stored procedures
  • This reminds me of perpetual patches like in my Helix megafork, would be cool if that was a first-class feature but maybe doesn't need to be more than a technique
    • How do we represent evergreen patches in Jujutsu?
  • DAGs are DAGs and DAGs are Hard
  • Note to self: look into monotonic clocks and vector clocks
  • DAGs are DAGs and DAGs are Hard
  • Causal garbage collection is hard
  • DAGs are DAGs and DAGs are Hard
  • Ends make the means w/ operational transforms, basically compute the necessary diff to get to the end result
  • DAGs are DAGs and DAGs are Hard
  • Copy on write can be more expensive than is worth it in some situations
  • Immutability is safety, treat mutability like unsafe
  • DAGs are DAGs and DAGs are Hard
  • Welcome back locking
  • DAGs are DAGs and DAGs are Hard
  • Split graphs to make it easier?
  • Welcome back materialized views
  • "JJ stores history, not data" strikes again
  • DAGs are DAGs and DAGs are Hard
  • CRDTs strike again
  • Log replication?
  • We keep trying to abuse Jujutsu to represent non-VCS domains, but it never quite works because it's a mismatch between data and delta. How do we resolve this?

Pandelis Zembashis: Exploring a Jujutsu without Git

  • What does a forge built only for JJ look like?
    • Related to my thoughts on what code review looks like in a Jujutsu world
  • Git makes rebasing and multi-author stacks difficult
  • Jujutsu is not prescriptive about how a backend is implemented as long as it follows the spec, which is just an interface layer
  • This feels more similar to my work on Mnemosyne than I anticipated, but without the Git indirection
  • Jujutsu backends as WASM? Why compile in a backend when you could decouple it?

Laurynas Keturakis: Change IDs All the Way Down

  • The abstractions that seem to survive today are those that both we humans and agents can utilize without friction
  • See: https://isaaccorbrey.com/ramblings/how-accessible-to-llms-is-jujutsu
  • Making code review for self better makes review for others better
  • Check out jj-hunk for better non-interactive splitting
  • hunkset => revset for diffs
    • My idea of property testing for revsets feels relevant here

Did you enjoy this article?

Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.

Across the AtmosphereDiscussions