開源項目管理的成功秘訣
這篇文章是微軟 web 開發系列的一部分。感謝支持我們的伙伴們,是你們讓它成為了可能。
今天我想要從我的帖子中改變一些事情:不是去代替技術布道的話題,而是希望分享如何運行一個開源項目。
兩年多來,我的朋友 David Rousset 和我領導了Babylon.js項目。我們開始這個項目是在聽說IE11將支持 WebGL(Microsoft Edge會支持更多)之后,我們想讓人們更容易地構建 3d 場景和游戲。之后的兩年,我幾乎花費了我所有的業余時間去構建 Babylon.js,讓我成為一個簡單而強大的 Web 3d 引擎開發人員。
奇妙之旅的開始
在最初的 2 個月里,它如同夢一般:你開發著,并賦予你所有的想法以生命。它是純粹的幸福。
這一階段我稱為預賽。就像在戀愛中一樣,這是最好的時期,在把它帶入可能出現困難的嚴重境地之前。
發布是重要的。講真的。我仍然看到許多項目在開發的階段停滯多年。我知道這很艱難,但發布你的項目很有必要。
在某個時間點,你已準備妥當,或者你自認如此。
我和戴維很快就遇到了第一個挑戰:編碼這個產品是不夠的,你還需要在溝通上下功夫。我們編寫并商定了希望發布的關于 Babylon.js 的文章,想要發表的論壇,為了展示它而希望參與的事情,等等。
來自網絡開發社區的反饋是強烈的。其中一個原因是,我們與一個天才的設計師(Michel Rousseau)共事。他不止幫助我們發布了一個框架,還開發了巨量的三維場景來展示人們可以用我們的工具實現些什么。
這是第一個要訣:開發一個框架只是工作的一半。讓人們知道這個框架存在,以及為何他們應該關注它是另一半 - 更為重要的一半。
這是第二個要訣:有一個偉大的框架是不夠的。你必須提供許多例子,并專注于擁有某些非常牛逼的例子,讓開發者印象深刻,以期深入了解。
小狗綜合征
我第一次聽說這個概念是在 2012 年 dotjs 會議,源于 @fat
當你是世界上最快樂的開發者的時候,有一件奇怪的事必然會發生。它開始很是微妙,但很快就會變得更加繁瑣。用戶反饋將成為壓倒一切的要求:
-
一些用戶開始行為怪異,要求越來越多的功能,你需要堅定或說明原因,為什么你不支持或不打算支持這些功能。永遠記住,更多的功能意味著更多的工作,也意味著使用者有更多的選擇。一個用戶眼中的偉大創意會被其他人視為負擔與煩惱。
-
人們請求你修復他們的代碼,從而獨占你的時間(并阻止你完成項目上必要的工作)
-
其他人會要求你完全改變框架來解決他們的需求,無視你的愿景和你想借以實現的。
這是小狗綜合癥!這是你可愛的、每天用愛和奉獻親撫的小狗,變異成你幾乎無法控制的怪物。
這是你工作中最復雜的部分。你必須堅持你的愿景,但你也必須要遷就,來迎合用戶的需求。這時候運用你的常識!
這個階段會花很長時間,你需要溝通良好,在用戶群中尋求盟友。由這些盟友,你可以形成一個社區,帶你進入下一階段。
社區的發展
你可以擁有全宇宙最好的產品,然而如果沒有用戶,你就一無所有。這就是為什么我逼著自己遵循以下 12 條法則:
1.準備好不要在開發你的產品上花大量時間。
2.準備好在產品宣傳上花費大量時間。
3.從不遺留未解決或未回應的問題超過一個工作日。
4.從不遺留在論壇上未回應的問題超過一個工作日。
5.每天登陸論壇,展示給用戶論壇的活躍狀態(是的,在一開始這是一件累人的工作,但這很重要——沒人在空白墻上寫字)。
6.推特你在做什么。
7.有一個公開的路線圖。
8.詢問用戶關于路線圖的反饋。
9.擁有一個用戶之聲(http://babylonjs.uservoice.com/)。
10.友好待人,不要傲慢。你需要他們遠比他們需要你。
11.寄希望于一個像樣的文檔編制系統:我知道你們討厭寫文檔,但是這是你工程強制性的一部分,我們花了很多時間在http://doc.babylonjs.com/上,把它變得更漂亮,易用,以社區為導向(文檔編制本身是一項社區可參與的 Github 工程)
12.準備一個簡單的邊干邊學的方法,對我們來說這真的是重要的一點。我們創建了http://www.babylonjs-playground.com/ 使 web 開發者不用安裝任何東西就可以可以測試babylon.js。減少所有的阻力很重要。我們都很懶而你如果能夠移除全部障礙,那么你將使更多人嘗試你的框架。正如 jsfiddle,也是一個與他人分享代碼的方法甚至更簡單地提供 bug 報告。我們嘗試通過增加一款出色的工具智能感知(intellisense)切實的使編譯時更加方便。
關于論壇的題外話:我們剛開始在 GitHub 的 issues 上與用戶溝通,但結果不如普通的舊式論壇方便。我要感謝 Richard Davey(photonstorm【譯注:此為李察戴維的昵稱】)主持我們 HTML5GameDevs.com 上的論壇。
這是所有關于關注用戶的需求和問題。用戶需要能夠信任你的產品,并有維護良好的溝通渠道,賦予他們對你的產品的信心。你處理請求越快,你的用戶就越有信心。這是如何建立你的框架的聲譽的主要構件。只要你關心你的用戶,你可以用比其他工具更少的功能開始。
社區的形成
如果你做到了支持你的社區,他們會提供給你美好的禮物。某些來自社區的人會美妙并充滿說服力地開始回答其他人的問題——有的時候甚至會比你做得更好!當這第一次發生在我身上的時候,我哭了。
如果你足夠幸運,你會擁有以下三種用戶:
-
使用你的產品并問問題的普通用戶
-
使用你的產品、問問題、并且回答問題的強力用戶
-
使用你的產品、問問題、回答問題、并貢獻代碼的超級用戶
這就是你旅程的終點了。現在起用戶不需要你就能上傳代碼并做出美妙的事情。舉個例子,在Babylon.js 的最新版本中超過 40% 的新特性都是由社區產生的
現在你已經成為項目的領導人物了,你需要給予方向、目標,并且保證所有的東西都是整齊一致的。
當我現在收到來自世界各地聰明人的 pull 請求,知道他們希望做出一個更好的 3D 引擎的愿望時,我仍會感到相同的愉悅。
結語
總的來說,從一個項目領導者的視角出發看起來像這樣(圖片由我的手?榮譽出品)
更多互聯網開發的實踐
這篇文章是微軟工程師與宣傳者在實際 JavaScript 學習、開源項目開發、協同工作(包括 Microsoft Edge 和新的 EdgeHTML 渲染引擎)中所著的互聯網開發系列文章之一。
我們鼓勵你使用這里免費的工具來進行跨平臺和瀏覽器(包括 Microsof Edge)的測試。
通過工程師和開源布道者進行深入學習:
-
最佳交互性實踐 (系列):
-
喔,我可以在Mac&Linux上測試Edge&IE (Rey Bango)
-
不影響網站運行的高級JavaScript開發 (Christian Heilmann)
-
使用WebGL解放3D渲染 (David Catuhe)
-
托管網絡應用和網絡平臺革新 (Kiril Seksenov)
我們社區的開源項目:
-
vorlon.JS (跨設備遠程JavaScript測試)
-
manifoldJS (跨平臺網絡應用部署)
-
babylonJS (簡化3D作圖)
更多免費工具及即將開發的網絡應用:
-
Visual Studio Code (Mac, Linux,或者Windows平臺的輕量級代碼編輯器)
-
Visual Studio Dev Essentials (免費,基于訂閱的練習及云)
本文地址:http://www.oschina.net/translate/hints-successfully-managing-open-source-project
原文地址:http://www.sitepoint.com/hints-successfully-managing-open-source-project/