Node.js一分為二:開源項(xiàng)目真需要“大管家”嗎?
Node.js作為服務(wù)器編程語言的后起之秀,常用來構(gòu)建和運(yùn)行Web應(yīng)用,近日卻爆出其社區(qū)出現(xiàn)分裂。由于對官方運(yùn)營商Joyent公司在Node.js管理上的長期不滿,多位核心開發(fā)者另立門戶,創(chuàng)建了分支Io.js。從GitHub得知,Io.js的***個版本(1.0.0 alpha1版)將于2015年1月13日發(fā)布。
Node.js開源社區(qū)組織者M(jìn)ikeal Rogers也是“另立門戶”中的一員,他說:“我們不想被另外一家公司任命的管理人員牽著鼻子走,而是想讓Node.js的貢獻(xiàn)者擁有更多的控制權(quán),并尋求更多的共識。”
Io.js與Node.js的分離,再一次凸顯出開源項(xiàng)目贊助商與其開發(fā)、維護(hù)人員及公司之間的矛盾。之前也有類似的情形,CoreOS與Docker分家繼而推出自己的容器引擎Rocket,也是因?yàn)镈ocker的部分社區(qū)成員認(rèn)為母公司的管理偏離了原來的方向,從而導(dǎo)致一個新的競爭對手產(chǎn)生。
一般情況下,商業(yè)公司通過免費(fèi)提供開源軟件,鼓勵用戶測試、改進(jìn)源代碼,可以獲取巨額利潤。然而,這樣做的結(jié)果是,很難平衡商業(yè)公司與外部開發(fā)者、使用者間不同的需求。云計(jì)算公司Joyent是Node編程語言的主要用戶,在滿足其自身需求的前提下,還通過Node.js的廣泛傳播和推廣獲利。這樣便陷入了一個怪圈,Joyent不可能讓每個用戶都滿意,于是便上演了前文提到的分裂。
但是問題的關(guān)鍵在于,Node分裂后是否有助于讓更多的公司和開發(fā)者來使用這款產(chǎn)品呢?Node.js是一個基于Chrome JavaScript運(yùn)行時建立、流行、開源、跨平臺的運(yùn)行時環(huán)境,這種運(yùn)行時環(huán)境正在改變開發(fā)者構(gòu)建新應(yīng)用的模式。自五年前發(fā)布以來,Node便深受歡迎,現(xiàn)在已被諸多全球知名企業(yè)在其商業(yè)產(chǎn)品或服務(wù)軟件中采用,包括通用電氣公司、沃爾瑪這樣的企業(yè)巨頭,以及著名社交網(wǎng)站LinkedIn、音樂應(yīng)用Rdio、打車軟件Uber這些科技新創(chuàng)企業(yè)。
分裂的背后原因
Node最初是由Ryan Dahl于2010年11月發(fā)起的開源項(xiàng)目,旨在用JavaScript語言構(gòu)建和運(yùn)行大規(guī)模網(wǎng)絡(luò)服務(wù)及應(yīng)用,而JavaScript是目前瀏覽器所使用的標(biāo)準(zhǔn)編碼語言。程序員之所以喜歡JavaScript語言,是因?yàn)樗`活易懂,只需使用一種語言便可實(shí)現(xiàn)瀏覽器與遠(yuǎn)程服務(wù)器之間的代碼調(diào)試。并且,還很適合構(gòu)建需要支持眾多同時在線用戶的應(yīng)用,比如在線游戲。
而在2009年,Joynent雇用了Ryan Dahl并讓其專職負(fù)責(zé)Node.js的發(fā)展,在此同時,還獲取了Node的品牌使用權(quán)。三年后,Ryan Dahl卻走下了Node.js的項(xiàng)目負(fù)責(zé)崗,不久便淡出了公眾視野?!緢D片3】
在此之后,Node.js開源項(xiàng)目繼續(xù)運(yùn)行,并吸取了來自于不同公司編碼員,來一同構(gòu)建這個平臺。但是在去年的一次訪談中,Mikeal Rogers提到,自從Ryan Dahl離開后,Node.js開源社區(qū)的貢獻(xiàn)者和Joyent發(fā)布的更新數(shù)量都在不斷縮減,甚至都有人發(fā)郵件過來詢問這個開源項(xiàng)目是不是已經(jīng)不存在了。
這就是Io.js團(tuán)隊(duì)決定和Node分道揚(yáng)鑣的主要原因。這個項(xiàng)目創(chuàng)立之初便已經(jīng)參與的五位重量級開發(fā)者,Io.js分支囊括了其中四位。Joyent目前維持的Node.js版本仍起著至關(guān)重要的作用,但是Io.js的開發(fā)團(tuán)隊(duì)已經(jīng)計(jì)劃在2015年初發(fā)布他們自己的平臺自定義版本,將使用全新的的谷歌V8 JavaScript引擎。
另一邊,Joyent的***技術(shù)官Bryan Cantril卻認(rèn)為Node依然盛行,盡管其發(fā)展速度放緩。他解釋到,Joyent將重點(diǎn)放在如何使Node的讀取速度更快、運(yùn)行更加穩(wěn)定上,而非一味的去增加新特征。并且,一定要把控社區(qū)貢獻(xiàn)者的質(zhì)量,而不是數(shù)量。
分裂后新的起點(diǎn)
當(dāng)然,Mikeal Rogers沒必要因?yàn)镹ode面臨的問題去譴責(zé)Joyent。但是,Io.js團(tuán)隊(duì)堅(jiān)持的理想是創(chuàng)造一個全新的、獨(dú)立的基礎(chǔ),服務(wù)于這個開源項(xiàng)目,而不受任何外在公司或個人的控制。這同時也說明,Io.js團(tuán)隊(duì)還未真正建立起這個基礎(chǔ),因?yàn)樗麄內(nèi)詫Λ@得Joyent授權(quán)使用Node.js商標(biāo)報以希望。
一個全新獨(dú)立的基礎(chǔ)具備十分重要的意義,包括諾維NPM、NodeSource和Strongloop等許多公司,都依靠Node開源語言,并且Io.js團(tuán)隊(duì)中的許多成員還受雇于這些公司。歷史上流傳最廣泛的開源項(xiàng)目也多數(shù)具備獨(dú)立的基礎(chǔ),而不是受控于個別公司,像世界排名***的Web服務(wù)器軟件Apache,大數(shù)據(jù)處理平臺Hadoop,操作系統(tǒng)Linux等。
但是近年來,隨著商業(yè)活動中開放源碼日益被廣泛接受,Joyent和Docker采取的這種單一公司控制模式也開始流行起來,并且有時候這種模式運(yùn)轉(zhuǎn)良好。例如:大行其道的編程框架,Ruby on Rails,依然由它的***Basecamp進(jìn)行管理。
Joyent通過驅(qū)動決策過程中能達(dá)成共識,進(jìn)一步提高Node的兼容性,并且還成立了一個咨詢委員會,吸納了許多來自公司外部的開發(fā)者。但是對于許多人來說,這個咨詢委員會來得太慢、太遲了。
英文:Wired