JJ Con • Keynote by Martin von Zweigbergk

By Google for Developers

Share:

Key Concepts

  • JJ (Jujutsu): A Git-compatible VCS (Version Control System) that aims to improve upon Git's user experience and performance, particularly for large repositories and complex workflows.
  • Pluggable Backend: A design principle allowing JJ to integrate with different storage backends, enhancing flexibility and compatibility with custom infrastructure.
  • First-Class Conflicts: A core feature of JJ that treats merge conflicts as a first-class citizen, enabling users to resolve them more effectively and without getting stuck.
  • Operation Log: An internal mechanism in JJ that records all repository operations, facilitating features like undo and state restoration.
  • Always Rebase: A default behavior in JJ where all descendant commits are automatically rebased, simplifying workflow and ensuring consistency.
  • Copy Tracking: A planned feature for JJ that will enable it to track file renames and moves, improving the accuracy of tools like git blame.
  • RPC API: A Remote Procedure Call API that JJ plans to implement to facilitate easier integration with external tools and services.
  • VFS (Virtual File System): A technology that allows for more efficient handling of large files, particularly relevant for industries like game development.
  • JJCon: An event or conference related to the JJ project, featuring talks, design discussions, and community interaction.

Project History and Development

The JJ project, approximately six years old, has experienced exponential growth in the last few years. Its inception in October 2019 began with a commit of less than 100 lines of code. Notably, the concept of a pluggable backend was present from the very first commit.

The project originated as an experiment with the working copy commit feature. This led to the development of first-class conflicts, a crucial feature designed to prevent users from being stuck when conflicts arise in the working copy, allowing it to remain a commit and handle conflicts. An early version of this feature was functional with simple conflicts, and a significant refactor in April of the project's early stages led to its current implementation, where reordering and chaining commits are possible, with conflicts resolving upon returning to the original state.

A few months later, the operation log was introduced to simplify internal APIs and isolate commands from concurrent repository changes. This log serendipitously proved useful for undo functionality and repository restoration.

Approximately six months after the operation log's introduction, the repository was moved to GitHub from an internal repository. A few months thereafter, the realization that first-class conflicts enabled continuous rebasing of all descendants, coupled with the unexpected speed of JJ, led to the default enabling of the always rebase feature.

Milestones and Growth

  • February of the following year: JJ appeared on the AI news front page, marking its first significant public attention.
  • Soon after: Approval was granted to begin integrations at Google.
  • Two years later: The project saw its first internal users, starting with approximately 20 users who were generally satisfied, though significant improvements have been made since.
  • Present: The project is on the verge of an open beta release, allowing anyone to use it, despite some remaining bugs and missing features. The project currently has around 800-900 internal users and is growing rapidly. External user numbers are estimated to be at least 100, with a similar growth trajectory to GitHub's store history.

Future Development and Features

Short-Term Goals:

  • Copy Tracking Support: A significant design effort has been dedicated to implementing copy tracking. This will allow rebasing commits even if files were renamed upstream. It is expected to improve tools like git blame and enable modeling of merged files, potentially propagating changes when parts of files are moved.
  • RPC API: The absence of an RPC API hinders integrations. While the jj-lib library exists, it is too low-level. An RPC API would simplify integrations, allow them to leverage custom backends (like Google's storage backends), and avoid duplication of logic by tools like jj itself.

Long-Term Vision:

  • Cloud-Based Hosting: Similar to Google's internal solutions, cloud-based hosting is a key future development. This is expected to benefit game studios working with large files, as Git is not well-suited for such scenarios.
  • Open Source VFS: The hope is to see an open-source Virtual File System (VFS) in the future, enabling more efficient handling of large files.

Practical Information for JJCon

  • Discord: A dedicated JJCon channel is available on Discord for questions and sharing.
  • Schedule: The full schedule is available on the wiki, linked from the JJCon channel.
  • Morning Session: Talks will be held in Mars Grove.
  • Lunch: Served in the lobby.
  • Afternoon Sessions: Design discussions will take place in Mars Grove and Walker Canyon (across from the lobby), with other smaller rooms available if needed.
  • Unconference: A whiteboard is located at the back for attendees to add topics for the unconference portion.
  • Check-in: Attendees who have checked in at the lobby will receive t-shirts and stickers.
  • Access: Access is granted to most of the floor, with restricted areas requiring badges.
  • Restrooms: Available in the direction indicated, with gender-neutral and private options further down.
  • Organizers: Identified by beige t-shirts with the JJ logo, available to answer questions.

Synthesis/Conclusion

The JJ project has evolved from a small experiment into a rapidly growing VCS with a strong focus on user experience and performance. Key innovations like first-class conflicts and the operation log have laid the groundwork for its current capabilities. The future roadmap includes crucial features like copy tracking and an RPC API, aiming to further enhance its integration capabilities and address limitations with large files. The JJCon event serves as a platform for community engagement, knowledge sharing, and collaborative development, highlighting the project's vibrant and active user base.

Chat with this Video

AI-Powered

Hi! I can answer questions about this video "JJ Con • Keynote by Martin von Zweigbergk". What would you like to know?

Chat is based on the transcript of this video and may not be 100% accurate.

Related Videos

Ready to summarize another video?

Summarize YouTube Video