来源自:http://www.techug.com/node-js-community

  几天前,一名 NPM(Node.js Package Manager)社区的贡献者 Azer Koçulu 出于对 NPM 管理层的怨愤,不声不响删除了自己在 NPM 上面的全部代码,其中就包含只有 11 行代码的“Left-pad”,没想到从中国北京到美国硅谷,从大学宿舍学习 Node.js 的新手到 Facebook 的资深工程师,整个互联网界都炸开了锅,他们手中的许多 Node.js 模块,全罢工了。

虽然 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 行,功能很简单,就是在给定的字符串左边重复插入给定的字符,以达到需要的字符串长度。

  这个 Node.js 模块虽然简单,但是应用非常广泛,下载量超过 57 万次。Facebook、Spotify 以及 Netflix 等著名公司大型软件项目中都用到了 Babel 这个模块,而 Bel 本来这个模块又调用了“left-pad”这个模块。同时受影响的还有当今非常著名的 React 框架,这个框架帮助前端工程师更便捷地开发网站界面,全世界同时学习 React 框架的程序员可能数百万,但是突然就都不能用了。据 NPM 官方博客,“left-pad”删除后,受到影响的模块达到数千个。

  这就像飞机的发动机突然掉了一颗螺丝,点火时候系统就肯定会报错,但是你却很难定位为题的出处。毕竟 Node.js 采用连环套的设计思想,你调用的模块可能调用了其他模块,其他模块也调用了自己的其他模块,一层又一层,代码量千千万,定位并修复所有的问题代码,实在工程浩大。

  这场意外迅速在 Twitter、以及微博上炸开了锅,众多网友反应 React、Babel、Ember 无法使用,数小时后也有网友反映 Babel 已经推出了紧急修补版。

  意外发生 4 个多小时后,NPM 社区管理员决定出手,把“left-pad”这个名字从 Azer Koçulu 手中夺了回来,重新写了一个“left-pad”函数,终于才抚平了千万程序员躁动的心。

  这次意外发生后,众多开发者开始怀疑 NPM 的管理能力,庞大的 Node.js 社区竟然危机四伏,今后如果有贡献者误操作或密码被盗,全世界无数的 Node.js 开发者瞬间无法工作。同时也有人开始怀疑 NPM 的设计哲学,为什么不设计官方标准库,而是把十来行,甚至只有 1 行的代码设计成独立的模块。比如有个叫 isArray 的模块,下载量达到 88 万次,其实只有 1 行代码而已。

程序员的复仇:11行代码如何让Node.js社区鸡飞狗跳的更多相关文章

  1. 深受C/C 程序员欢迎的11款IDE

    几十年过去了,C和C++作为主要的高级的程序设计语言,在全球范围内仍然广受欢迎,并牢牢占据着TIOBE编程语言排行榜前5名,应用程序和系统的开发离不开这两门语言,现在我们来总结一下近些年来,深受C/C ...

  2. 别人的双11 & 程序员的双11~

    双11,致敬所有的程序员欧巴! 愿代码的世界,只有爱,没有伤害!! ​ 点此参加阿里云双十一拼团活动:https://m.aliyun.com/act/team1111/ 阅读原文

  3. 腾讯微信支付,程序员是如何让jQuery代码付钱的

    微信支付和支付宝支付已经是我们生活中不可确实的两个金融软件了,也是必备的,小编认为小钱用微信,大钱用支付宝. 下面这个图是我们生活中用腾讯微信支付平台的最后一个页面,大家想不想知道这个页面是如果做出来 ...

  4. 程序员新人怎样在复杂代码中找 bug?

    分享下我的debug的经验 1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间. 2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经 ...

  5. (转)程序员新人怎样在复杂代码中找 bug?

    我曾经做了两年大型软件的维护工作,那个项目有10多年了,大约3000万行以上的代码,参与过开发的有数千人,代码checkout出来有大约5个GB,而且bug特别多,open的有上千,即使最高优先级的s ...

  6. alexNet--deep learning--alexNet的11行代码

    % Copyright 2016 The MathWorks, Inc. clear camera = webcam(  2  ); % Connect to the camerannet = ale ...

  7. 11慕课网《进击Node.js基础(一)》Buffer和Stream

    Buffer 用来保存原始数据 (logo.png) 以下代码读取logo.png为buffer类型 然后将buffer转化为string,新建png 可以将字符串配置: data:image/png ...

  8. 代码规范 for node.js with 'npm-coding-style'

    npm-coding-style npm's "funny" coding style Description npm's coding style is a bit unconv ...

  9. 程序员减少代码BUG的7种方法,拒绝编程5分钟,查代码2小时!

    0.别对警告视而不见 相信不少的程序员会使用IDEA,使用它敲代码,有时候会出现警告,那么这时你对警告就不能视而不见了. 我们的目标是,写干净的代码,做风一样的男子! 1.编程习惯 种瓜得瓜种豆得豆, ...

随机推荐

  1. Javascript中new Date的坑

    在一段判断是否过期的js代码中是这么写的: if (new Date() < new Date(2014, 9, 25)) { //... } 后来发现过了9月25日竟然不过期,console. ...

  2. Android相关sdk使用

      SimpleDateFormat使用详解 Android_AlertDialog 两分钟彻底让你明白Android Activity生命周期(图文)! Android布局控件之LinearLayo ...

  3. 重装Eclipse、离线安装ADT、Android SDK

    由于最新的ADT.Android SDK需要最新版本的Eclipse才能使用,我无奈的只好升级Eclipse.看看自己的Eclipse已经两年没有升级了,也是时候升级了.升级前,有很多的顾虑.因为像这 ...

  4. VR快速发展下,从业者如何把握机会?

      美国科技博客VentureBeat周末刊登赛斯·沙赫纳(Seth Schachner)的文章,分析了在虚拟现实快速发展的情况下,业内所面临的机会,以及如何把握这些机会.   沙赫纳是资深的数字战略 ...

  5. paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结

    paip.web数据绑定 下拉框的api设计 选择框 uapi  python .net java swing jsf总结 ====总结: 数据绑定下拉框,Uapi 1.最好的是默认绑定..Map(k ...

  6. Axios、Lodash、TweenJS

    Axios是一个基于promise的HTTP库 http://chuansong.me/n/394228451820 Lodash是一个JavaScript的函数工具集 http://www.css8 ...

  7. 在Eclipse中使用MAT分析Android程序内存使用状况(转)

    对于Android这种手持设备来说,通常不会带有太大的内存,而且一般用户都是长时间不重启手机,所以编写程序的时候必须要非常小心的使用内存,尽量避免有内存泄露的问题出现.通常分析程序中潜在内存泄露的问题 ...

  8. Android Studio使用小技巧:提取方法代码片段

    http://www.jb51.net/article/65510.htm 今天来给大家介绍一个非常有用的Studio Tips,有些时候我们在一个方法内部写了过多的代码,然后想要把一些代码提取出来再 ...

  9. 用Word收集网页中的内容,用文档结构图整理

    如何用Word保存网页中的内容 网页中的内容,用什么保存好? 用笔记类软件是个不错的选择,还可以用 Word 保存,这样方便用“文档结构图”来整理网页. 如图:网页收集后用文档结构图进行整理. (图一 ...

  10. angular学习资源

    angular学习资源   angularjs库: https://developers.google.com/speed/libraries/devguide?hl=zh-CN#angularjs ...