Editions provide a way to make transitions in certain parts of the language. Would they also provide a way to make transitions elsewhere in the ecosystem? Too late for it to be a Rust 2018 thing, but could each edition provide an implicit namespace on crates.io? E.g., to reduce the problem of "I have some legit dependencies on crate
x" but it is no longer maintained—unfortunately the name will have to be taken forever—instead, “For Rust 2021, I’ll need to run a fixup script to change the dependencies to be
2018/x because the name is going to be freed.”
This might be a horrible idea, but it would let us put off supporting
/ in crate dependencies until the next edition release, and it would also allow people to usually just refer directly to the crate name (e.g., "to do this, you need to install
clap" rather than "to do this, you need to install
kbknapp/clap") since that kind of communication can come with the implicit connection to the current edition.
We have that kind of partitioning of names of entities in everyday speech when we refer, e.g., to a particular player being on the Bengals (implicitly referring to the current year’s roster) vs a particular player being on the 1987 Bengals.
A review of spammed/squatted crate names would then only have to occur in the run-up to a new edition. (Granted it doesn’t solve the short-term problem of massive spamming, but it provides a cleaner transition point for new crates to take over old crate names.)