Node.js 纪录片都讲了什么?我做了这些关键时间线的总结!

开发 前端
2014 年 Isaac 选择离开 Joyent 公司,不是因为对 Node 感到厌倦,他认为自己需要去修复 NPM 的 BUG。在他接管 Node 的这段时间没有很好的去管理 NPM。

Node.js 的这部纪录片整体制作的很棒,观看起来剧情也很精彩,就像电影一样,中间有太多的戏剧性事件发生,你会看到 Node 的发展真是跌宕起伏,发展到今天实属不易。

本文从一些关键的时间线以文字的形式做些整理,也算是看完这个视频的一些记录(省略了很多的对话,毕竟 1 个小时的视频还是有很多内容的)。还是很强烈的推荐大家去看一遍视频版本,本视频由 Honeypot 制作并发布在 https://cult.honeypot.io/originals/node-js-the-documentary/

便于大家观看,笔者制作了中文字幕并发布在同名视频号 “编程界”。

注:中文字幕翻译版本只为交流学习目的,无任何商业行为,视频版权仍归原作者所有。

最开始的目标

一开始 Node.js 创作者 Ryan Dahl 介绍了 Node.js 最初的目标是使得开发人员仅使用异步 I/O 就可以轻松的构建出高性能的服务器,当前来看异步 I/O 已经不是什么新鲜事了,大多数语言都在支持,但在 2008 时这还是一个陌生的概念。

图片图片

大约在 Chrome 和 V8 出来的时候,Ryan 开始思考 JavaScript、非阻塞服务器和 V8 之间的关系,这可能会组成一个强大的平台。

在 2009 年像一些交互式的网站基本上不存在,当时的网站还很慢,Node.js 的第一个版本是 Ryan Dahl 在科隆(德国的一个城市)进行研究的,为此它差不多停掉了手头的其它所有事情。

npm 的创建者 Isaac Schlueter

Node.js 首次发布时,Isaac 正在雅虎工作,在 JavaScript 前端和 PHP 后端之间不断的切换,就在思考为什么 Node.js 能实现这一点。他认为 Ryan 之所以选择 JavaScript 并不是真的喜欢,而是因为它在这个场景更合适,还拥有大量的开发者社区,还有一个重点是 JavaScript 语言本身没有什么特定的 I/O 范式。

图片图片

像 Python、Lua、Perl 等这些语言,会发现在当时它们已经使用了更老式的同步 I/O 方法。

图片图片

NPM 创始人 Isaac 第一次尝试时 Node.js 的版本号是 0.0.6,再尝试之后发出感叹,感觉这更像是一个真正的 JavaScript 平台。

之后逐渐加入 Node.js 生态的开发中,创造了 Node 的包管理器 NPM,起初它只是一个很简单的 bash 脚本,从 Node 程序中来调用它。

Node 第一次引起关注

Node.js 的第一次引起大众关注是在 JSConf EU 会议上(欧洲的一个专业、非营利性的 JavaScript 社区会议),Ryan 为此提前几周都开始做起了准备,在会议上 Ryan 演示了一个类似于聊天的应用,观众可以实时链接到并聊天,在当时这是一个很令人惊讶的事情,原来还可以这样做!

这次的演讲是成功的,为 Node.js 的发展带来了很大的推动。令 Ryan 最担心的是 WIFI 会不会断掉,因为那可是 2009 年 😄

收到企业赞助

在这个阶段 Ryan 开始开始收到有企业对 Node 项目感兴趣,个人项目一直为爱发电长久下去也不是办法,为此 Ryan 也开始寻找一些资助该项目的方法。

Joyent 公司正在建立一个托管服务提供商,它们希望 Node 能在这个上面运行,这也是最开始资助 Node 的公司,为此 Ryan 也搬到了旧金山,开始全职从事 Node 开发工作。此时,Node 也得到了飞速的发展。

Bert Belder 讲述数据库迁移

Bert Belder 是早期的 Node.js 核心开发者同时也是 Libuv 的创建者。

在他们的项目中需要进行大型数据库迁移,如果说你写了很多的数据库语句,一个接着一个做,那会话费很多时间。当使用 Node 完成数据库迁移,还包括一些其它事情,这在一夜之间即可完成。

当他在体验过 Node 后,就感觉这会是编程的未来。

Joyent 收购 Node.js

第一个真正能够安装东西的 NPM 大约是在 Node 0.0.8 版本发布时出现。但似乎在 Node 的下一个版本上不起作用。

Ryan 在 Joyent 工作了大概一年的时间后,Joyent 公司找到他并提出想要收购这个项目,这样他们就可以拥有商标、拥有网站并可以完全管理 Node 项目,还可以推广他们的平台。

图片图片

最后,Ryan 选择同 Joyent 公司完成了这笔交易。

在这之后,就有用户担忧了,那 Node.js 之后会怎么样?假如 Joyent 变得邪恶了...。

NPM 的创始人 Isaac 讲到,如果真的出现不好的结果,Node 的代码还是开源的,我们可以用它的代码再重新起个名字。

Node.js 开始支持 Windows

在 2011 年时,Node 只能在 MacOS 和 Linux 上运行,不支持 Windows。

