NPM silently suspends package adoption
twitter.com
twitter.com
If a package transfer does need to occur, then the only method to do so should be the owner doing it. The registry itself shouldn't have the ability.
This might be fighting fire with napalm. Namesquatting is very much a thing, and if every new package registry finds itself with millions of common names registered on day 1 those registries are going to become a lot less useful. This is also going to encourage a lot of bottom feeders to get money just to go away.Package registries should instead consider all parties' (including greedy and unscrupulous third parties) motives, and try to come up with some scheme to make sure this process works.
Having a single level for naming is just asking for trouble. Between valid name collisions and invalid name squatting, it becomes a much harder problem than necessary.
See e.g. Rust, where the idea of hierarchical crate namespaces has been politely but firmly shot down every time it's been requested.
Java 99% solved this decades ago.
But still makes it easier to verify that you're installing the package you intended.
And makes it very hard to deliver typo vulns or squat the "good" names.
> It's less difficult (though still far from easy) to handle name squatting on organization/corporate names as qualifiers for packages than to try and prevent name squatting on package names.
I do think Rust will get some form of namespaces, but it'll be quite a bit less powerful than what most proponents of namespaces want. There's been a bit of a disagreement (IIRC) about what a namespace signifies (would signify) in the Rust ecosystem.
Edit: I will say, it has been quite the contentious and has been re-hashed ad-naseum. For anyone interested in reliving arguments, search for "namespace" on https://internals.rust-lang.org - There will be a good half-dozen results to read through, though there is a fair bit of re-hashing and talking past each other.
https://central.sonatype.org/publish/requirements/coordinate...
And if you say just use GitHub user names, you're merely relying on GitHub's support staff to sort it out for you (they're not magic, they have the same problem).
use domains? like java does for over 20 years?
Deno Goals: Simplify the module system
- No attempt at compatibility with existing Node modules.
- Imports are relative or absolute URLs ONLY. (See Semantic Versioning)
- Imports must provide an extension.
- Remote URLs are fetched and cached indefinitely on the first load. Only if the --reload flag is provided will the resource be fetched again.
- Vendoring can be done by specifying a non-default cache dir.
https://tinyclouds.org/jsconf2018.pdfEven Sun went away and left nothing but a bunch of legacy package names.
The same way that Java packaging is nothing but a big fight over who owns "com.*"?
Domains are not that great for project identifiers. Domain ownership is not permanent, but project identifiers should be.
I tend to agree. But the fact remains that you don't see fights over namespacing in Java even though everyone uses the same top-level space. I can't see how the claim "you still have the squatting problem of the top-level names. It's just now a fight over who owns `oracle/*`" holds any water.
> Domain ownership is not permanent, but project identifiers should be.
Package names aren't actually linked to domain ownership. There's nothing stopping me from releasing software under com.oracle.
So we're back to fighting who owns "com.oracle"?
It seems like no matter the approach taken to validating namespace ownership there's some drawback.
Avoiding accidental collisions just isn't the same problem as validating a potentially fraudulent claim of identity. Namespacing solves the first problem; it's not intended to address the second, and doesn't.
I think (verified) domains are the way to go, with some small whitelist of 'identity providers', so you could use say com.github.ojford, verifying it by logging in with GitHub OAuth rather than DNS record.
Who cares if they have to install oracle or @oracle/client?
I went ahead and wrote a whole article on the topic, including my tips to identifying what kind of packages were ideal for a polite request, which is always preferred to a hostile takeover like in this twitter thread IMHO:
https://francisco.io/blog/getting-a-great-npm-name/
I'm sad to see npm giving up on these, because in the 10+ years it has existed there is definitely space for squatting and greatly named abandoned packages.
I seriously wonder what goes on at npm. They seem very active in achieving absolutely nothing.
If I trawl through my own comments I can find several discussions of similar mishaps and problems.
Package management is hard, but you don't hear about pacman or pypi or RubyGems or NuGet having these kinds of problems. What gives?
I can't tell from this Twitter thread lacking nuance if there was a support rep screwup, if the package owner had bad contact info on the package, or what exactly happened.
- having npm contact the user
- placing the package in a no-owner (and deprecated) state for a while
From the instructions it seems that you can just contact npm and say "I emailed the owner 3 months ago, got no answer" and have it within a few hours.I'm also sad to see this process go because I used it at least once before.