-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create 0000-cargo-dns.md #3523
Create 0000-cargo-dns.md #3523
Conversation
maybe it would be better to put all dns names under |
and if the repo's ip address was |
I dislike this change for the same reason that I hate it in Java and co., and I especially dislike it in Go! This introduces all sorts of nonsense issues like:
And all of this for… what, exactly? Don't get me wrong, I think that DNS can be a nice system for things, but definitely not here. It's also worth pointing out that the RFC itself is clearly underspecified, since it's not exactly clear how the DNS-based verification will take place. As written, there's nothing stopping me from publishing |
Like I said, this is not a required change so far. If it proves to be useful futurely, I leaved my RFC on. The publishing process could be more complex to require registered domains. |
This RFC does not describe a problem. Solutions without problems are not useful |
@Nilstrieb I am well aware, the thing is that the future is unknown and it might be good to worry of the |
The crates.io team has very little bandwidth, so any non-urgent or unnecessary features are extremely unlikely to happen. For this proposal in particular, it seems like a separate package registry website could implement this sort of scheme to prove it out first, without needing support from the crates.io or cargo teams. That would be my preference at this time. |
I'd recommend starting with a PreRFC on internals to help vet an idea and collect input. For example, this isn't acknowledging the existing packages-as-namespaces RFC that is going through FCP for some of the relevant teams. This also should go into more discussion about how this ties into any existing packages this conflicts with. |
Why are |
Also people are working on namespacing already, so is this mechanism supposed to be in addition to that or replacing it? We only really need one namespacing solution. This is also tied to GitHub, and what stops me from just putting a random url in my package's repository field in order to publish under whatever top-level domain I want? There has to be some kind of validation to make this work. I think that the better solution is to allow users to register names via some UI in crates.io or something, if we did want to go here. If those have to be dns, then maybe also force them to validate via txt records as GSuite and similar do. In addition to this being unnecessary/low priority, it is very much underspecified. What about cname? Which DNS resolver will crates.io use? What about mirrors and other registries? What's the plan for phasing this in so that it's not a giant slap in the backward compatibility face when a project wants to bump MSRV to migrate to it? What happens if a domain or GitHub org changes owners? Is that manual? If it's manual, handled by who? How does one authenticate such a claim vs hacking/social engineering? I could probably think of more but I agree this isn't ready to be an RFC. |
Go exemplifies a particular kind of surface level bikeshedding that looks good on the surface and for first pass toy examples, but fails to see the insane non-local turmoil that is forced upon you in the inevitable need to eventually refactor a large project or try to incorporate something modified for your own uses. For example, public/private functions are differentiated by capitalizing the first letter of a function. This has elegant reasons, but assumes that you get your interfaces right the first time, and eliminates the future possibility of things like |
Well, even with this RFC I believe that the config goes in Cargo.toml anyway so that's not a concern. Worst case you just don't compile anymore, there can't be hidden internal dependencies to a module. Now that said looking at this again, to add one more thing to the problem pile, you can't rely on the org and com packages not to publish a new release. It's not sufficient to say that it's illegal to publish a package which conflicts with an item exported by those crates because those crates can change their mind tomorrow. It's also almost certainly a lot of work to make anything remote understand the current state of those crates without building them, and of course there's also all the old versions people might depend on as well. I'm not a fan of this RFC at all, to be honest, but at least as regards this part of it the only sensible thing you can do is say that it is not valid for a user to depend on both some package It's not necessary for anyone to own their own domain name either. You just need a way for a user to register some sort of namespace--if Google really is attached to this whole com.google.bla thing they can go register com_google or something. We don't currently have any namespacing at all and I don't know which of many things is the latest iteration of that, but "you own this top-level name congrats" is a much simpler solution, no need to tie it to dns. |
This needs more iteration in a pre-RFC on internals before it's ready for discussion as an RFC here. @rfcbot fcp close |
Team member @carols10cents has proposed to close this. The next step is review by the rest of the tagged team members:
No concerns currently listed. Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for info about what commands tagged team members can give me. |
It is confusing whether we are talking about a Cargo policy or a crates.io policy. If it is just for crates.io, all users are already authenticated through GitHub anyway, and I don't see why additionally using DNS helps. |
That's not particularly relevant and is one reason this RFC is underspecified. While it is the case that crates.io auths via GitHub, you may put whatever you want in the repository field including links to non-GitHub repositories and repositories you don't personally own. |
I like domains due to readability and closeness to application IDs:
Relying on GitHub organizations may be removed as part of the proposal in the future. I'm not entirely familiar with domain setup; although I had purchased one temporarily around 2015, I didn't deal with records like you said. This is an extension to the namespacing proposal, not a replacement, and I don't need to clarify anything in the PR I think. |
Rendered