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

  

  来源自: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 行代码而已。

时间: 2024-07-30 13:51:38

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

好程序员分享什么是Deno,它与Node.js的区别

Node.js的创建者Ryan Dahl花了一年半的时间研究deno,这是一个新的JavaScript运行时,可以解决Node的所有固有问题. 不要误解我的意思,Nodejs它本身就是一个很棒的服务器端JavaScript运行时,主要是因为它拥有很大的生态系统和JavaScript.然而,Node.js的创建者Ryan Dahl承认他应该考虑更多的-安全性,模块和依赖性,仅举几例. 在他的辩护中,并不是说他可以想象平台在如此短的时间内会增长多少.此外,早在2009年,JavaScript仍然是这

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

几十年过去了,C和C++作为主要的高级的程序设计语言,在全球范围内仍然广受欢迎,并牢牢占据着TIOBE编程语言排行榜前5名,应用程序和系统的开发离不开这两门语言,现在我们来总结一下近些年来,深受C/C++程序员欢迎的11款IDE: 1) eclipse Eclipse是全球最流行和最强大的一款IDE.它能够为C和C++程序员提供开源的工具和环境.初学者使用这款IDE上手会非常的容易. 特点:可免费使用的开源软件.支持Windows. Linux.Mac OS X等各种平台.支持代码的调试.编译.

程序员级别鉴定书 ----会写代码级别

线程跟进程 一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高. 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率. 线程在执行过程中跟进程有区别 线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 进程具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.

一个程序猿可以控制多少行代码

 我认为大家初看到这个题目时,一定会非常奇怪,一个程序猿可以控制多少行代码全然取决于该程序猿的能力强弱,这有什么规律可循么?事实上当这个想法突然冒出来时,我也都有些诧异. 首先介绍一下我遇到的情况,我当时正在编写一个小程序,是模拟cache工作原理的.这个程序中有一个函数集的实现文件(function.cpp),大概由20个左右的函数组成,由main.cpp中的main函数直接去调用它们.这个文件我是从头開始一点一点码起来的,開始时都非常顺利,编写代码的速度也非常平稳.可是当我的代码达到60

程序员像妹子表白专用代码

点击下载源代码 程序员像妹子表白专用代码,布布扣,bubuko.com

程序员不能只会敲代码还要会投资理财

程序员不能只会敲代码,还要会理财或者说投资. 当我们步入职场,随着我们工作经验的增长我们的薪资相应的也会快速提高,很多人可能思维上还没有改变过来,不知道如何利用自己的闲钱去保值或者增值.当然现在互联网理财发展已经比较的成熟了,大多数的人也知道用自己发的工资直接购买余额宝来赚取利息,余额宝可以说是开启了国人理财的意识.对于我们普通人来说可以有以下几种投资: XX宝比如余额宝(货币基金),收益比银行活期存款或者某些定期存款还高,风险低几乎不会损失你的本金,但是一年的收益还是不能抵抗通货膨胀: 互联网

程序员,千万不要重写代码

如果你跳槽.或刚接手一个新项目,面对看上去异常混乱的旧代码,请冷静下来,忍住推倒重写的冲动. 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来.是的,他们决不会满足于简单的增量劳动. 或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟. 但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难. 为什么你觉得旧代码异常混乱?因为读

本人工作性质已改变,不再从事全职程序员,回归登山行摄领队

本人工作性质已改变,不再从事全职程序员,回归登山行摄领队. 喜马拉雅行摄:http://www.himalaya-cross.com 个人网站:http://www.liangyichen.com

[转]为什么程序员总是写糟糕的代码?这3个原因

原文请看:为什么程序员总是写糟糕的代码?这3个原因 我最近一直在想我们作为一个行业为什么总是产出糟糕代码的原因. 1.明显原因…… 我一下子想到的最明显的原因是,有好的程序员,也有不那么好的程序员,有的人技术水平高,有的人水平却低,有人对这门技艺感兴趣,但也有的人却不愿意在工作之外学习其他. 好了,我就不深入探讨了. 那么是不是在这表层之下还有更多的问题呢?有没有导致糟糕代码的根本性原因?我觉得有必要深入探究一下. 2.低预期…… 对于这一点,众所承认的是,我们在大学中,通过自学或书籍学到的东西