- Feature Name: (N/A) - Start Date: 2024-05-13 - RFC PR: [rust-lang/rfcs#0000](https://github.com/rust-lang/rfcs/pull/0000) - Rust Issue: [rust-lang/rust#0000](https://github.com/rust-lang/rust/issues/0000) # Summary [summary]: #summary This RFC introduces a policy for including 3rd party projects in `rust-lang/rust` CI. # Motivation [motivation]: #motivation We already have some 3rd party project in CI (e.g. Fuchsia), however we can't just add every project in existence to our ci, thus we need a policy to help us decide if a project can be included (and similarly if we should remove it from CI). # Proposed policy [guide-level-explanation]: #guide-level-explanation To be included in `rust-lang/rust`'s CI a project needs to fulfill the following requirements: - It must be open source - There needs to be a document describing the projects, listing maintainers and other information (similar to target maintainers files) - At least 3 maintainers - Which can be pinged if the projects stops compiling in our CI, to help triage and debug the failure - If maintainers do not respond within 10 days, the tests will be temporary disabled - Documentation on how to build/test/debug locally - Tailored at rustc developers - Must include a way to set rustc flags - `T-infra` sign-off on CI implementation - Version of the project must be pinned (so upstream changes don't unexpectedly break CI) and be regularly updated by the project maintainers (so we don't test outdated code) # Drawbacks [drawbacks]: #drawbacks Having a policy is always better than deciding based solely on vibes. However, having the policy might cause us to include many more projects to CI, slowing it down. # Rationale and alternatives [rationale-and-alternatives]: #rationale-and-alternatives - Why is this design the best in the space of possible designs? - What other designs have been considered and what is the rationale for not choosing them? - What is the impact of not doing this? - If this is a language proposal, could this be done in a library or macro instead? Does the proposed change make Rust code easier or harder to read, understand, and maintain? # Prior art [prior-art]: #prior-art - [Target tier policy](https://rust-lang.github.io/rfcs/2803-target-tier-policy.html) # Unresolved questions [unresolved-questions]: #unresolved-questions - Who is responsible for making decisions? - `T-infra` is responsible for CI impl - Is `T-compiler` responsible for general decision? - What is the process to apply for inclusion of a project in CI? - `T-compiler` MCP? - Is 10 days the right deadline for maintainers to **respond**? - Should we require the project to be "notable"? Who and how decides if a project is notable? - What should this policy say about relience on unsatble features? # Future possibilities [future-possibilities]: #future-possibilities None yet.