Node.JS一分為二:開源專案真需要“大管家”嗎?

發表於2014-12-17

Node.js作為伺服器程式語言的後起之秀,常用來構建和執行Web應用,近日卻爆出其社群出現分裂。由於對官方運營商Joyent公司在Node.js管理上的長期不滿,多位核心開發者另立門戶,建立了分支Io.js。從GitHub得知,Io.js的第一個版本(1.0.0 alpha1版)將於2015年1月13日釋出。

Node.js開源社群組織者Mikeal Rogers也是“另立門戶”中的一員,他說:“我們不想被另外一家公司任命的管理人員牽著鼻子走,而是想讓Node.js的貢獻者擁有更多的控制權,並尋求更多的共識。”

Io.js與Node.js的分離,再一次凸顯出開源專案贊助商與其開發、維護人員及公司之間的矛盾。之前也有類似的情形,CoreOS與Docker分家繼而推出自己的容器引擎Rocket,也是因為Docker的部分社群成員認為母公司的管理偏離了原來的方向,從而導致一個新的競爭對手產生。

一般情況下,商業公司通過免費提供開源軟體,鼓勵使用者測試、改進原始碼,可以獲取鉅額利潤。然而,這樣做的結果是,很難平衡商業公司與外部開發者、使用者間不同的需求。雲端計算公司Joyent是Node程式語言的主要使用者,在滿足其自身需求的前提下,還通過Node.js的廣泛傳播和推廣獲利。這樣便陷入了一個怪圈,Joyent不可能讓每個使用者都滿意,於是便上演了前文提到的分裂。

但是問題的關鍵在於,Node分裂後是否有助於讓更多的公司和開發者來使用這款產品呢?Node.js是一個基於Chrome JavaScript執行時建立、流行、開源、跨平臺的執行時環境,這種執行時環境正在改變開發者構建新應用的模式。自五年前釋出以來,Node便深受歡迎,現在已被諸多全球知名企業在其商業產品或服務軟體中採用,包括通用電氣公司、沃爾瑪這樣的企業巨頭,以及著名社交網站LinkedIn、音樂應用Rdio、叫車軟體Uber這些科技新創企業。

分裂的背後原因

Node最初是由Ryan Dahl於2010年11月發起的開源專案,旨在用JavaScript語言構建和執行大規模網路服務及應用,而JavaScript是目前瀏覽器所使用的標準編碼語言。程式設計師之所以喜歡JavaScript語言,是因為它靈活易懂,只需使用一種語言便可實現瀏覽器與遠端伺服器之間的程式碼除錯。並且,還很適合構建需要支援眾多同時線上使用者的應用,比如線上遊戲。

而在2009年,Joynent僱用了Ryan Dahl並讓其專職負責Node.js的發展,在此同時,還獲取了Node的品牌使用權。三年後,Ryan Dahl卻走下了Node.js的專案負責崗,不久便淡出了公眾視野。【圖片3】

在此之後,Node.js開源專案繼續執行,並吸取了來自於不同公司編碼員,來一同構建這個平臺。但是在去年的一次訪談中,Mikeal Rogers提到,自從Ryan Dahl離開後,Node.js開源社群的貢獻者和Joyent釋出的更新數量都在不斷縮減,甚至都有人發郵件過來詢問這個開源專案是不是已經不存在了。

這就是Io.js團隊決定和Node分道揚鑣的主要原因。這個專案創立之初便已經參與的五位重量級開發者,Io.js分支囊括了其中四位。Joyent目前維持的Node.js版本仍起著至關重要的作用,但是Io.js的開發團隊已經計劃在2015年初發布他們自己的平臺自定義版本,將使用全新的的谷歌V8 JavaScript引擎。

另一邊,Joyent的技術長Bryan Cantril卻認為Node依然盛行,儘管其發展速度放緩。他解釋到,Joyent將重點放在如何使Node的讀取速度更快、執行更加穩定上,而非一味的去增加新特徵。並且,一定要把控社群貢獻者的質量,而不是數量。

分裂後新的起點

當然,Mikeal Rogers沒必要因為Node面臨的問題去譴責Joyent。但是,Io.js團隊堅持的理想是創造一個全新的、獨立的基礎,服務於這個開源專案,而不受任何外在公司或個人的控制。這同時也說明,Io.js團隊還未真正建立起這個基礎,因為他們仍對獲得Joyent授權使用Node.js商標報以希望。

一個全新獨立的基礎具備十分重要的意義,包括諾維NPM、NodeSource和Strongloop等許多公司,都依靠Node開源語言,並且Io.js團隊中的許多成員還受僱於這些公司。歷史上流傳最廣泛的開源專案也多數具備獨立的基礎,而不是受控於個別公司,像世界排名第一的Web伺服器軟體Apache,大資料處理平臺Hadoop,作業系統Linux等。

但是近年來,隨著商業活動中開放原始碼日益被廣泛接受,Joyent和Docker採取的這種單一公司控制模式也開始流行起來,並且有時候這種模式運轉良好。例如:大行其道的程式設計框架,Ruby on Rails,依然由它的締造者Basecamp進行管理。

Joyent通過驅動決策過程中能達成共識,進一步提高Node的相容性,並且還成立了一個諮詢委員會,吸納了許多來自公司外部的開發者。但是對於許多人來說,這個諮詢委員會來得太慢、太遲了。

相關文章