Node.js 只是被 forked,不是被 f***ed

jopen 9年前

nodejs 分裂出另一个分支——iojs,很多人对这件事都大题小做。所以,一篇关于此事的文章甚至出现在wired上。

意料之中的是,每个人都着急忙慌的宣称nodejs的厄运来了。有“在分成两部分后,流行编码工具的未来充满疑问”这样的文章,而我个人比较喜欢“流行编码框架Node.js现在有重要分支”。

这样的反应(回应)是保守的。 首先, 让我们检查一下为什么node.js首先被forked。据我的理解, 主要的问题是Joyent动作太慢。 创建新版本慢, 接收PRs也慢, 对社区里的建议反馈也慢。

最重要的是, Joyent为什么变成这样真是不奇怪的。以前他们说 “当我们变更和添加特性时,是非常谨慎的, 添加它们需要正确的理由并能使之修复正确”。 基本上, Joyent知道他们即将站在某些大的(机会)的边缘并且他们不想把事情搞砸。 “我们最不愿意做的事情已经在Node的生态系统中通过Python 2,Python 3的解决方案被创建”。

看起来iojs团队有一个相当不同的开发模型。他们希望更快地发布,大规模的改变,新特性,社区有自由让这个项目朝着他们希望的方向发展。他们没有错。

Joyent和iojs的策略都有各自的优点。他们的做法都没有问题。

依我看来,这样做有如下可能的结果:

  • Nodejs 仍然更受欢迎,更工业化,与此同时,极端的开源用户可以选择iojs。

  • iojs 因为其作为开源软件的开发模式变得比Nodejs更好,然后Nodejs的用户开始转用iojs

  • Nodejs 和 iojs 成为同样的优秀的产品,软件工程师同时使用它们。

这些都不是糟糕的结果。这就是开源之美。iojs创造一些很棒的东西,然后nodejs可以复制这些特性。相反的情形也可能会发生。开源中存在“部 落”这种想法是愚蠢的。任何人可以在任何时候复制其他的人。不出意外的话,他们的竞争会共同提升双方软件的质量。就像是说,“等着瞧,我将会写一个比你的 自由软件更好的版本然后你可以在任何时候复制我的改进。“

现在,一些人会抱怨碎片化。我有两个观点:

  • 碎片化一直都存在着。看看现在有多少javascript的前端框架。碎片化是生态系统健康的正常现象。它意味着有很多热心的人希望能给同一平台创造更好的工具。

  • iojs特别指出它会是node和npm兼容的。这可能会消除碎片化这一问题,因为针对这两个平台开发的软件包是互相兼容的。

在iojs上发生的事情使之成为开源世界正常的一部分。 哦, 它开始是与meanio和meanjs一起,现在是我最喜欢的框架。 坏消息总是被点击, 开发者似乎特别会抓住或盯着 “X框架已死,每个人都离开了Y框架”不放。

我认为令人惊讶的是iojs在引擎的工作上能做到什么。如果他们在一个适当的技术上进行工作, 他们将没有这样的选项。与之代替的是,他们可以继续以他们的方式为软件共享一些惊讶的部分。 这是开放代码的自由。

javascript的未来看起来耀眼,闪亮,并且充满回调。我(为此)感到兴奋。