近日全球开源社群爆出大新闻:GitHub 宣布收购 npm 。npm 是什么?JavaScript 世界的软件套件管理器。它的规模有多大?大约有 1,200 万开发人员使用,共提供了 130 万个软件套件,每月下载次数达到 750 亿次。
相比 Github 的 4,000 万开发人员,1 亿个托管的程式码,npm 按开发者人数来看,也有超过四分之一的规模。
具体收购的金额并没有透露。不过这两大开发者社群宣布“结婚”的方式也很特别,就是两位老大各自发了一篇文章,从中可以窥见不同的心情。
兴奋又善感
GitHub 的 CEO 纳特·弗里德曼(Nat Friedman),对于收购显然已不陌生,自 2018 年 6 月微软 75 亿美元收购 GitHub ,10 月物色纳特担任 CEO 之后,如今已快 1 年半。
▲ GitHub CEO 纳特‧弗里德曼。(Source:微软)
这期间,纳特就在不停地收购和屯货,先是 Dependabot ,一款帮助开发人员监测依赖关系的工具;然后是 Pull Panda ,团队协作开发工具;再接着是 Semmle,透过社群驱动来辨识安全漏洞的语义分析引擎。算到 npm ,已经是第 4 个标的。
当然,npm 不仅只是个工具,它已然是 JavaScript 这个世界最大的开发者生态系统里最重要的组成部分。纳特承诺,对于这个每天有数百万开发人员使用的工具,npm 将始终可用且始终免费。交易完成之后,GitHub 还要加大投资,确保 npm 的快速、可靠和可扩展。
有了富爸爸,从此两家变一家。Github 托管的是正在开发中的程式码,npm 则是打包好的稳定程式码,两者是绝配。纳特说,这涉及了开源安全这个重要的全球性问题,透过更好地整合,可以提高开源供应链的安全性,使得开发者能够追踪从 GitHub 拉取请求到修复它的 npm 软件套件版本的更改。
对于付费用户,npm 有高级版、团队版、企业版客户,而 Github 则有自己的多语言套件管理器 Github Packages,今年晚些时候,两者将进行融合。
相比纳特博文,npm 创始人艾萨克‧施吕特(Isaac Z. Schlueter)则发表了一篇既兴奋又善感的网志。
▲ npm 创始人艾萨克‧施吕特。(Source:increment)
他回顾了 2009 年以来的创业历程,早先受到 PHP 的 PEAR、Perl 的 CPAN 的启发,艾萨克写了个套件管理器共享到社群,伴随着 Node.js 的兴起,JavaScript 从前端向服务器端演进,npm 做为默认的软件套件管理器,方便开发者简化库的安装、更新和解除安装,自身也逐渐壮大。
甚至在 2012 年,Node.js 的创始人瑞安‧达尔(Ryan Dahl)离开,艾萨克还帮忙管理了一段时间。他们两人当时都是位于旧金山的 Joyent 公司的同事。
一边上班,一边维护开源社群的确不容易。2013 年底,npm 陷入困境,社群靠捐赠无法生存,艾萨克在 2014 年成立了 npm,Inc. 公司,以支援社群和 1,000 多万用户。
种子轮之后,npm 在 2015 年又融了 800 万美元的 A 轮。团队从 1 人增加到 35 人。艾萨克说,经营公司很难,钱一直不够花。
但 npm 的使命一直没变:减少 JavaScript 软件开发中的摩擦。直到 Github Packages 的 beta 版出来,艾萨克主动问 GitHub:“你为什么不尝试收购我们?”
收购完成以后,npm 将继续改进,并将成为 GitHub 这家世界上最大的开发者社群的战略资产,服务于 GitHub 消除软件开发中交易成本的使命。
JavaScript 生态
《WIRED》杂志评论说,微软很快会控制更多的开源软件开发生态系统。
(Source:pixabay)
开源世界里,各种生态、工具和社群复杂缠绕在一起,毕竟谁都不想重新造轮子。开发人员通常将程式和开源软件套件组合在一起,处理常见功能,比如验证密码或者网络通信。
npm 的客户里,既包括个人开发者也包括 500 强企业,比如 Netflix、VISA、Adobe、salesforce 以及 Nike。
只要有网络和网站的地方,就会有 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 论坛上,各种评论也炸开了锅。
有网友认为,这对于微软和开源都是双赢,微软的 Azure 可以借此提供更好的服务。微软错失了行动平台,而云端计算是下一个计算平台。微软拥有 40 年吸引开发人员的纪录。
而也有网友认为,手头上一半以上的开发工具箱都是微软提供的,包括 GitHub、npm、VS Code、TypeScript,一家公司垄断开发者世界并不是一件好事。
还有网友认为,对微软的负面印象时间太长,而这已经过时,微软现在是开源软件最大的贡献者,比包括 Google、亚马逊、苹果、甲骨文、IBM 的任何一家公司都要开放得多。
(本文由 雷锋网 授权转载;首图来源:The GitHub Blog)