-
Notifications
You must be signed in to change notification settings - Fork 729
JJ Con 2025
André Arko edited this page Sep 28, 2025
·
37 revisions
RSVP here: https://rsvp.withgoogle.com/events/jj-con-2025
Time: Sep 28, 2025 (Sunday). All times on this page in Pacific Daylight Time.
Location: Google Building MP6 (1195 Borregas Ave, Sunnyvale CA 94089)
Directions: Use the north door of the building. There should be plenty of signage pointing you in the right direction. We recommend parking in the large parking lot to the north of the building; it's fine to park in any of the surrounding lots.
To Join Remotely:
- Keynote/Presentations (9am - 12:15pm):
- YouTube livestream through GerritForgeTV
- https://meet.google.com/bbd-affd-xik
- Design session Track A (1:30pm – 5:10pm): https://meet.google.com/wtm-szav-vto
- Design session Track B (1:30pm – 5:10pm): https://meet.google.com/pvw-uxxe-ssd
- Unconference is in-person only and will not be available through Google Meet
Time | Schedule | Presenter | Slides/Notes | Details |
---|---|---|---|---|
8 am | Breakfast | |||
9 am | Opening Keynote | Martin von Zweigbergk | ||
9:15 am | Mahou (魔法), A scripting language for Jujutsu | Philip Metzger | Slides Initial Transcript | A brief introduction to a user-level scripting language (prototype) for the project and its design considerations (aka jj script). |
9:45 am | Break | |||
10 am | Copy tracking in JJ & other VCSes | Josh Steadmon | Slides | A survey of how other VCSes have handled tracing ancestry of files across copies and renames, and our plans for doing the same in JJ |
10:30 am | Version-controlling metadata | Rodrigo Damazio Bovendorp | We're seeing more and more use cases that require version-controlling not just file contents, but also a lot of metadata associated with them. | |
11 am | Break | |||
11:15 am | Stupid jj tricks | André Arko | Slides Text | A survey of interesting revset aliases, templates, aliases, and other configuration to accomplish common (or not so common) tasks |
11:45 am | jj at Google | Martin von Zweigbergk | Architecture and future plans | |
12:15 pm | Lunch | |||
1:30 pm | Design session A (30 minutes) | Tagging: Figure out how to handle tagging and not just specifically for the git backend. It's useful to be able to pinpoint a name to a specific commit (essentially bookmarks but for commits and inherently immutable). My main open question is handling changes in the revision the commit belongs to, be it through simple amendments/squashes or rebases of entire commit trees | ||
1:30 pm | Design session B (30 minutes) | Filtering and transforming commit graphs: Discuss some ideas about a generalized 'filter' tool that can perform transormations on the commit graph to produce new commit graphs. The most common case for this is importing and exporting subprojects, but in theory many arbitrary transformations are usable. The biggest design questions I have is if filters should be "invertible" or not, how Change-IDs should work, etc. It would be good to know some use cases to scope things appropriately. | ||
2 pm | Design session A (30 minutes) | Handling very large directories and deep directories: We have two kinds of problematic directories at Google. Some are very large (~100k entries). This makes them expensive to pass around and work with. Some directories are very deep (~15 levels?). This results in many round-trips to the server to find the leaves. It seems like we should be able to solve both problems by using something like prolly trees on a flat list of all the files in the repo. We have discussed this a bit internally and it seems promising, but it's going to be a lot of work, and not Git-compatible. This session would be about sharing the idea with others and hearing your feedback. | ||
2 pm | Design session B (30 minutes) | Code formatting brainstorm: Do we have any opportunities to fundamentally improve the use of code formatters? Extreme examples include normalizing formatting upon snapshot and/or applying user formatting preferences when materializing file content for the working copy, diffs, merges etc. | ||
2:30 pm | Break | |||
3 pm | Design session A (45 minutes) | Topics: This roundtable is about Topics and how to integrate them in a user-friendly way. Because there are some separate ideas floating around what they should be, so it'd be nice for the project to find some consensus on them. So we could progress on them for better Git interop. And since I'm here in person I bring the current v2 of the design doc as a starting point. Some major points of discussion probably will be my metadata oriented approach or something more physical since that is contested in the current PR. | ||
3 pm | Design session B (45 minutes) | Command set: If you look at jj {squash,split,commit,restore} combined with partial flags (--interactive, filesets) combined with -A/-B/--into etc., it's unclear whether the functionality is cleanly broken down into different commands anymore. This would be a session to rationalize the command set and available options. | ||
3:45 pm | Break | |||
4 pm | 30-minute unconference (in-person only) | |||
4:30 pm | 30 minute unconference (in-person only) | |||
5 pm | Closing Remarks | Emily Shaffer | ||
5:05 pm | End of conference (can hang around and chat) | |||
6 pm | All individuals are asked to leave the building |