Welcoming the Josh Project to the Rust Innovation Lab
The Rust Innovation Lab (RIL), housed under the Rust Foundation, is pleased to announce the arrival of its newest board-approved project, Josh (“Just One Single History”): a Rust-based platform for scaling Git to codebases of any size, with any number of contributors, without slowing down the pace of change. The Rust Project already relies on Josh to keep rust-lang/rust and several of its tools in sync. That makes Josh an important piece of the infrastructure behind Rust itself.
About the Rust Innovation Lab (RIL)
The Rust Innovation Lab is a home for Rust projects that fill gaps in the ecosystem or demonstrate what Rust can achieve, with the Rust Foundation acting as fiscal sponsor. Projects get the structure, stewardship, and administrative backing they need to grow from ambitious ideas into lasting open source initiatives. Learn more here.
About Josh
As organizations and projects grow, they often split code across many repositories to manage scale, access control, and build scope. This happens because the available tooling makes that the easiest option, not necessarily because it is the best one. Josh challenges that assumption. At Josh’s core is fast, reversible transformation of Git history. With it, any part of a repository can be presented as its own independent repository, with full history and the ability to contribute back. Repository boundaries stop being fixed decisions and can be defined on demand.
Josh ships two main components:
- josh CLI, for working locally with partial projections of Git repositories
- josh-proxy, a Git HTTP and SSH proxy that transforms history on the fly for many users from a shared cache
The Rust Project knows these benefits firsthand. Tools like Miri and Rust Analyzer live in their own repositories but must stay tightly integrated with the compiler. For years that integration used git subtree, which became unusably slow at Rust’s scale; on Miri, syncs sometimes never finished at all. Today the Project uses Josh for subtree synchronization of Miri, Rust Analyzer, compiler-builtins, stdarch, and the Rust Compiler Development Guide, with plans to migrate the remaining subtrees. You can read more in the Inside Rust post, How Josh helps Rust manage code across multiple repositories.
Work in progress includes a merge queue with support for filtering and PR stacks, a code review UI for stacked changes, and josh compose, a containerized build orchestrator built on Josh’s filters. Josh is licensed under the MIT license, so the code remains freely available to everyone.
Josh is maintained by Christian Schilling along with Vladislav Ivanov and Marc Wallner.
“Joining the Rust Innovation Lab is both a practical and a symbolic step for the Josh Project. We believe that a stable home with the Rust Foundation reflects our long-term commitment to support Josh as a piece of reliable infrastructure for today’s demanding projects such as the Rust compiler. At the same time we think that it puts us in an even better position to explore ways in which the technology we are building can reshape how the industry thinks about Git, version control and distributed collaboration in general. For code and beyond.
– Christian Schilling, Josh Lead Maintainer
Josh is one of those projects many Rust contributors rely on every day without ever thinking about it. It quietly keeps the compiler and some of the most important tools in sync, at a scale that pushed traditional Git tooling past its limits. Its maintainers have been great partners to the Rust Project, improving Josh to meet the Project’s demanding needs. It also shows the rest of the industry what a Rust-built approach to version control at scale can look like. Bringing Josh into the Rust Innovation Lab hopefully provides this critical piece of infrastructure a stable, long-term home.
The Rust Foundation is excited to welcome Josh into the RIL!
Explore the project, try it out, and contribute on GitHub: https://github.com/josh-project/josh
Read the documentation: https://josh-project.github.io/josh