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