# Improving platform testing Notes from the RustConf 2023 unconf. Linked to from the [discord channel](https://discord.com/channels/734893811884621927/1099830253637083269/1152750177803829418). ### Problem framing * High effort to support EOL platforms * Windows 7 * Older macOS * Effort to maintain mac targets vs linux could easily be 10x * Opportunity for new users vs supporting older platforms that don't collaborate * Resources probably better spent on vendor-supported platforms that we don't support yet. * These users will naturally be quieter, because many of them don't have confidence to start using Rust yet. * Android a great example * "Support" can mean many things * Policy 1. Will test in presubmit 2. Will fix reported breakages 3. Will accept patches * Community interest, e.g. mac-arm64 is technically Tier 2, but in practice better supported by the community. * Even Tier 1 platforms aren't uniformly supported. eg. we don't test on *older* versions of any Tier 1 platform, even if we support them in theory. We build in a way that supports them, or try to. Testing on newer versions gives limited coverage of older version support. ### Solutions * "Bring your own builder" - LLVM's CI model * Vendors who want their platforms supported can provide them * We could also have community builders, e.g. for Windows 7 * Advisory builders * Ping maintainers? Unsure. * How to implement? * Builder interface (prior art: RBE, GHA Agent, Git lab Runner, build bot) * Auto? file a ticket * Put them in a shared dashboard - more signal available in one place, knowing where to look, help w/ prioritization * Example: Rustup component history dashboard * "Tier 1.5" * Stratify by community interest and support * Also stratify by testing availability and reliability * "2 kinds of tier 1.5: well tested, well used" * Surface quality signals, e.g. % of crates that build on Rust x.y on platform z, weighted by number of users. * Telemetry: Measure usage of different platforms, e.g. via rustup * Imperfect and biased, but still useful signal * Download counts for rustup - these should be available today * Jettisonning platforms * If a platform is taking a lot of time, probably should be barring extra support * Needs to be communicated explicitly and in advance, to give the community (or vendor) time to respond * Summary * Kick off community-driven buiders * Be more explicit about needing support to move between tiers