mirror of https://github.com/lukechilds/node.git
Ryan Dahl
13 years ago
229 changed files with 1123 additions and 463 deletions
@ -0,0 +1,84 @@ |
|||
npm-disputes(1) -- Handling Module Name Disputes |
|||
================================================ |
|||
|
|||
## SYNOPSIS |
|||
|
|||
1. Get the author email with `npm owner ls <pkgname>` |
|||
1. Email the author, CC <i@izs.me>. |
|||
2. After a few weeks, if there's no resolution, we'll sort it out. |
|||
|
|||
## 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.) |
|||
|
|||
1. Bob writes a JavaScript module `foo`, which is not node-specific. |
|||
Bob doesn't use node at all. Joe wants to use `foo` in node, so he |
|||
wraps it in an npm module. Some time later, Bob starts using node, |
|||
and wants to take over management of his program. |
|||
2. Bob writes an npm module `foo`, and publishes it. Perhaps much |
|||
later, Joe finds a bug in `foo`, 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 `foo`, but can't, because the name is |
|||
taken. |
|||
3. Bob writes a 10-line flow-control library, and calls it `foo`, 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 `foo` JavaScript |
|||
toolkit framework. They publish it to npm as `foojs`, but people are |
|||
routinely confused when `npm install foo` is some different thing. |
|||
4. Bob writes a parser for the widely-known `foo` 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 `foo` parser, |
|||
but can't publish, because Bob's `foo` is in the way. |
|||
|
|||
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. |
|||
|
|||
1. `npm owner ls foo`. This will tell Joe the email address of the |
|||
owner (Bob). |
|||
2. Joe emails Bob, explaining the situation **as respecfully as possible**, |
|||
and what he would like to do with the module name. He adds |
|||
isaacs <i@izs.me> to the CC list of the email. Mention in the email |
|||
that Bob can run `npm owner add joe foo` to add Joe as an owner of |
|||
the `foo` package. |
|||
3. 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 |
|||
<i@izs.me> and we'll sort it out. |
|||
|
|||
## 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. |
|||
|
|||
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. |
|||
|
|||
## 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: |
|||
|
|||
1. Malware (that is, a module designed to exploit or harm the machine on |
|||
which it is installed) |
|||
2. Violations of copyright or licenses (for example, cloning an |
|||
MIT-licensed program, and then removing or changing the copyright and |
|||
license statement) |
|||
3. Illegal content. |
|||
|
|||
If you see bad behavior like this, please report it right away. |
|||
|
|||
## SEE ALSO |
|||
|
|||
* npm-registry(1) |
|||
* npm-owner(1) |
@ -0,0 +1,115 @@ |
|||
<!doctype html> |
|||
<html> |
|||
<title>disputes</title> |
|||
<meta http-equiv="content-type" value="text/html;utf-8"> |
|||
<link rel="stylesheet" type="text/css" href="./style.css"> |
|||
|
|||
<body> |
|||
<div id="wrapper"> |
|||
<h1><a href="../doc/disputes.html">disputes</a></h1> <p>Handling Module Name Disputes</p> |
|||
|
|||
<h2 id="SYNOPSIS">SYNOPSIS</h2> |
|||
|
|||
<ol><li>Get the author email with <code>npm owner ls <pkgname></code></li><li>Email the author, CC <a href="mailto:i@izs.me">i@izs.me</a>.</li><li>After a few weeks, if there's no resolution, we'll sort it out.</li></ol> |
|||
|
|||
<h2 id="DESCRIPTION">DESCRIPTION</h2> |
|||
|
|||
<p>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.)</p> |
|||
|
|||
<ol><li>Bob writes a JavaScript module <code>foo</code>, which is not node-specific. |
|||
Bob doesn't use node at all. Joe wants to use <code>foo</code> in node, so he |
|||
wraps it in an npm module. Some time later, Bob starts using node, |
|||
and wants to take over management of his program.</li><li>Bob writes an npm module <code>foo</code>, and publishes it. Perhaps much |
|||
later, Joe finds a bug in <code>foo</code>, 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 <code>foo</code>, but can't, because the name is |
|||
taken.</li><li>Bob writes a 10-line flow-control library, and calls it <code>foo</code>, 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 <code>foo</code> JavaScript |
|||
toolkit framework. They publish it to npm as <code>foojs</code>, but people are |
|||
routinely confused when <code>npm install foo</code> is some different thing.</li><li>Bob writes a parser for the widely-known <code>foo</code> 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 <code>foo</code> parser, |
|||
but can't publish, because Bob's <code>foo</code> is in the way.</li></ol> |
|||
|
|||
<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.</p> |
|||
|
|||
<ol><li><code>npm owner ls foo</code>. This will tell Joe the email address of the |
|||
owner (Bob).</li><li>Joe emails Bob, explaining the situation <strong>as respecfully as possible</strong>, |
|||
and what he would like to do with the module name. He adds |
|||
isaacs <a href="mailto:i@izs.me">i@izs.me</a> to the CC list of the email. Mention in the email |
|||
that Bob can run <code>npm owner add joe foo</code> to add Joe as an owner of |
|||
the <code>foo</code> package.</li><li>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 |
|||
<a href="mailto:i@izs.me">i@izs.me</a> and we'll sort it out.</li></ol> |
|||
|
|||
<h2 id="REASONING">REASONING</h2> |
|||
|
|||
<p>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> |
|||
|
|||
<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.</p> |
|||
|
|||
<h2 id="EXCEPTIONS">EXCEPTIONS</h2> |
|||
|
|||
<p>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:</p> |
|||
|
|||
<ol><li>Malware (that is, a module designed to exploit or harm the machine on |
|||
which it is installed)</li><li>Violations of copyright or licenses (for example, cloning an |
|||
MIT-licensed program, and then removing or changing the copyright and |
|||
license statement)</li><li>Illegal content.</li></ol> |
|||
|
|||
<p>If you see bad behavior like this, please report it right away.</p> |
|||
|
|||
<h2 id="SEE-ALSO">SEE ALSO</h2> |
|||
|
|||
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul> |
|||
</div> |
|||
<p id="footer">disputes — npm@1.1.0-beta-10</p> |
|||
<script> |
|||
;(function () { |
|||
var wrapper = document.getElementById("wrapper") |
|||
var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0) |
|||
.filter(function (el) { |
|||
return el.parentNode === wrapper |
|||
&& el.tagName.match(/H[1-6]/) |
|||
&& el.id |
|||
}) |
|||
var l = 2 |
|||
, toc = document.createElement("ul") |
|||
toc.innerHTML = els.map(function (el) { |
|||
var i = el.tagName.charAt(1) |
|||
, out = "" |
|||
while (i > l) { |
|||
out += "<ul>" |
|||
l ++ |
|||
} |
|||
while (i < l) { |
|||
out += "</ul>" |
|||
l -- |
|||
} |
|||
out += "<li><a href='#" + el.id + "'>" + |
|||
( el.innerText || el.text || el.innerHTML) |
|||
+ "</a>" |
|||
return out |
|||
}).join("\n") |
|||
toc.id = "toc" |
|||
document.body.appendChild(toc) |
|||
})() |
|||
</script> |
|||
</body></html> |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue