# 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