IBM Developer 博客

通过 IBM Developer 关注最新动态并获取信息

了解 IBM 如何塑造 Node.js 社区和核心,并倾听我们对 Node 未来的展望。


自 2009 年首次发布以来,开发者下载 Node.js 的次数已达十亿次。展望未来,所有迹象都表明该运行时将不断发展,其采用范围也在日渐扩大。

自 2012 年以来,IBM 员工就参与了 Node.js 项目,贡献了数百万行代码,在社区中担任领导角色,并通过我们的参与总体上推动了项目和社区的发展。在本博客中,我们将深入探讨一下这些贡献如何助力我们取得今日的成就,以及我们对 Node 核心和社区的未来展望。

发展初期

早在 2012 年,IBM 就意识到了 Node.js 的重要性,并希望确保它在 IBM 平台(例如 POWER 和 IBM Z)上完全受支持且充分集成。我们移植了社区的现有代码,同时致力于将这些移植的代码回馈给 Node.js 和相关项目(例如 V8),将其作为 IBM SDK for Node.js 交付给我们的客户。

当我们将移植的代码回馈给社区时,我们的团队也开始更加积极地参与其他工作,帮助进行一般性问题分类和修复。这个时间段内 Node.js 的许多贡献者现在都成为了 IBM 员工,我们由此在 Node.js 发展早期留下了浓墨重彩的一笔。

弥合分裂,为成功奠定基础

2014 年末,Node.js 社区内部对于现有治理模型出现了对立意见,IBM 努力将人们团结在一起,找出一条康庄大道。IBM 对于开放治理的长期承诺使我们能够共享采用这种模型的好处和价值。

遗憾的是,尽管我们及早介入,但当时仍无法足够迅速地解决社区内部的紧张关系。Node.js 项目出现了一个分支,这个分支让 Node 生态系统面临崩溃和瓦解的威胁。

于是,IBM 加倍努力,在那些对 Node.js 未来怀有不同愿景的团队之间周旋,担任起调解人的角色。我们积极捍卫对 Node.js 项目进行开放治理带来的种种好处,展示了当不同团队齐心协力时,这种模式将如何助力他们实现特定目标。

最终,IBM 与其他主要利益相关者一起帮助建立了 Node.js 基金会。我们继续成为该基金会的白金赞助商。

结果不言而喻。自从 Node.js 项目采用了 Node.js 基金会的开放治理以来,该项目蓬勃发展。 合作者的数量急剧增加,创新和变革的步伐也在不断加快。

借助领导力和行为守则推动发展

建立了 Node.js 基金会并实现开放治理之后,公司和个人便能够再接再厉,为项目的发展方向和领导地位做出贡献。 IBM 以能够让员工做到这一点而倍感自豪。 比如,IBM 开放技术副总裁 Todd Moore 就是 Node.js 基金会的主席,而我则是 Node.js 技术指导委员会的主席。这样的例子还有更多。

目前,在技术指导委员会、社区委员会、众多工作组以及 10 个 Node.js 核心合作者中,都能够看到 IBM 员工的身影。 同样重要的是,更多的曾在 IBM 从事 Node.js 项目的 Node.js 合作者、TSC 成员和其他贡献者所做的贡献也值得重视。

从宏观或微观角度推动项目发展

IBM 员工在 Node.js 的日常开发中非常活跃,他们一直在帮助进行分类、修复和落实 Pull Request,以及回答帮助库中的问题。与此同时,我们的策略是专注于为更大型生态系统赋能的战略性计划或长期计划。

多年来,我们的贡献包括:

  • ICU 提供支持,帮助完善国际化。

  • 帮助制定社区的 长期支持(LTS) 战略,然后积极努力实施该战略。

  • 建立并贡献 CiTGM(注:“金矿中的金丝雀” ,一个冒烟测试工具,可以自动运行针对 Node.js 生态系统中各模块的单元测试,确保 Node.js 版本升级时,模块不会损坏。)作为额外的安全网,确保新版本不会破坏生态系统模块。

  • 修复在启用 FIPS 支持的情况下运行测试的方式,并努力将这些测试添加到常规 Node.js CI(持续集成)运行中。

  • 在社区 CI 中增加了夜间代码覆盖率运行,然后将数据发布到 coverage.nodejs.org,以供社区成员用来稳步提高 JavaScript 和 C++ 覆盖率。

  • 组建并领导基准测试工作组。在社区中增加了夜间基准运行,并将数据发布到 benchmarking.nodejs.org,这样我们便可以跟踪性能,避免回归缺陷并宣传日臻完善的 Node.js 性能。

  • 领导 N-API 工作,为原生模块开发者提供一个稳定的 Node API。

  • 帮助组建并领导安全工作组,确保我们拥有记录完善的安全发布流程,并确保 CVE(公共漏洞和暴露)的分派一致 。

  • 在诊断工具方面与社区积极合作。 例如,我们贡献了 node-report,并协助完成 llnode 的早期工作,帮助客户快速有效地发现并解决问题。

  • 组建程序包维护团队 来创建解决方案,解决我们的用户在依赖于生态系统中的许多关键程序包时遇到的问题。

除了为 Node.js 项目本身做出上述贡献之外,我们还致力于:

  • 让开发者在部署到 Cloud Foundry、Docker 和 Kubernetes 时更轻松地专注于他们的代码,同时获得生产部署所需的服务质量(监视、运行状况等)。观看本视频(YouTube),了解更多信息。

  • 为 Node.js 提供企业级支持,包括开源 Node.js 运行时以及 LoopBack 和 Express 之类的关键程序包。

  • 通过 Module Insights 提供了关键模块的相关数据,帮助开发者选择模块。

  • 启动 CloudNativeJS.io ,其中包括可帮助开发者通过 Docker 容器和 Kubernetes 编排来构建和部署云原生 Node.js 应用程序的资产。

  • 发布 LoopBack 4,使开发者能够快速创建 API并从其现有数据源导出数据。

展望 IBM 与 Node 的未来

如您所见,IBM 一直在与 Node.js 社区紧密合作,我们为 Node.js 社区的不断发展而激动不已。我们计划赞助开展 Node 重大活动并发表演讲,继续推动项目的采用,促进项目不断成熟。

我们将通过 Node.js 和 JS 基金会的合并继续推动开放治理,在我们看来,这将会打造一个更强大、更有活力的 JavaScript 生态系统。在此处阅读我们的想法。

本文翻译自:IBM and Node.js: A look at the past, present, and future(2018-11-30)