-
Notifications
You must be signed in to change notification settings - Fork 968
JJ Con 2025
Kevin Liao edited this page Sep 26, 2025
·
43 revisions
RSVP here: https://rsvp.withgoogle.com/events/jj-con-2025
Time: Sep 28, 2025 (Sunday)
Location: Google Building MP6 (1195 Borregas Ave, Sunnyvale CA 94089)
To Join Remotely:
- Keynote/Presentations (9am - 12:15pm): 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
| Time | Schedule | Presenter | Details |
|---|---|---|---|
| 8 am | Breakfast, Small talk | ||
| 9 am | Opening Keynote | Martin von Zweigbergk | |
| 9:15 am | Mahou (魔法), A scripting language for Jujutsu | Philip Metzger | 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 | 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 | 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 | ||
| 4:30 pm | 30 minute unconference | ||
| 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 |
- Call for Presenters Jul 18 - Aug 1: Spreadsheet is shared in discord calling for presenters. Presenters should state their topic, brief intro, and affiliation. Remote presenters are allowed.
- Vote for Presenters Aug 1 - Aug 18: All discord community members can vote. Top 5 most up-voted topics get selected. If there are too many remote presenters, we (JJ team at Google) may prioritize topics with fewer votes to ensure a good balance. See disclaimer section below.
- Announce Presenters Sep 1: The topics that are selected are announced.
- Call for topics Sep 3 - Sep 10: A spreadsheet will be shared in discord calling for design discussion proposers. Proposers should state the topic and their goal of the session. The spreadsheet also has two extra columns “leader” and “note-taker”. The leader is responsible for keeping the discussion on track. The note-taker is responsible for taking notes that can later be shared online.
- Voting topics Sep 10 - Sep 15: We will ask the community to vote for sessions they plan to join. Topics with most votes gets selected. If there is not enough interest in design sessions, we may merge the split design sessions, or allocate more time for presentation/unconference.
- Announce Schedule Sep 18: The topics that are selected is announced.
- At the meeting, attendees should choose a leader and a note-taker, if not determined in the spreadsheet already. If there are not enough topics for design sessions, extra time can be re-arranged to unconference.
Unconference will only be available to in-person attendees.
- The speakers are up to the discretion of Google.
- Self-organized dinner
- Do I need a Google account to propose topics? No. You will need a Google account to access the spreadsheet for both presentations and design sessions proposals. If you prefer not to use a Google account, you can also email kevincliao@google.com with your proposal.
This conference aims to connect with the JJ community. The JJ team at Google, as your host, is committed to transparency in how this event is organized. While community votes largely determine the topics and speakers selected, we may occasionally override these selections for the following reasons:
- Significant overlap with another already chosen topic.
- The topic is primarily an advertisement for a for-profit tool.
- To balance the ratio of onsite and remote speakers.
- There may be other reasons not listed above.