I wonder why they are only preventing republishing for 24 hours. Is there a good reason to allow a package namespace to be recycled with less than, say, a week? Is it based on the assumption that the only case where it comes up is during an incident, and 24 hours is enough time to assume an incident will be resolved? I'm curious what went in to that number.
If npm packages used a Github-style "author/package" format, name collision would never be an issue again.
(That is to say, trusting that any given named package that `npm install` downloads is what you think it is is really no different that trusting `wget https://example.com/thecode.tgz`. Even if you verify that the domain hasn't switched hands, you have no guarantee that the author's pipeline wasn't compromised, or that the author didn't add malware themselves. There's a reason Debian, Red Hat et. al. put a lot of effort into ensuring integrity of their repositories.)
They have that, and many are finally starting to take advantage of it (with babel being the most prominent with their latest version)
But this doesn't completely "fix" the problem, since the exact same conflicts can still happen with the "author" name (if someone takes "google\" there are going to be some very upset californians)
Assuming no actual users are depending on packages which are literally just spam, I don't really see an issue with reusing the names of those packages.
I don't know how you gain any kind of critical mass trying to compete against a well-established registry like npmjs, though.
Although you won't get updates without asking for them - I'm not sure that's a bad thing - you can be assured that you'll either get the package you were expecting or no package at all.
> Our first action, which began immediately after the incident concluded, was to implement a 24-hour cooldown on republication of any deleted package name.
Seems like npm might want to review the policy that allows stuff like that to happen.
Even if a user violates the spam policy (which, to be clear, it seems the affected user in this case did NOT do), that hardly seems to be appropriate grounds for deleting everything the user has ever published on npm.
That is a policy that is just begging for griefing.
That's one of the things the post mentions as what they are doing.
https://en.wikipedia.org/wiki/Joe_job
> A joe job is a spamming technique that sends out unsolicited e-mails using spoofed sender data. Early joe jobs aimed at tarnishing the reputation of the apparent sender or inducing the recipients to take action against them [...]
`In the course of reviewing and acting on spam reports, an npm staffer acted on this flag without further investigating the user and removed the user and all of their packages from the registry.`
Specifically, a policy that allows removing "all of [a user's] packages" based on something related to the user rather than on the packages themselves.
Feels like there should be a disconnect between decisions made about a 'user' and those made about a 'package'.
Once the package is published, there should be an understanding that the package belongs to npm and npm's users, even if the original publisher retains some authority over it.
And if there is cause to ban a user, it should not automatically mean that packages published by the user are affected (aside from removing whatever authority the user had).
Uh... Add in the fact that staff are now trigger happy, since a single button can do a lot of damage.
Why not infinity hours? I don't get it.
I don't understand this. Why hard delete packages at all? Soft deleting feels like it would be easier and would stop people republishing with the same name.
They could also bake their warning process for dependent libraries (i.e. "this package is gone!") into the soft delete process.
I see this acknowledgement, but I cannot find where they will remedy this by putting placeholders in place of spam removals. As a concession, maybe only placeholders for spam removals of packages that are older than X days or depended on (explicitly or transitively) by X packages. Did I miss where the remedy for this spam-removed-package-reuse was in the blog post?
Explained somewhere near the bottom of the post, basic rational is that it gives them time to notice fuckups and fix them.