運作開源項目的一點經驗
英文原文:Thoughts on Running an Open Source Project
上周我在 PHPUK 上面講了一些關于開源項目的內容。我想把它們整理一下都記錄下來,以免忘記。也許我不太適合來給出一些這方面的建議,但這些都是我運營 joind.in 的一些真實、重要的總結。
社區(Community)
你喜歡一個項目,分享了它的代碼,并且公布了它,這就算是開源項目嗎?在我看來這不是,開源項目必須有一個社區。作為興趣,你這么做可以,但是你想要其他人也參與這個項目,事情就大不同了。
為了讓別人參與貢獻,你必須建立一些基礎設施,可以讓別人能夠順利溝通,看到項目的進展。作為項目的負責人,你需要管理這些基礎設置。 Joind.in 使用 google groups 的郵件列表,問題跟蹤系統(atlassian 為開源項目提供免費的授權)以及 IRC 頻道。我們也有一個博客,以及 推ter 賬戶來發表公開的聲明。我們使用了多個郵件列表,外聯、功能、開發。這樣就可以讓不同的人選擇自己感興趣的信息,而不會被其他信息淹沒。
如果你的項目還不是很有名,你需要通過博客,推ter,stack overflow 等各種渠道來讓人們知道它。
說明文件(README)
在項目能獲得其他人的貢獻之前,你首先要保證其他人能順利的配置你的項目。你最好在網頁,wiki,博客,以及項目中都有 README 信息,因為你不知道人們習慣從哪里看這些信息。
項目規劃(Roadmap)
有一個清晰的項目規劃是非常有用的。當用戶給你提出一些新功能的時候,你可以說“it's on the roadmap”,或者讓他們去郵件列表討論。人們也知道你們正在干什么。
貢獻代碼(Code Contributions)
這一點有點復雜。大部分的開源貢獻者只對他們感興趣的東西感興趣,其他的功能或者系統的其他部分很難引起他們的興趣。但是恰恰其他部分是系統的 關鍵部分。還有,作為項目負責人,你需要及時審核,測試,合并,部署這些貢獻的代碼。當某些貢獻不能被采納的時候,你需要告訴別人為什么,以及如何改進。
以我的經驗來看,區分真正有用的貢獻,以及一般般、沒用的貢獻是比較困難的。有可能那個貢獻者提交了代碼以后就消失了,剩下你來維護這個代碼。這個問題似乎只能靠直覺去解決。你能做的就是誠懇的對待貢獻者,說出你心里真實的想法。
透明化(Transparency)
對我來說,這是運營開源項目最重要的一點!人們能看到代碼,能看到問題列表,郵件列表,甚至持續集成服務器。我可以向人們求助,指出哪段代碼不工作。有時候,在我還沒有意識到問題的時候,就會有人跳出來指出我的錯誤。
對于和我一起工作的人來說,他們可以看到哪些“pull request”是開放的,誰評論了什么,哪些代碼在什么時候被采納了。我會提交我參與的所有分支到 githut。所以當有人問我一個功能的進度的時候,我往往直接告訴他們最新的版本號。
把項目的所有東西都拿出來給人看有點像是在熨燙一件臟衣服,讓人有點不適。但是這樣做的好處是你可以聽到各種各樣的建議。好幾次我在 推ter 上貼出了一個 bug 鏈接尋求幫助,有不少人去留言,給建議,也有人直接去測試代碼。