2020 年 3 月 16 日,全球开源社区爆出大新闻:GitHub 宣布收购 npm 。
npm 是啥?JavaScript 世界的软件包管理器。它的体量有多大?大约有 1200 万开发人员使用,共提供了 130 万个软件包,每月下载次数达到 750 亿次。
相比 Github 的 4000 万开发人员,1 亿个托管的代码,npm 按开发者人数来看,也有超过 1/4 的规模。
具体收购的金额并没有透露。不过这两大开发者社区宣布“结婚”的方式也很特别,就是两位老大各自发了一篇博客,从中可以窥见不同的心情。
兴奋又善感
GitHub 的 CEO 纳特·弗里德曼(Nat Friedman),对于收购显然已不陌生,自 2018 年 6 月微软 75 亿美元收购 GitHub ,10 月物色纳特担任 CEO 之后,如今已快一年半。
【雷锋网注:上图为 GitHub CEO 纳特·弗里德曼】
这期间,纳特就在不停地收购和屯货,先是 Dependabot ,一款帮助开发人员监测依赖关系的工具;然后是 Pull Panda ,团队协作开发工具;再接着是 Semmle,通过社区驱动来识别安全漏洞的语义分析引擎。算到 npm ,已经是第四个标的。
当然,npm 不仅仅只是个工具,它已然是 JavaScript 这个世界最大的开发者生态系统里,最重要的组成部分。纳特承诺,对于这个每天有数百万开发人员使用的工具,npm 将始终可用且始终免费。交易完成之后,GitHub 还要加大投资,确保 npm 的快速、可靠和可扩展。[1]
有了富爸爸,从此两家变一家。Github 托管的是正在开发中的代码,npm 则是打包好的稳定代码,两者是绝配。纳特说,这涉及了开源安全这个重要的全球性问题,通过更好地集成,可以提高开源供应链的安全性,使得开发者能够跟踪从 GitHub 拉取请求到修复它的 npm 软件包版本的更改。
对于付费用户,npm 有高级版、团队版、企业版客户,而 Github 则有自己的多语言包管理器 Github Packages,今年晚些时候,两者将进行融合。
相比纳特博文,npm 创始人艾萨克·施吕特(Isaac Z. Schlueter)则发表了一篇既兴奋又善感的博客。[2]
【雷锋网注:上图为npm 创始人艾萨克·施吕特】
他回顾了 2009 年以来的创业历程,早先受到 PHP 的 PEAR、Perl 的 CPAN 的启发,艾萨克写了个包管理器共享到社区,伴随着 Node.js 的兴起,JavaScript 从前端向着服务器端演进,npm 作为默认的软件包管理器,方便开发者简化库的安装、更新和卸载,自身也逐渐壮大。
甚至在 2012 年,Node.js 的创始人瑞安·达尔(Ryan Dahl)离开,艾萨克还帮着管理了一段时间。他们两人当时都是位于旧金山的 Joyent 公司的同事。
一边上班,一边维护开源社区的确不容易。2013 年底,npm 陷入困境,社区靠捐赠无法生存,艾萨克在 2014 年成立了 npm,Inc. 公司,以支持社区和 1000 多万用户。
种子轮之后,npm 在 2015 年又融了 800 万美元的 A 轮。团队从 1 人增加到 35 人。艾萨克说,运营公司很难,钱一直不够花。
但 npm 的使命一直没变:减少 JavaScript 软件开发中的摩擦。直到 Github Packages 的 beta 版出来,艾萨克主动问 GitHub:“你为什么不尝试收购我们?”
收购完成以后,npm 将继续改进,并将成为 GitHub 这家世界上最大的开发者社区的战略资产,服务于 GitHub 消除软件开发中交易成本的使命。
JavaScript 生态
《连线》杂志评论说,微软很快会控制更多的开源软件开发生态系统。
【 雷锋网注:图片来源:Pixabay 所有者:Pexels 】
开源世界里,各种生态、工具和社区是复杂缠绕在一起的,毕竟谁都不想重新造轮子。开发人员通常将程序和开源软件包组合在一起,处理常见功能,比如验证密码或者网络通信。
npm 的客户里,既包括个人开发者,也包括 500 强企业,比如 Netflix、VISA、Adobe、salesforce 以及耐克。
只要有互联网和网站的地方,就会有 JavaScript 。它随着 Netscape 浏览器在 1995 年诞生,最终成为适合 Firefox、Chrome 等几乎所有浏览器的 Web 网站的客户端脚本语言的标准。
2008 年,Google 推出了 JavaScript 引擎 V8,采用即时编译,大大缩短了执行时间。Node.js 在 2009 年诞生,它结合了 V8 引擎,把 JavaScript 带到了服务器端的环境。
Node.js 提供了事件驱动,多条命令可以同时被运行,可用于编写高并发的程序,把 JavaScript 的易学易用和 Unix 网络编程的强大结合到了一起。
Node.js 的开源库,大多数都托管在 npm,并形成了强大的开发者生态,包括 NodeConf 等社区活动。
JavaScript 开发者可以很方便地用 npm 共享代码,把软件包发布到 npm,也很容易使用别人的开源代码,形成了一个庞大的相互依存的开源开发生态系统。
这是 JavaScript 开发人员每天需要使用的东西,每个人都希望它更加可靠、方便。
微软全家桶
天下开源是一家,如今爸爸叫微软。
在 Reddit 论坛上,各种评论也炸开了锅。[3]
有网友认为,这对于微软和开源都是双赢,微软的 Azure 可以借此提供更好的服务。微软错失了移动平台,而云计算是下一个计算平台。微软拥有 40 年吸引开发人员的记录。
而也有网友认为,手头上一半以上的开发工具箱都是微软提供的,包括 GitHub、npm、VS Code、TypeScript,一家公司垄断开发者世界并不是一件好事。
还有网友认为,对微软的负面印象时间太长,而这已经过时,微软现在是开源软件最大的贡献者,比包括谷歌、亚马逊、苹果、甲骨文、IBM 的任何一家公司都要开放得多。
引用来源:
[1] https://github.blog/2020-03-16-npm-is-joining-github/
[2] http://blog.npmjs.org/post/612764866888007680/next-phase-montage
[3] https://www.reddit.com/r/javascript/comments/fjodsi/github_acquires_npm/