别惹程序员,11行代码就能让整个社区鸡飞狗跳
这个程序员叫Azer Koçulu(上图就是他在medium的头像),他出于对NPM管理层的怨愤,删除了自己在NPM上面的全部代码,其中就包含只有11行代码的“Left-pad”,没想到从中国北京到美国硅谷,从大学宿舍学习Nodejs的新手到Facebook的资深工程师,整个互联网界都炸开了锅,他们手中的许多Nodejs模块,全罢工了。
NPM是什么?
NPM(node.js package manager)是一个Node.js包管理和分发工具,NPM上面有许许多多公用的模块,都由来自世界各地的Node.js开发者贡献的,你可以把NPM理解成Node.js的App Store,只不过这些模块都是免费的。
在NPM,Node.js程序员可以分享模块,也可以根据自己需求打包模块,NPM就是我为人人,人人为我的开源社区,看起来一切都是那么美好,那么和谐。
Azer就是其中的一员,没念过大学,但靠着自学编程成为了一个高手,他的信仰就是分享和开源,并且对早期程序员的骇客之道深信不疑,那就是“程序员的友谊基础就是分享程序”,所以他本来是NPM的热情粉丝,经常为NPM贡献代码。
第一回合:Azer vs Bob Stratton
Azer贡献的模块其中之一就有个叫KIK,但是这个模块可能是功能简陋,也可能是知名度不高,反正用的人很少,没什么存在感,反正Azer就是贡献了一个这样的模块,但是巧合的是,刚好有一家公司也叫KIK(早期玩苹果 App,可能知道这是一款类似微信的社交工具,不过现在国内早就没人玩了)。
KIK 公司的专利和商标代理Bob Stratton于是发送邮件给 Azer,说你能不能重新命名你的那个程序包KIK,因为我们的KIK自己要在NPM推出程序包。
Azer拒绝了Bob Stratton,告诉他:抱歉,我开发的开源项目就叫KIK。程序员其实平时都很可爱的一群人,但是面对自己的模块和程序的时候,都是挺有脾气的,毕竟取名不应该先到先得吗?凭啥你说什么我就信什么,凭什么你要我做啥我就做啥,而且我又没做错什么,我在刚开始编写KIK模块时候并不知道有KIK这个公司。
Bob Stratton不高兴了,警告安东,如果执意这样做,那么会来找律师找上门,Azer觉得Bob Stratton说的很有道理,然后简单回复了他,F*** You,你丫别再给我发邮件。
第二回合:NPM介入
Bob Stratton看无法攻破Azer这一关,直接找到了NPM公司,不料这一招果然管用,NPM的首席执行官Isaac Schlueter同意将有争议名字归还给KIK。
Isaac Schlueter的这一举动彻底惹怒了Azer,他对NPM大失所望,没想到NPM公司是这种破玩意,保护大公司,漠视个人开发者,这简直就是对自己开源社区价值观的最大侮辱。
第三回合:Azer的复仇
愤怒难抑,Azer决定复仇,他要和NPM决裂,一下子删光了自己在NPM上面的所有代码,其中就包括流行组件“left-pad”,这个组件只有11行,功能很简单,就是在给定的字符串左边重复插入给定的字符,以达到需要的字符串长度。
这个Nodejs模块虽然简单,但是应用非常广泛,Facebook、Spotify以及Netflix等著名公司大型软件项目中都用到了Babel这个模块,而Babel这个模块又调用了“left-pad”这个模块。同时受影响的还有当今非常著名的React框架,这个框架帮助前端工程师更便捷地开发网站界面,全世界同时学习React框架的程序员可能数百万,但是突然就都不能用了。
据NPM官方博客,“left-pad”删除后,受到影响的模块达到数千个。这场意外迅速在Twitter、以及微博上炸开了锅,众多网友反应React、Babel、Ember无法使用,数小时后也有网友反映Babel已经推出了紧急修补版。
NPM社区管理员把“left-pad”这个名字从Azer手中夺了回来,重新写了一个“left-pad”函数,终于才抚平了千万程序员躁动的心。
但是这件事情造成的影响个人觉得还是蛮深远的,什么是开源精神?开源在面向大企业和个人开发者的时候如何平衡?这些是非常值得思考的。
但是绝大部分程序员虽然由于Azer的行为都忙活了一整子,但是大部分程序员都支持他,觉得他碉堡了,毕竟软件的自由关系到人类的自由。
扫一扫一键关注科技珠峰