BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

NPM中断了2.5小时

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 薛梦迪 关注 0 他的粉丝 发布于 2016年4月18日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

根据npm的创建者Isaac Z. Scheduler所述,两天前npm的注册表开始报告每分钟有数以百计的编译失败。全世界的用户都不能安装或编译特定的Node.js包。有几千个依赖包损坏,包括Babel、Atom、Ember、React Native和许多其他依赖于line-numbers而不能使用的包。发生了什么?

软件工程师Azer Koçulu是273个Node.js依赖包的作者,其中包括kikleft-pad,left-pad是一个11行的用来在左边填入字符串的方法。几周前,Kik联系了Azer。这个公司开发了一个拥有27000万用户的通信应用,并且在许多国家使用自己的名字注册了商标。他们打算用自己的名字发布一个npm包,但是发现以此命名的包已经存在。所以他们联系了Koçulu来寻求一个友善解决此问题的方法,但是他们意见没有统一。Kik公司联系了npmjs来解决这个冲突,如Dispute Resolution中详细说明。npmjs表示支持Kik,因为他们有很大数量的用户:

这个决策的首要目标是:给npm用户提供他们所希望的包。这包括了滥发、网域抢注、令人误解的包名字,还有许多例如这次的更复杂的情况。在此基础上,我们总结出,名为“kik”的包应该被Kik公司所有,并通知了双方这个决定……

考虑到两个包在竞争kik这个名字,我们相信,大量输入npm install kik的用户将会十分困惑,他们中可能会有超过20000万用户收到与通信应用没有关系的代码。

所以,npmjs决定将包名的所有权转交给Kik公司。Koçulu对结果不是很满意,他写道:

这样的情况让我感觉到NPM是某人的私人领土,在其中,公司比个人更强大,而我做开源的软件是因为[它给予]人们力量。

并且,他还决定将他所有的模块都下架,包括kik和left-pad,这是一个完全没有预料的决定,并且npmjs也没有做好准备。因为许多重要的包通过line-numbers依赖于left-pad,所以编译失败了。他们本身预期的行动是Koçulu将他的包版本0.0.3保留在注册表中,然后Kik在同一名下用一个不同的版本号加入他们自己的包,例如1.0.0。那么所有依赖于0.0.3版本的包则可以如往常一样正常运转。

为了尽快修复这个问题,npmjs决定重新发布left-pad,因为“left-pad是开源的,并且我们允许任何人使用已弃用的包名,只要他们不再使用同一个版本号”。接下来很快npm的生态系统就恢复到了正常状态。为了避免将来再发生同样的情况,npmjs决定将来将包变得更难下架,或令恶意使用已弃用的包名变得更难。但是这还留下了一些问题。

Koçulu决定停止在npmjs上发布他的工作,并且希望“开源社区能最终为NPM开设一个真正自由的环境”。他还为他的行为所造成的影响道了歉。很多人分享了他在TwitterHacker NewsReddit或其他网站上的定位。有些人渴望有一天能像Koçulu一样“破坏Internet”,但是也有一些其他人认为他的行为是不负责任的。JavaScript的生态系统脆弱吗?有人同意这个观点,其他人则举了这次的例子作为反驳,他们强调了在问题出现的时候npmjs能被修复的速度之快。有些人则质疑人们是不是忘记了如何编程。因为他们依赖于一个任何人都能在几分钟之内写出来的11行代码的包。

并且,依赖于一个独立集中式的库安全吗?有些人提出了一个分散式的模块推送系统。也许最近的事件将会促使社区做一些这方面的改变。

查看英文原文NPM was Broken for 2.5 Hours


感谢张龙对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT