程序员的复仇:11行代码如何让Nodejs社区鸡飞狗跳

两天前,一名NPM(Nodejs Package Manager)社区的贡献者Azer Koçulu出于对NPM管理层的怨愤,不声不响删除了自己在NPM上面的全部代码,其中就包含只有11行代码的“Left-pad”,没想到从中国北京 到美国硅谷,从大学宿舍学习Nodejs的新手到Facebook的资深工程师,整个互联网界都炸开了锅,他们手中的许多Nodejs模块,全罢 工了。 虽然NPM管理员在危机发生后采用强制重新编写发布了Azer Koçulu的代码,但是这次NPM风波无疑意义深远。 要 理解NPM,首先就要知道Node.js。Node.js是基于Javascript语言的后端编程框架,开发网站用的语言,可以理解为PHP的替代品。 Node.js最明显的特征在于,除了使用Javascript语言,同时还拥有许许多多公用的模块,都由来自世界各地的开发者贡献,这些模块使用NPM 管理,NPM就有点像苹果的App商店,只不过这些模块都是免费的。 Azer Koçulu本来是NPM的热情粉丝,经常为NPM贡献代码,其中之一就有个叫Kik的模块,但是这个模块可能是功能简陋,也可能是知名度不高,反正用的人很少,没什么存在感。巧巧合的是,刚好有一家公司也叫Kik,是一款类似微信的社交工具。 Kik 公司也要在NPM社区用到Kik这个名字,于是就给Azer Koçulu发律师函,义正言辞要求他把自己的Kik换成别的,否则会有律师找上门。Azer Koçulu觉得Kik公司说的很有道理,然后拒绝了。毕竟取名不应该先到先得吗?凭啥你说什么我就信什么,凭什么你要我做啥我就做啥。而且我又没做错什 么,我在刚开始编写Kik模块时候并不知道有Kik这个公司。 Kik公司交涉失败,直接就向NPM官方投诉了,没多久,NPM社区管理员没经过Azer Koçulu本人同意,就把他在NPM上面的Kik模块的控制权交给了别人。 这下Azer Koçulu简直要爆炸了,对于NPM大失所望,没想到NPM社区是这种玩意,保护大公司,漠视个人开发者。这简直就是对自己价值观的奇耻大辱。 愤怒难抑,Azer Koçulu决定复仇,他要和NPM决裂,一下子删光了自己在NPM上面的所有代码。其中就包括流行组件“left-pad”。这个组件只有11行,功能很简单,就是在给定的字符串左边重复插入给定的字符,以达到需要的字符串长度。 这 个Nodejs模块虽然简单,但是应用非常广泛,下载量超过57万次。Facebook、Spotify以及Netflix等著名公司大型软件项目中都用 到了Babel这个模块,而Bel本来这个模块又调用了“left-pad”这个模块。同时受影响的还有当今非常著名的React框架,这个框架帮助前端 工程师更便捷地开发网站界面,全世界同时学习React框架的程序员可能数百万,但是突然就都不能用了。据NPM官方博客,“left-pad”删除后, 受到影响的模块达到数千个。 这就像飞机的发动机突然掉了一颗螺丝,点火时候系统就肯定会报错,但是你却很难定位为题的出处。毕竟 Nodejs采用连环套的设计思想,你调用的模块可能调用了其他模块,其他模块也调用了自己的其他模块,一层又一层,代码量千千万,定位并修复所有的问题 代码,实在工程浩大。 这场意外迅速在Twitter、以及微博上炸开了锅,众多网友反应React、Babel、Ember无法使用,数小时后也有网友反映Babel已经推出了紧急修补版。 以外发生4个多小时后,NPM社区管理员决定出手,把“left-pad”这个名字从Azer Koçulu手中夺了回来,重新写了一个“left-pad”函数,终于才抚平了千万程序员躁动的心。 这次意外发生后,众多开发者开始怀疑NPM的管理能力,庞大的Nodejs社区竟然危机四伏,今后如果有贡献者误操作或密码被盗,全世界无数的Nodejs 开发者瞬间无法工作。同时也有人开始怀疑NPM的设计哲学,为什么不设计官方标准库,而是把十来行,甚至只有1行的代码设计成独立的模块。比如有个叫 isArray的模块,下载量达到88万次,其实只有1行代码而已。

原文发布于微信公众号 - 我是攻城师(woshigcs)

原文发表时间:2016-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

一份超详细的「iOS 10 UI Kit」使用手册(附源文件)

前言 Apple 早先于 WWDC 2016 发表了 iOS 10,而 Sketch 也推出了第 39 版,其中包含了一系列令人兴奋的新功能;我认为这对很多有意...

3128
来自专栏java一日一条

2015 年 JavaScript 开发者调查报告

年底将至,JavaScript 开发者调查也已经结束,此次调查总共有 5000 份回复,我真的迫不及待要分享这次调查的细节,感谢所有的参与者,这是 JavaSc...

632
来自专栏大前端开发

微信小程序开发--视频教程系列

最近,微信小程序特别火,身为拥有10年前后端开发经验的我,对其也是非常的感兴趣,自学摸索了一段时间,有一些经验和体会,准备录制一些的小程序开发的教学视频,分享给...

2873
来自专栏Thinks

HTML5设计原理(上)

今天我想跟大家谈一谈HTML5的设计。主要分两个方面:一方面,当然了,就是HTML5。我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML...

1301
来自专栏钱塘大数据

20个数据可视化工具汇总,终于知道人家为啥那么牛X了

人们常说,数据是新世界的货币,而 Web 则是新世界交易的外汇局。作为消费者,我们正在在数据中漫游;处处都是数据,从食品标签,到世界卫生组织组织的报告。其结果是...

4236
来自专栏玉树芝兰

Markdown懒办法排版微信公众号文章

写微信公众号的人群里面,不乏十分勤奋者。看看他们使用的排版工具,便知道为了排版一篇文章,他们要耗费多少辛劳了。

1792
来自专栏编程

前端领域2017年有哪些变化,2018年又有怎样的期待?

以下为我在知乎问题「2017年前端有什么样变化?即将来临的2018有什么样的期待?」下的回答,稍作整理分享给大家。如有遗漏欢迎在评论中指出。原文如下: 在即将过...

32310
来自专栏ThoughtWorks

为什么要使用现代浏览器?

标题中所提及的 现代浏览器 主要指桌面浏览器也就是PC端所使用的浏览器软件,移动端(手机和平板电脑)所使用的浏览器我们暂且认为其已经属于现代浏览器范畴(虽然也有...

40311
来自专栏有趣的django

Django+xadmin打造在线教育平台(五)

代码 github下载 八、课程详情页功能的实现 8.1.课程列表  (1)配置urls MxOnline/urls中 path("course/", inc...

5946
来自专栏即时通讯技术

微信团队披露:微信界面卡死超级bug“15。。。。”的来龙去脉

(本文同步发布于:http://www.52im.net/thread-1099-1-1.html)

1391

扫码关注云+社区

领取腾讯云代金券