npm 处理模块名称争议的详细解读
处理模块名称争议
本文档介绍解决与其他 npm 发布者之间的模块名称争议应采取的步骤。
它还描述了针对您认为侵犯商标的名称应采取的特殊步骤。
本文档是对《npm 行为准则》中概述的可接受行为的澄清, 本文档中的任何内容均不得与 npm 行为准则的任何方面相抵触。
TL; DR
获取作者电子邮件 npm owner ls <pkgname>
向作者发送电子邮件,CC support@npmjs.com
几周后,如果没有解决方案,我们将进行解决。
不要蹲在包名上。发布代码或退出。
说明
有时会出现以下情况:用户发布模块,然后其他用户想要使用该名称。这是一些常见的发生方式(每种方式均基于实际事件。)
-
Alice 编写了一个 JavaScript 模块 foo,该模块不是特定于节点的。爱丽丝根本不使用节点。优素福想 foo 在节点中使用,因此将其包装在 npm 模块中。一段时间后,Alice 开始使用节点,并希望接管其程序的管理。
-
Yusuf 编写一个 npm 模块 foo,并将其发布。也许很久以后,爱丽丝在中发现了一个错误 foo,并对其进行了修复。她向 Yusuf 发送了请求请求,但是 Yusuf 没有时间去处理它,因为他有一份新工作和一个新孩子,并且专注于他的新 Erlang 项目,并且不再参与节点。爱丽丝想发布一个新的 foo,但不能发布,因为该名称已被使用。
-
Yusuf 编写了一个 10 行的流控制库,并对其进行调用 foo,并将其发布到 npm 注册表中。作为一件简单的小事,它永远不需要真正更新。Alice 为 Foo Inc 工作,Foo Inc 是广受好评的 fooJavaScript 工具包框架的开发者。他们以的形式将其发布到 npm foojs,但是人们通常会感到 npm install foo 有些困惑 。
-
Yusuf 为广为人知的 foo 文件格式编写了一个解析器,因为他需要它来工作。然后,他获得了一份新工作,并且从不更新原型。后来,爱丽丝编写了一个更加完整的 foo 解析器,但由于尤苏夫(Yusuf)的 foo 阻碍而无法发布。
-
npm owner ls foo。这将告诉爱丽丝所有者的电子邮件地址(Yusuf)。
-
爱丽丝通过电子邮件向优素福(Yusuf)发送邮件,尽可能地说明这种情况,以及她想对模块名称进行的操作。她将 npm 支持人员
support@npmjs.com
添加到电子邮件的抄送列表中。电子邮件中提到 Yusuf 可以运行 npm owner add alice foo 将 Alice 添加为 foo 软件包的所有者。 -
经过一段合理的时间后,如果 Yusuf 没有回应,或者 Yusuf 和 Alice 无法解决任何问题,请发送电子邮件至
support@npmjs.com
,我们将对其进行解决。(“合理”通常至少需要 4 周。)
推理
到目前为止,几乎在所有情况下,有关各方都可以在没有任何重大干预的情况下达成友好的解决办法。大多数人确实确实想变得理性,甚至可能根本不知道他们在妨碍您。
当模块生态系统尽可能地自我指导时,它们是最活跃和强大的。如果有一天,管理员删除了您所做的工作,那么不管理由如何,这都会使大多数人感到不安。当人类通过与他人进行尊重来解决问题时,每个人都有机会最终对互动产生良好的感觉。
例外
如果引起 npm Registry 管理员注意,则某些事情是不允许的,并且将不经讨论将其删除,包括但不限于:
- 恶意软件(即旨在利用或损害安装它的计算机的软件包)。
- 侵犯版权或许可(例如,克隆 MIT 许可程序,然后删除或更改版权和许可声明)。
- 非法内容。
- “计划”您计划使用但实际上并未使用的程序包名称。抱歉,我不在乎这个名字有多好,或者有一天会发生什么事情。如果有人今天想使用它,而您只是用一个空的 tarball 占用空间,那么您将被驱逐出境。
- 将空包放入注册表中。软件包必须具有某些功能。这可能很愚蠢,但不能没有。(另请参阅:蹲。)
- 使用注册表做一些奇怪的事情,例如将其用作您自己的个人应用程序数据库,或者将非打包性内容放入其中。
- npm 行为准则禁止的其他 内容,例如可恶的语言,色情内容或骚扰。
如果您发现此类不良行为,请立即将其报告给abuse@npmjs.com
。永远不要期望您自己解决滥用行为。我们在这里为您提供帮助。
商标
如果您认为其他 npm 发布者侵犯了您的商标,例如使用一个令人困惑的相似软件包名称,请在https://www.npmjs.com/
上通过电子邮件发送滥用@npmjs.com
和该软件包或用户帐户的链接。附上您的商标注册证书的副本。
如果我们发现程序包的发布者有意在未经许可的情况下滥用您的注册商标来误导他人,我们将把程序包名称转让给您。否则,我们将与程序包发布者联系,并要求他们清除对其程序包 README 文件或元数据所做的任何更改。
变更
这是一份实时文档,可能会不时更新。请参考本文档的 git 历史记录 以查看更改。