I'd like to create a crate contract, which was reserved by swmon, who reserved dozens of crates without using it at all, just as described in this reddit post.
What exactly I have to do, to get one of those names? I honestly don't see the point of using a different name just because some idiot thinks he's reserving such names without using it.
I think having a lifetime will disadvantage some crates. I'm thinking of crates that implement a standard algorithm, have solid tests and are mature and rarely need any updates.
I've also wanted to use a crate name that was in use: retest (regular expression test). My solution was to keep the name I wanted "retest" (regression/repeat test) but to use my domain as a prefix for the crate, i.e., qtrac-retest.
There are a lot of crate names that have been "reserved" by people such as swmon who spam uploaded empty crates. IIRC there was some discussion about tackling this but I don't know if it went any where.
Nobody likes a “squatter”, but finding good rules that define squatting that can be applied mechanically is notoriously difficult. If we require that the package has at least some content in it, squatters will insert random content. If we require regular updates, squatters will make sure to update regularly, and that rule might apply over-zealously to packages that are relatively stable.
A more case-by-case policy would be very hard to get right, and would almost certainly result in bad mistakes and and regular controversies.
Instead, we are going to stick to a first-come, first-served system. If someone wants to take over a package, and the previous owner agrees, the existing maintainer can add them as an owner, and the new maintainer can remove them.
The proposed solution is to use "creative names" instead, the case for which is made in the " Namespacing" section:
When we looked at package ecosystems without namespacing, we found that people tended to go with more creative names (like nokogiri instead of “tenderlove’s libxml2”). These creative names tend to be short and memorable, in part because of the lack of any hierarchy. They make it easier to communicate concisely and unambiguously about packages. They create exciting brands. And we’ve seen the success of several 10,000+ package ecosystems like NPM and RubyGems whose communities are prospering within a single namespace.
Not sure if it's the right topic, but I want to also share my concern about a single namespace.
As other commented above, it have realife problems (discoverabilty of 'creative names').
One of the thing I fear is that we will have some crates not available on crates.io because the name is already taken (squatted or not) and available only using the git repository, which will fragment the ecosystem and reduce discoverability. (I plan to do this, for security reasons, I need to reimplement a lib and have to namespace it under my org, using prefix is wacky because anyone can hijack it).
Keeping this direction will greatly limit rust (or rather crates.io) adoption and scalability, especially among enterprise users where you have security requirements (to not to use random package by random people).
In the last few months, we already had discussions in internals forum about namespacing and both discussions went into "loops" without reaching any consensus.
Given the current scenario, the only way out is to contact the (squatted) crate owner and see if they agree to transfer the crate to you. If they, say no there isn't much you can do about it (other than picking another name).
If the namespace was one level deep, how would you be able to remember if, say,
mgeisler/libxml2 or
nokogiri/libxml2
is the library you want?
I think you would have to rely on the top-level entry in the namespace and so we're back to square one, no?
Basically, I imagine that you would search for the functionality you need (rust libxml2) and then you would see and remember that nokogiri is the right one. The first time you search you would need to look at both hits - but I think this is the same with a flat namespace and "creative" names?
What about filtering the crates by implying maintenance that would seem regular to a normal user, but not to a squatter? For example: We count the number of downloads a crate has had in the past 3 months. In the case that it is below a threshold, for example 200, then an email is sent out to the owner. This would in turn ask them if they'd like to release ownership of the crate (I'm not too sure about how ownership works on crates.io, it might just be put into a box where another user can take ownership if they so wish) and if they don't comply (By clicking a "Yes I'd like to keep this crate" button) then it is released. Just throwing out another idea, as this seems to be a very stubborn issue.
Let's say I don't remember; at least I'd be able to find them.
Incidentally, I deleted that post because I decided it was going off-topic and risked derailing the thread. Hell, it's got an "Undelete" button on it for me. I really have no idea why it's still there for people to reply to... :S