Whilst I’m 100% In favor of solving this issue, the main argument against is, I think , that it could have the opposite effect of what you’re looking for.
That's why I say having a list of pros/cons would help solving problems one by one. Let's have a Jira board for cons to solve.
I am not saying there are no problems with namespacing, but most of them can be solved with a technical solution, takong the burden off people that could have better/nicer things to do than being judges of the community behaviour.
For example, an upvote system where only a registered developer can cast a vote on a crate could help solve the popularity problem.
Creating accounts (and therefore namespaces) should not be automatic, for example should be vetted by a human, or it should be connected to something with a real cost (like owning a domain or similar), or require some kind of action (replying to an email with some kind of CAPTCHA, or confirming in some other way).
Having a crate published (and maybe upvoted with defined levels) would add weight to the vote.
Creating an organization namespace could require a certain reputation on the published crates, or/and a certain number of crates with a non-zero reputation.
Etc. etc.
With time, the best crates will surface themselves and bad ones will be buried.
They are mostly/all technical solutions that would avoid relying on human intervention or on good will of all the actors.
There will have to be a human factor in decisions, but this should eliminate 90% of the load on them.
As for cargo/the compiler, yes, it's not easy, but I'm pretty sure a solution can be found, like... I don't know, having namespace/crate-name
in crates.io
that automatically becomes namespace__crate-name
unless an alias is provided in Cargo.toml
. The current crates could remain non-namespaced but the new ones should have a mandatory namespace, and, slowly, as crates reach a new major version, they get namespaces.
As most of the crates are still 0.x, this could be a good moment to implement it, so the namespaces will start filling up quickly as they reach 1.x and in 3-5 years all the non-namespaced crates will disappear (or be declared obsolete/deprecated)