Bert Belder 参与推动了 Node 支持 Windows,在这里介绍了 select、libev、libuv 之间的关系。也就是在这时 Bert Belder 创造了 libuv(最初,貌似是 Ryan 的想法)

图片图片

Stack Overflow 上出现大量 Node.js 问题

当 Node.js 火爆后 Stack Overflow 上出现了大量 Node.js 的相关问题。

就连 .NET 社区也开始思考我们也许不该在用 .NET 来完成 Web 后端开发,也采用了 Node,还在 Stack Overflow 上创建了一个完整的社区。

Ryan 离开,Isaac 接管 Node

在 2012 年时,Ryan 表示我已经在这里工作了 3 年,这是我第一个参与时间超过 6 个月的项目。在这里也感觉到有点精疲力尽,决定离开并推荐 Isaac 接管 Node。

图片图片

Isaac 表示有点困难,毕竟 Node 是 Ryan 创建的,也没有他理解的那么深刻,他自认为自己在这方面没有 Ryan 那么权威。在成为 Node 代表后,也收到了一些负面的消息。Joyent 传递了一些信息,如下图字幕所示(可能也会存在一些关系吧...):

图片图片

TJ 加入 Node

2013 年 Isaac 表示自己要处理的事务太多,没有太多时间顾及 Node.js,此时他招了一个新成员 “TJ” 看到这个名字,Node 开发者应该很熟悉了吧!现在用的 Express、Koa 这两个项目可谓是师出同门啊,都是由他开源并发布的!

图片图片

TJ 到来后做了很多构建工具类型的项目,像早期的构建和部署 Node 的脚本(因为 Ryan 之前的做法很简单,但用户使用起来会有点麻烦...)

Isaac 离开 Joyent,TJ 接管 Node

2014 年 Isaac 选择离开 Joyent 公司,不是因为对 Node 感到厌倦,他认为自己需要去修复 NPM 的 BUG。在他接管 Node 的这段时间没有很好的去管理 NPM。

图片图片

Isaac 匆忙离开后,Node 就交给了 TJ。TJ 的技术能力是公认的没问题,但是在管理上通过纪录片的反馈来看,就像 Isaac 讲的,他没有在如何有效的运作这个项目上得到太多的指导。

图片图片

这时候 Node 的问题开始逐步放大,例如发布缓慢、Bug 太多得不到修复等等。从纪录片来看,还认为 Joyent 公司担心 Node 的一些更改对自己造成很大影响,因此,开始停止接受社区的贡献,对更新 V8 之类的事情也不再开放

Node Forward 成立和 io.js 分支出现

之所以成立 io.js 显然是大家对 Joyent 管理 Node 的不满,参与 io.js 的成员基本上都曾在 Node 上工作过。之所以叫 io.js 是因为商标的问题,这会涉及到侵权,当初 Joyent 公司从 Ryan 那里购买 Node 时,已经购买了 Node/Node.js 这个商标,尽管代码是开源的,但你不能在继续用这个名字了。

图片图片

社区的感受是 Node 已经停滞,io.js 是新的事务,所以我要用 io.js。

io.js 的成立让 Joyent 感到了压力,如果他们继续固执己见、不加入基金最后可能拥有的 Node 也会出现问题。

2015 年 Joyent 公司表示他们不再需要成为 Node 的管理者,期望 Node 能成为一个统一的项目,被大家成功的广泛使用。

图片图片

做为 Node 用户的 IBM,开始推动 Node 和 io.js 合并的方案。

最终 Node 同 io.js 进行了合并,可以看到合并时 io.js 是 v3.0.0 版本,而 Node 还停留在 v0.12.0,合并后的第一个 Node 版本是 v4.0.0。

图片图片

最后,以 Node 创始人 Ryan 的这个字幕来结束。

图片图片

这部纪录片时间线重点介绍的是 Node 2015 年及之前的事情。很有意义,笔者是从 2016 第一次听到 Node,了解到其所做的事情后,就表示 “哇!” 真的很惊讶的那种感觉,当时也是网上找教程去学习,那会还不像现在资源这么的多!2016 年那会还在读大学,也很感谢 Node,因为这也是我毕业后的第一份工作,至今仍是。

责任编辑:武晓燕 来源: 编程界
相关推荐

2014-12-22 09:39:02

BBC库克

2020-03-17 17:18:12

戴尔

2011-09-02 14:47:48

Node

2023-03-20 08:53:40

2016-05-18 10:15:25

PythonNode.js

2015-03-23 11:02:22

乔布斯苹果冷酷

2018-11-22 10:58:36

戴尔

2012-05-02 15:56:20

PHP

2013-11-01 09:34:56

Node.js技术

2015-03-10 10:59:18

Node.js开发指南基础介绍

2015-09-15 11:49:47

乔布斯苹果设计

2011-12-18 21:46:59

乔布斯

2023-08-08 11:46:36

2012-06-28 10:21:37

JavaScript

2020-05-29 15:33:28

Node.js框架JavaScript

2012-02-03 09:25:39

Node.js

2021-12-25 22:29:57

Node.js 微任务处理事件循环

2021-11-29 13:44:51

数字化

2019-05-27 15:30:44

Node.jsJavaScript前端
点赞
收藏

51CTO技术栈公众号