Notes from JJ Con 2026
Don'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-hunkfor better non-interactive splitting hunkset=> revset for diffs- My idea of property testing for revsets feels relevant here
I like building tools, breaking workflows, and putting them back together better. If you enjoy my work and want to support it, you can buy me a coffee ☕ or support me on Liberapay 💛.