天天看點

Node.js 是如何建立開源社群模式的

建立一門新的程式設計語言或者是一個平台很少時候是相安無事的,多數時候都是在挑戰各式各樣的困難。這裡要講述的就是一個典型的例子,即圍繞 node.js 平台的社群建設一路走過來的經驗。node.js 是可以讓人們使用 javascript 語言來建立後端服務的平台,而且其本身實作了很多“子產品”來掌管核心的功能。node.js 的子產品使用 api 的設計進而來降低撰寫服務端應用的複雜性,npm 是 node.js 的軟體包生态系統,是目前世界上最大的開源類庫生态系統。

目前有50億的已連接配接裝置,而且在接下來的幾年還會有極大的增長,無論是現在已經連接配接上的還是未來即将連接配接的,這些裝置都是非常重要的,而且很多公司-包括 ibm、三星、intel、以及微軟-均視 api 是這些連接配接的裝置的關鍵以及 node.js 是連接配接它們之間的粘合劑。

來自 readwrite 的cate lawrence 最近在參加 linux 基金會協作峰會上和 node.js 的核心成員進行了一些溝通,并分享了這些核心成員在社群經曆了這麼多之後的一些心得和經驗。

Node.js 是如何建立開源社群模式的

關于 node.js 曆史的簡短介紹

node.js 是在 2009年5月份建立的,是屬于典型的 git 和 github 時代最初孕育的項目。另外需要先說明一點,那就是回顧 node.js 的曆史,并不是僅僅為了給大家回味,而是想找到在 node.js 發展到今天作為一個大型的開源社群對于處理内部沖突發展到如此地步的源頭。 幾年前,node.js 還隻有很少的幾名送出者的(貢獻者以寫模式通路倉庫是為了合并代碼和修複 bug)。随着項目的擴大,在管理結構上以及最初的這些成員的個性各異,漸漸的開始出現問題了。具體的表現就是少數的幾個送出者來維護龐大的代碼送出越來越力不從心,而且開始有一些開發者不再貢獻了,這其中包括核心送出者和外圍的貢獻者。這也直接導緻的後果就是釋出漸漸跟不上步伐了。

james snell ,是項目的早期貢獻者,現在就職于 ibm,是該公司 node.js 的技術上司,同時也是 node.js 社群的核心技術指導委員會的成員之一,說道:

開發者在想作出改變時,并不會受到鼓勵。這就會讓開發者們失去動力,進而遠離社群。創新也随着就會下降,開發者覺得不值得在此項目上投入時間和精力。

通過“開放”開源來進行改變

為了應對這些挑戰和相應的沖突治理,在2014年12月,fedor indutny 啟動了 io.js,一個 node.js 的分支。與 node.js 不同的地方是,io.js 的作者計劃要保持能跟上 google v8 javascript 引擎的最新版本。io.js 不同于原來的地方在于貫徹了 do-ocracy 運動的操作原則。do-ocracy 運動是一種組織架構,它是指為人們自己分開了選擇角色和任務,然後去執行。幹工作的人和責任挂勾,而不是選舉或標明官員。snell 進一步透露:

"通過開放貢獻的流程,我們算是将平台穩定下來了。"他接着解釋說社群成員貢獻的代碼,社群或文檔中定義的參與決策,是“任何人所發出的請求,都是一視同仁的。”

在 io.js 剛剛成立的前幾個月,就吸引了比整個 node.js 曆史上都多的活躍開發者。

在 2015年2月,旨在保持中立的 node.js 基金會成立了。在2015年6月,node.js 和 io.js 社群投票通過,将統一在 node.js 基金會下開展工作。node.js 版本0.12 和 io.js 版本3.3 合并為 node 4.0,此次合并還引入了 v8 的特性到 node.js,而且作了長期支援的釋出周期。

在新的道路上前行

node.js 基金會的治理,平等的分開為兩個實體:一個是商務委員會,負責商務、市場和法律方面的事務;另外一個是技術指導委員會,負責代碼開發、測試、內建、以及工作組和項目。

snell 解釋道:

"擁有一個治理結構能夠讓決策更加的清晰,從根本上解決突顯個性的問題。"

snell 進一步強調,這樣還能夠為開發者驅動創新留下空間。

我們的路線圖是開發者和貢獻者自己願意做的,這一點也在送出的曆史上有表現。

Node.js 是如何建立開源社群模式的

今天的 node.js 項目已經劃分為多個元件,全部的組織規模已經超過400人。node.js 核心已有超過50人的送出者,和100多人的貢獻者。mikeal rogers(mikeal rogers 是 node.js 基金會現任的社群經理。)解釋了此次創新是對基金會之外的領域的一個擴充。

"我們剛剛開始分析我們現在的開源開發者們都是誰,我們嘗試着去盡量滿足更多的普通使用者,并學習如何将這些使用者轉化為參與者。其實人們并不希望自己成為一個被動的消費者。我們将盡力的去為大家掃清參與的障礙!"

基金會的 技術指導委員會 監督着很多的其他團隊,包括包容工作組。他們已經推出了切實可行的方法,如對于時區的規定的包容。rogers 進一步解釋了時區的例子:“pull request 必須等夠36個小時以確定其它時區的貢獻者們稽核過。”

rogers 談道:“随着項目的成熟,開始有了頭重腳輕的趨勢,而且對于品質控制的分級要求過分,這些都得通過流程來應對。我們使用流程來增加透明度,鼓勵參與。不斷增加的代碼稽核池也導緻更好的品質控制。更多的人就意味着更多的稽核、更多的檢查,以及更佳的制衡。我們還重組了核心組,将之分成幾個工作組,進而避免日益嚴重的頭重腳輕現象。”

社群的增長不僅展現在引起了人們的興趣,還表現為送出者的增多。node.js 很好的示範了開放的貢獻和參與式的治理就是開源開發的未來!而且一直在擴張,包括我們正在寫這篇文章的時候,node.js 為社群建立了值得人們去努力追尋的方向!

Node.js 是如何建立開源社群模式的

繼續閱讀