GitHub官方于 3 月 16 日正式宣布已经签署了收购npm的协议,未来将帮助npm满足快速增长的JavaScript社区的需求。众所周知,GitHub已经成为微软的子公司,微软此举或将重新获取开源社区及Web端开发的领先地位。
npm完全用JavaScript写成,最初由艾萨克·施吕特(Isaac Z. Schlueter)开发。艾萨克表示自己意识到“模块管理很糟糕”的问题,并看到了PHP的PEAR与Perl的CPAN等软件的缺点,于是编写了npm。
npm 投入微软怀抱,新马甲 GitHub 称其将永远免费
GitHub CEO 纳特·弗里德曼(Nat Friedman)发布博文称,已经签署了收购 npm 的协议。
npm 是 JavaScript 世界的一个重要组成部分。npm 团队在过去 10 年的工作,以及成千上万的开源开发者和维护者的贡献,已经使 npm 成为超过 130 万个软件包的家,每月下载 750 亿次。他们一起帮助 JavaScript 成为世界上最大的开发者生态系统。我们 GitHub 很荣幸能够成为 npm 故事里的一部分,并帮助 npm 继续扩展新功能以满足快速增长的 JavaScript 社区的需求。
对于每天使用公共 npm 镜像仓库的1200 万开发者来说,npm 永远是可用的,而且免费。交易完成后,我们的重点将是:
投资于镜像仓库基础设施和平台建设。JavaScript 生态系统规模庞大,且增长迅速。在收购完成后,公司将进行必要的投资以确保 npm 的快速、可靠和可扩展性。
提升核心体验。公司将致力于改善开发人员和维护人员的日常体验,支持在 npm v7 CLI 上已经开始的工作,并将保持免费和开源。
与社区进行交流。公司将积极参与 JavaScript 社区以获取开发人员的想法,借助他们的力量来帮助定义 npm 的未来。
npm 创始人也发文感慨,创业艰难:
早在 2009 年,在长时间没有休假之后,我辞去了我的工作,希望发现当我释放我的创造力时会发生什么。我写了一个软件包管理器。
我创建 npm 的目的是在一小群决定用 JavaScript 编写 web 服务器的书呆子中共享模块。从这个目标出发,npm 慢慢地但是稳步地发展起来,我为这个项目付出了巨大的努力,也经历了太多的资金困难。
希望继续为开源事业做贡献
自从 GitHub 在 2009 年来 yahoo 做了一篇关于 git 和社会化编程的演讲后,我就一直密切关注着 GitHub 的发展轨迹。自从我将开源作为一种生活方式的选择以来,它已经成为我生活中很重要的一部分。
当我在旧金山 GitHub 总部看到 GitHub 软件包 beta 测试版和演示版时,我记得我笨拙地脱口而出,“你为什么不试着收购我们? ”
我们对这个社区的承诺是在可预见的未来保持 npm 镜像仓库免费开放源码,并继续改进 npm CLI。在 GitHub,npm 将得到世界上最大的公司之一的额外支持和支持,该公司是世界上最大的开发者社区。
微软成代码托管和 JavaScript 两个领域终极 boss,开发者反应激烈
对于一个市值超万亿的企业来说,被很多人讨厌是再正常不过的事情。套用一句古话:如果说世界上只有两种公司,一种被人骂一种没人知道,那微软就是会被往死里骂的那种。
在欧美,很多人心目中微软的形象和“大富翁(Monoply)”游戏里的那个白胡子老财主是等同的,一副“面露和善、内心贪婪”的奸商形象。
Reddit 上一篇《Why do people hate on Microsoft so much and give Linux a pass for it's short comings?》的帖子,超过 1300 人点赞;在 Slashdot 上,《Why Does Everyone Hate Microsoft?》下有超过 1500 回复表达对微软的痛恨。
开发者是不满微软的主力军,而这些开发者中,开源界又是主力中的主力。他们担心一向“眼中只有钱”的微软,在逐步蚕食缺乏抵抗能力的开源世界。
Twitter 用户@conrmahr 的吐槽,展示了微软将 npm 收入囊中后的会发生什么:
现在,我可以编写一个部署到 Azure 的 node 应用程序,该应用程序摘要一个 linkedin 搜索 api 以在我的 xbox 仪表板上显示职位空缺,并在 GitHub 中进行版本控制。
微软,和垄断,再次挂上了钩。
当然,世界上没有无缘无故的爱,也没有无缘无故的恨。美国司法部在微软公司内部发现的一个短语,拥抱、扩展再吞并(Embrace, extend, and extinguish,最后一个词也作 exterminate,或按 extinguish 译为扑灭),曾将这个巨头的真实企图暴露在公众面前:第一步,拥抱广泛使用的技术标准、开源平台;第二步,在其中植入自己的专利和基因;第三步,将其据为己有。
让我回过头来品,再细品:微软前脚收购 GitHub,引发了一波开源界的恐慌。这次,微软没有出面,而是让 GitHub 把 npm 收了。至此,最大的开源社区是微软的;最大的 js 包管理器,也是微软的。
微软一举成为开源代码托管平台和 JavaScript 两个领域的终极 boss!有内味了,是不是?
npm 和 Node.js 的前世今生
Node.js 是目前非常火热的 Web 服务端技术,但是它的诞生经历却很奇特。
浏览器技术日进千里,而微软错失良机
众所周知,在 Netscape 设计出 JavaScript 后的短短几个月,JavaScript 事实上已经是前端开发的唯一标准。后来,微软通过 IE 击败了 Netscape 后一统桌面,结果几年时间,浏览器毫无进步。(2001 年推出的古老的 IE 6 到今天仍然有人在使用!)
微软认为 IE6 浏览器已经非常完善,几乎没有可改进之处,然后解散了 IE6 开发团队!而 Google 却认为支持现代 Web 应用的新一代浏览器才刚刚起步,尤其是浏览器负责运行 JavaScript 的引擎性能还可提升 10 倍。
先是 Mozilla 借助已壮烈牺牲的 Netscape 遗产在 2002 年推出了 Firefox 浏览器,紧接着 Apple 于 2003 年在开源的 KHTML 浏览器的基础上推出了 WebKit 内核的 Safari 浏览器,不过仅限于 Mac 平台。Google 也看中了 WebKit 内核,于是基于 WebKit 内核推出了 Chrome 浏览器。Google 认为要运行现代 Web 应用,浏览器必须有一个性能非常强劲的 JavaScript 引擎,于是 Google 自己开发了一个高性能 JavaScript 引擎,名字叫 V8,以 BSD 许可证开源。
C++太难用,Ryan Dahl 自己造了门语言 Node.js
话说有个叫 Ryan Dahl 的歪果仁,他的工作是用 C/C++写高性能 Web 服务。对于高性能,异步 IO、事件驱动是基本原则,但是用 C/C++写就太痛苦了。于是这位仁兄开始设想用高级语言开发 Web 服务。他评估了很多种高级语言,发现很多语言虽然同时提供了同步 IO 和异步 IO,但是开发人员一旦用了同步 IO,他们就再也懒得写异步 IO 了,所以,最终,Ryan 瞄向了 JavaScript。
因为 JavaScript 是单线程执行,根本不能进行同步 IO 操作,所以,JavaScript 的这一“缺陷”导致了它只能使用异步 IO。
于是在 2009 年,Ryan 正式推出了基于 JavaScript 语言和 V8 引擎的开源 Web 服务器项目,命名为 Node.js。虽然名字很土,但是,Node 第一次把 JavaScript 带入到后端服务器开发,加上世界上已经有无数的 JavaScript 开发人员,所以 Node 一下子就火了起来。
代码依赖管理混乱,我要写个包管理器
如果你开发了很多网站服务,依赖的代码越来越多,就会发现一件很麻烦的事情:去 jQuery 官网下载 jQuery;去 BootStrap 官网下载 BootStrap;去 Underscore 官网下载 Underscore……
于是有些程序员就受不鸟了,一个拥有三大美德(懒惰、急躁和傲慢)的程序员 Isaac Z. Schlueter 给出一个解决方案:用一个工具把这些代码集中到一起来管理吧!
开发者们写了大量的 Node.js 开源包,但是 Node.js 缺少一个包管理器,于是 Ryan Dahl 和 npm 的作者一拍即合、抱团取暖,最终 Node.js 内置了 npm。
随着 Node.js 的火爆,大家开始用 npm 来共享 JS 代码了,于是许多开源作者也将自己的包发布到 npm 了。把你需要的包写到 package.json 里,然后运行 npm install ,npm 就会自动帮你安装了。