|
|
|
.\" Generated with Ronnjs 0.3.8
|
|
|
|
.\" http://github.com/kapouer/ronnjs/
|
|
|
|
.
|
|
|
|
.TH "NPM\-DISPUTES" "7" "September 2013" "" ""
|
|
|
|
.
|
|
|
|
.SH "NAME"
|
|
|
|
\fBnpm-disputes\fR \-\- Handling Module Name Disputes
|
|
|
|
.
|
|
|
|
.SH "SYNOPSIS"
|
|
|
|
.
|
|
|
|
.IP "1" 4
|
|
|
|
Get the author email with \fBnpm owner ls <pkgname>\fR
|
|
|
|
.
|
|
|
|
.IP "2" 4
|
|
|
|
Email the author, CC \fIi@izs\.me\fR\|\.
|
|
|
|
.
|
|
|
|
.IP "3" 4
|
|
|
|
After a few weeks, if there\'s no resolution, we\'ll sort it out\.
|
|
|
|
.
|
|
|
|
.IP "" 0
|
|
|
|
.
|
|
|
|
.P
|
|
|
|
Don\'t squat on package names\. Publish code or move out of the way\.
|
|
|
|
.
|
|
|
|
.SH "DESCRIPTION"
|
|
|
|
There sometimes arise cases where a user publishes a module, and then
|
|
|
|
later, some other user wants to use that name\. Here are some common
|
|
|
|
ways that happens (each of these is based on actual events\.)
|
|
|
|
.
|
|
|
|
.IP "1" 4
|
|
|
|
Joe writes a JavaScript module \fBfoo\fR, which is not node\-specific\.
|
|
|
|
Joe doesn\'t use node at all\. Bob wants to use \fBfoo\fR in node, so he
|
|
|
|
wraps it in an npm module\. Some time later, Joe starts using node,
|
|
|
|
and wants to take over management of his program\.
|
|
|
|
.
|
|
|
|
.IP "2" 4
|
|
|
|
Bob writes an npm module \fBfoo\fR, and publishes it\. Perhaps much
|
|
|
|
later, Joe finds a bug in \fBfoo\fR, and fixes it\. He sends a pull
|
|
|
|
request to Bob, but Bob doesn\'t have the time to deal with it,
|
|
|
|
because he has a new job and a new baby and is focused on his new
|
|
|
|
erlang project, and kind of not involved with node any more\. Joe
|
|
|
|
would like to publish a new \fBfoo\fR, but can\'t, because the name is
|
|
|
|
taken\.
|
|
|
|
.
|
|
|
|
.IP "3" 4
|
|
|
|
Bob writes a 10\-line flow\-control library, and calls it \fBfoo\fR, and
|
|
|
|
publishes it to the npm registry\. Being a simple little thing, it
|
|
|
|
never really has to be updated\. Joe works for Foo Inc, the makers
|
|
|
|
of the critically acclaimed and widely\-marketed \fBfoo\fR JavaScript
|
|
|
|
toolkit framework\. They publish it to npm as \fBfoojs\fR, but people are
|
|
|
|
routinely confused when \fBnpm install foo\fR is some different thing\.
|
|
|
|
.
|
|
|
|
.IP "4" 4
|
|
|
|
Bob writes a parser for the widely\-known \fBfoo\fR file format, because
|
|
|
|
he needs it for work\. Then, he gets a new job, and never updates the
|
|
|
|
prototype\. Later on, Joe writes a much more complete \fBfoo\fR parser,
|
|
|
|
but can\'t publish, because Bob\'s \fBfoo\fR is in the way\.
|
|
|
|
.
|
|
|
|
.IP "" 0
|
|
|
|
.
|
|
|
|
.P
|
|
|
|
The validity of Joe\'s claim in each situation can be debated\. However,
|
|
|
|
Joe\'s appropriate course of action in each case is the same\.
|
|
|
|
.
|
|
|
|
.IP "1" 4
|
|
|
|
\fBnpm owner ls foo\fR\|\. This will tell Joe the email address of the
|
|
|
|
owner (Bob)\.
|
|
|
|
.
|
|
|
|
.IP "2" 4
|
|
|
|
Joe emails Bob, explaining the situation \fBas respectfully as possible\fR,
|
|
|
|
and what he would like to do with the module name\. He adds
|
|
|
|
isaacs \fIi@izs\.me\fR to the CC list of the email\. Mention in the email
|
|
|
|
that Bob can run \fBnpm owner add joe foo\fR to add Joe as an owner of
|
|
|
|
the \fBfoo\fR package\.
|
|
|
|
.
|
|
|
|
.IP "3" 4
|
|
|
|
After a reasonable amount of time, if Bob has not responded, or if
|
|
|
|
Bob and Joe can\'t come to any sort of resolution, email isaacs \fIi@izs\.me\fR and we\'ll sort it out\. ("Reasonable" is usually about 4
|
|
|
|
weeks, but extra time is allowed around common holidays\.)
|
|
|
|
.
|
|
|
|
.IP "" 0
|
|
|
|
.
|
|
|
|
.SH "REASONING"
|
|
|
|
In almost every case so far, the parties involved have been able to reach
|
|
|
|
an amicable resolution without any major intervention\. Most people
|
|
|
|
really do want to be reasonable, and are probably not even aware that
|
|
|
|
they\'re in your way\.
|
|
|
|
.
|
|
|
|
.P
|
|
|
|
Module ecosystems are most vibrant and powerful when they are as
|
|
|
|
self\-directed as possible\. If an admin one day deletes something you
|
|
|
|
had worked on, then that is going to make most people quite upset,
|
|
|
|
regardless of the justification\. When humans solve their problems by
|
|
|
|
talking to other humans with respect, everyone has the chance to end up
|
|
|
|
feeling good about the interaction\.
|
|
|
|
.
|
|
|
|
.SH "EXCEPTIONS"
|
|
|
|
Some things are not allowed, and will be removed without discussion if
|
|
|
|
they are brought to the attention of the npm registry admins, including
|
|
|
|
but not limited to:
|
|
|
|
.
|
|
|
|
.IP "1" 4
|
|
|
|
Malware (that is, a package designed to exploit or harm the machine on
|
|
|
|
which it is installed)\.
|
|
|
|
.
|
|
|
|
.IP "2" 4
|
|
|
|
Violations of copyright or licenses (for example, cloning an
|
|
|
|
MIT\-licensed program, and then removing or changing the copyright and
|
|
|
|
license statement)\.
|
|
|
|
.
|
|
|
|
.IP "3" 4
|
|
|
|
Illegal content\.
|
|
|
|
.
|
|
|
|
.IP "4" 4
|
|
|
|
"Squatting" on a package name that you \fIplan\fR to use, but aren\'t
|
|
|
|
actually using\. Sorry, I don\'t care how great the name is, or how
|
|
|
|
perfect a fit it is for the thing that someday might happen\. If
|
|
|
|
someone wants to use it today, and you\'re just taking up space with
|
|
|
|
an empty tarball, you\'re going to be evicted\.
|
|
|
|
.
|
|
|
|
.IP "5" 4
|
|
|
|
Putting empty packages in the registry\. Packages must have SOME
|
|
|
|
functionality\. It can be silly, but it can\'t be \fInothing\fR\|\. (See
|
|
|
|
also: squatting\.)
|
|
|
|
.
|
|
|
|
.IP "6" 4
|
|
|
|
Doing weird things with the registry, like using it as your own
|
|
|
|
personal application database or otherwise putting non\-packagey
|
|
|
|
things into it\.
|
|
|
|
.
|
|
|
|
.IP "" 0
|
|
|
|
.
|
|
|
|
.P
|
|
|
|
If you see bad behavior like this, please report it right away\.
|
|
|
|
.
|
|
|
|
.SH "SEE ALSO"
|
|
|
|
.
|
|
|
|
.IP "\(bu" 4
|
|
|
|
npm help registry
|
|
|
|
.
|
|
|
|
.IP "\(bu" 4
|
|
|
|
npm help owner
|
|
|
|
.
|
|
|
|
.IP "" 0
|
|
|
|
|