Node.js 紀錄片都講了什么?我做了這些關鍵時間線的總結!
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,因為這也是我畢業后的第一份工作,至今仍是。
























