開源項(xiàng)目是如何被搞砸的?
譯文搞砸開源項(xiàng)目的法子有很多,要指責(zé)的地方也有很多。GitHub的一位官員則認(rèn)為,項(xiàng)目維護(hù)者和用戶都應(yīng)受到責(zé)備。
在近日一場題為《搞砸開源項(xiàng)目的99種法子》的警示性報(bào)告中,GitHub主管開源項(xiàng)目的Brandon Keepers列舉了開源項(xiàng)目因用戶或維護(hù)者采取了錯誤步驟而出岔子的無數(shù)方式。Keepers在俄勒崗州波特蘭召開的O'Reilly開源大會(OSCON)大會上作了那場報(bào)告,他列舉了如何搞砸開源項(xiàng)目的N種法子。
Keepers表示,項(xiàng)目參與者可能會干些避免給予建設(shè)性反饋之類的事件,這讓維護(hù)者頓無動機(jī)。“我們不報(bào)告錯誤,我們遇到問題后說‘這一定是我的問題……別人會報(bào)告這個(gè)問題的。’”
參與者還可能很懶,提些未經(jīng)深思熟慮的問題,或者不細(xì)讀說明文檔。Keeper表示,那樣一來,要是維護(hù)者沒有足夠迅速地回答用戶提出的問題,用戶就會沖他們發(fā)火。“我們忘了一點(diǎn),就是維護(hù)者是在閑余時(shí)間自愿做這份工作的。”
Keepers表示,反過來,至于項(xiàng)目維護(hù)者,他們會讓用戶很難“明白項(xiàng)目的用途何在”,而這會打擊用戶的信心。他們可能讓用戶甚至很難上手。“最簡單的就是我們不告訴用戶如何使用它。”相反,維護(hù)者可能覺得最懂行的用戶應(yīng)該自個(gè)能搞清楚。維護(hù)者還可能讓項(xiàng)目無法配置,或者需要過多的配置。
發(fā)行不可靠的版本以及避免公布版本路線圖也會導(dǎo)致問題。Keeper說:“眾所周知,我們其實(shí)并不喜歡規(guī)劃新軟件,不是嗎?實(shí)際上我覺得,我們許多人卻稱之為敏捷開發(fā)”,他對沒有事先規(guī)劃整個(gè)項(xiàng)目的敏捷開發(fā)方法頗有微詞。“但其實(shí),要是根本就沒有計(jì)劃,再敏捷有啥用?”
其他問題包括:因重大修正版而拖延發(fā)布版本,在次要版本中做一些破壞性變化,版本與版本之間不提供升級路徑。不提到軟件項(xiàng)目的已知局限性也是個(gè)問題。
Keepers表示,如果維護(hù)者引入模棱兩可的法律用語,沒有采用適當(dāng)?shù)拈_源許可證,還會毀了代碼的完整性。侵犯專利權(quán)、版權(quán)和商標(biāo)也是些問題。
如果維護(hù)者在項(xiàng)目還沒有準(zhǔn)備好之前吸引使用者,或者給項(xiàng)目選取令人不快或難以正確發(fā)音的名字,會搞砸項(xiàng)目的聲譽(yù)。Keepers說表示,“無法通過谷歌搜索引擎在網(wǎng)上找到的名字”也是個(gè)問題,他提到了備受關(guān)注的兩個(gè)項(xiàng)目:Rust語言和Go語言。他認(rèn)為,這些項(xiàng)目雖然很優(yōu)秀,但是很難找到關(guān)于它們的信息。Keepers表示,避免大力推銷項(xiàng)目也是個(gè)錯誤。
Keepers表示,要是施加過多的控制權(quán),忽視對項(xiàng)目的擔(dān)憂,或者對貢獻(xiàn)代碼管理不善,也會徹底打擊社區(qū)的信任。另一個(gè)障礙因素就是沒有向代碼貢獻(xiàn)者表示感謝。
另一個(gè)問題就是,維護(hù)者對網(wǎng)上討論出現(xiàn)不適當(dāng)?shù)男袨闆]有進(jìn)行制止。Keepers說:“互聯(lián)網(wǎng)其實(shí)是個(gè)可怕的地方”,許多人排斥女性和少數(shù)派,嘲笑不是以英語為母語的人。項(xiàng)目新來者也常常發(fā)現(xiàn)自己成為嘲笑的對象。
搞砸項(xiàng)目的大多數(shù)類別都是不顯眼的小問題,比如缺乏信息。雖然這些行為無傷大雅,但日積月累會破壞圍繞項(xiàng)目建立起來的社區(qū),并且讓維護(hù)者身心疲憊。Keepers強(qiáng)調(diào),維護(hù)者需要為軟件項(xiàng)目樹立好的榜樣。
原文標(biāo)題:How to ruin an open source project: Let us count the ways