This presentation serves as an opening address for a conference about the "JJ" version control project. The speaker begins by expressing deep gratitude to the community for its wide-ranging contributions and for fostering a welcoming environment. The talk then delves into the six-year history of the project, detailing its origins as an experiment with the "working copy as a commit" concept. Key technical innovations are highlighted, including the development of "first-class conflicts" to handle unresolved states, the creation of an "operation log" that enabled a powerful undo feature, and the eventual move to an "always rebase" default model for a smoother user experience. The speaker recounts major milestones, such as gaining public traction and achieving significant internal adoption at Google, leading to its current "open beta" status. Finally, the presentation outlines the future roadmap, focusing on the implementation of copy/rename tracking, the development of an RPC API for better tool integration, and long-term ambitions for cloud-based hosting and an open-source Virtual File System (VFS) to better support large-scale projects like game development.
The JJ Project: A Look at its History, Growth, and Future
0:00:02 Community Appreciation: The talk opens with a sincere thank you to the project's community for all contributions, from pull requests and bug reports to user support and creating a welcoming atmosphere.
0:01:03 Exponential Growth: The speaker notes that the six-year-old project has experienced exponential growth in recent years.
0:01:30 Project Origins: JJ began in October 2019 as a small experiment exploring the "working copy as a commit" concept. The design for a pluggable backend was present from the very first commit.
0:02:23 First-Class Conflicts: A core innovation of JJ is the concept of "first-class conflicts," which allows conflict states to exist directly within commits. This was developed so users wouldn't get "stuck" when their working copy had unresolved changes.
0:03:54 The Operation Log and Undo: To simplify internal APIs and prevent issues from concurrent commands, an "operation log" was created. This had the happy side effect of providing a robust foundation for the project's powerful undo functionality.
0:04:40 Automatic Rebasing by Default: The combination of the tool's speed and its ability to handle conflicts meant it was practical to enable automatic rebasing of all descendant commits by default, creating a superior user experience.
0:05:07 Major Milestones: The project gained significant public attention after a post on Hacker News, which soon led to approval for internal integrations at Google. It has since rolled out to 800-900 internal users.
0:05:58 Open Beta Status: JJ is now considered to be in "open beta," meaning it is ready for wider use, though some bugs and missing features remain.
0:06:47 Future Goal: Copy Tracking: A major short-term goal is to implement copy/rename tracking. This will allow for more robust rebasing when files have been moved and improve the accuracy of blame/history tools.
0:07:58 Future Goal: RPC API: An RPC API is planned to make it easier for other tools and IDEs to integrate with JJ and to allow them to use custom storage backends.
0:09:00 Long-Term Vision: Cloud Hosting and VFS: The speaker expresses hope for future cloud-based hosting solutions and an open-source Virtual File System (VFS). These would make JJ a more viable option for industries that struggle with Git's handling of large files, such as game development.