成功運(yùn)作一個(gè)開源項(xiàng)目的15個(gè)要點(diǎn)
運(yùn)作開源項(xiàng)目很容易。所有你需要做的就是讓你的源代碼可用和開源,對(duì)吧?嗯,也許。其實(shí),開源項(xiàng)目是否成功取決于你對(duì)項(xiàng)目成功的定義。且不論你是怎么定義的,創(chuàng)建開源項(xiàng)目需要大量的工作。如果你已經(jīng)有了目標(biāo),那么你需要準(zhǔn)備投資。雖然開源軟件是免費(fèi)的,但它的創(chuàng)作卻不是免費(fèi)的:你需要往項(xiàng)目中投入時(shí)間和精力等寶貴資源。
那么,你如何投資這些資源?
1、定義成功
在考慮運(yùn)作開源項(xiàng)目之前,你需要明確定義成功的意義。這里有很多因素要考慮。只將代碼放入可公開訪問的存儲(chǔ)庫就可以了,還是說你想對(duì)你的項(xiàng)目做更多?合作與采用對(duì)你來說重要嗎?你只是為了打造作為一名軟件開發(fā)者的聲譽(yù)嗎?你對(duì)成功的定義是否包括長(zhǎng)期的可行性?你想圍繞這個(gè)項(xiàng)目發(fā)展一個(gè)社區(qū)嗎?你關(guān)心商業(yè)采用嗎?你對(duì)這些問題的回答可以幫助你確定接下來你需要采納的建議有多少。
2、透明
這一點(diǎn)很容易理解:我們要使得社區(qū)可以觀察和了解你正在做的事情:使用易于查找的可公開訪問的源代碼存儲(chǔ)庫,使用面向公眾的問題跟蹤軟件,在社區(qū)可以找到的地方公布發(fā)布計(jì)劃,以及在公共論壇捕獲會(huì)議記錄(例如歸檔郵件列表)。
3、開放
對(duì)于很多開源項(xiàng)目來說,“透明度”和“開放性”意味著同一件事,但其實(shí)這兩個(gè)術(shù)語的含義截然不同。開放不僅僅指的是“一目了然”(這與透明本質(zhì)上是一樣的)。對(duì)于許多人來說,開源的“開放”意味著開放新思想,或開放參與。參與開源項(xiàng)目的規(guī)則對(duì)于每個(gè)人應(yīng)該是一樣的(“公平的競(jìng)爭(zhēng)環(huán)境”):僅僅接受幾個(gè)補(bǔ)丁是不夠的,你必須對(duì)新的思路點(diǎn)子開放??傊惚仨氃试S別人參與你的項(xiàng)目,放棄對(duì)項(xiàng)目的絕對(duì)控制。
4、保持“公平的競(jìng)爭(zhēng)環(huán)境”
這并不一定意味著你必須讓任何人加入項(xiàng)目,而是要確保每個(gè)人適用同樣的規(guī)則(環(huán)境可能是公平的,因此你需要用自己的方法勝出)。英才制度意味著你需要用自己的方式脫穎而出。有些項(xiàng)目實(shí)施英才制度,例如,在邀請(qǐng)開發(fā)者加入項(xiàng)目團(tuán)隊(duì)之前,通過要求他們作出一些貢獻(xiàn),以表明他們了解項(xiàng)目的代碼、規(guī)則和文化。確保增加新的開發(fā)人員到項(xiàng)目中的過程是眾所周知的,并且這些流程是透明的(例如公開投票)。
5、供應(yīng)商中立
為了實(shí)現(xiàn)真正的開放,開發(fā)者需要大家認(rèn)可他們的貢獻(xiàn)。如果項(xiàng)目是供應(yīng)商中立的,那么這更容易實(shí)現(xiàn)。供應(yīng)商中立的項(xiàng)目不由任何組織或機(jī)構(gòu)主導(dǎo);英才制度應(yīng)以個(gè)人的貢獻(xiàn)為基礎(chǔ),不能基于任何特定組織的目標(biāo)或招聘方法。在供應(yīng)商中立的基礎(chǔ)上托管是實(shí)現(xiàn)此目標(biāo)的一種方式。
6、有良好的定義和文件標(biāo)準(zhǔn)
文檔化項(xiàng)目的代碼格式規(guī)則(使代碼格式化預(yù)設(shè)易于訪問),對(duì)測(cè)試覆蓋面、開發(fā)方法、軟件和所需工具的期望,與項(xiàng)目團(tuán)隊(duì)聯(lián)系的渠道以及針對(duì)潛在貢獻(xiàn)者的其他重要信息。抓取所有這些信息,使其盡可能容易被發(fā)現(xiàn)。在項(xiàng)目源代碼存儲(chǔ)庫的根目錄中包含一個(gè)貢獻(xiàn)指南是一個(gè)很好的做法(通過DVCS,潛在的貢獻(xiàn)者將找到存儲(chǔ)庫副本的副本;存儲(chǔ)庫中的貢獻(xiàn)指南可以讓潛在的貢獻(xiàn)者輕松找對(duì)致力于項(xiàng)目的途徑)。
7、確保項(xiàng)目代碼始終可構(gòu)建
項(xiàng)目代碼包含構(gòu)建腳本和說明。使其盡可能容易地構(gòu)建成功和測(cè)試項(xiàng)目代碼。
8、與用戶社區(qū)聯(lián)系
用戶社區(qū)是使用開源項(xiàng)目產(chǎn)品的一群人。用戶社區(qū)很少直接向項(xiàng)目代碼貢獻(xiàn)任何東西,但卻往往會(huì)提出很多問題。確保這些問題得到回答。健康的用戶社區(qū)可以為采用者社區(qū)提供信息。
9、與采用者社區(qū)聯(lián)系
開源項(xiàng)目取得成功的一個(gè)明顯跡象是,其他組織開始在他們自己的產(chǎn)品中使用或構(gòu)建擴(kuò)展你的開源項(xiàng)目。此社區(qū)更有意愿反饋項(xiàng)目,這將是項(xiàng)目***的貢獻(xiàn)來源。有些貢獻(xiàn)者甚至將是加入項(xiàng)目團(tuán)隊(duì)的***候選人。開發(fā)采用者和擴(kuò)展者的生態(tài)系統(tǒng)是延長(zhǎng)項(xiàng)目使用壽命的好方法。
10、與開發(fā)社區(qū)聯(lián)系
開發(fā)社區(qū)由項(xiàng)目團(tuán)隊(duì)成員和貢獻(xiàn)者組成。為社區(qū)內(nèi)的溝通提供眾所周知的渠道。明確的溝通渠道將有助于開發(fā)人員的合作。
11、有計(jì)劃
很容易就會(huì)陷入只專注軟件開發(fā)的模式,但和任何進(jìn)程(特別是軟件開發(fā)過程)一樣,有些***的方法至關(guān)重要。確保你的項(xiàng)目采用開發(fā)方法,并且有人擁有該流程(例如項(xiàng)目負(fù)責(zé)人)。制定計(jì)劃可以幫助開發(fā)人員知道他們?cè)谀睦锟梢载暙I(xiàn)***的價(jià)值,并使采納者和擴(kuò)展者更容易實(shí)現(xiàn)他們自己的計(jì)劃(從而取得成功)。像對(duì)待任何其他軟件開發(fā)項(xiàng)目一樣地對(duì)待你的開源項(xiàng)目。
12、管理品牌
你的項(xiàng)目將有一個(gè)品牌。項(xiàng)目的名稱是其身份;項(xiàng)目logo以及任何產(chǎn)品的名稱也是如此(開源項(xiàng)目的產(chǎn)品通常與項(xiàng)目共享名稱,但有些項(xiàng)目會(huì)生產(chǎn)多個(gè)產(chǎn)品)。聲明項(xiàng)目的品牌為商標(biāo),并考慮注冊(cè)商標(biāo)。制定商標(biāo)使用指南,以便采用者知道如何使用此品牌。這是一個(gè)與開源軟件基金會(huì)合作可以增值的領(lǐng)域?;饡?huì)可以代表社區(qū)持有和捍衛(wèi)項(xiàng)目的商標(biāo)。這可以避免任何特定的個(gè)人或組織劫持開源項(xiàng)目的名稱。
13、管理知識(shí)產(chǎn)權(quán)和版權(quán)
為項(xiàng)目作出貢獻(xiàn)的代碼、文檔和其他工件都是知識(shí)產(chǎn)權(quán)。誰是這些知識(shí)產(chǎn)權(quán)的擁有者呢?作者保留所有權(quán)還是指派給了另一個(gè)實(shí)體?確保所有的貢獻(xiàn)者理解貢獻(xiàn)者的權(quán)利和責(zé)任??紤]讓貢獻(xiàn)者簽署開發(fā)者原產(chǎn)地證書(DCO)或貢獻(xiàn)者許可證協(xié)議(CLA)。確保版權(quán)聲明包含在源代碼和通知中。
請(qǐng)注意,項(xiàng)目本身不可能作為持有版權(quán)的法律實(shí)體。這是另一個(gè)開源基金會(huì)可以提供有價(jià)值的服務(wù)的地方。
14、選擇OSI認(rèn)可的開源許可證
不要?jiǎng)?chuàng)建你自己的自定義許可證;這將為任何想要使用你代碼的人增加法律障礙。確保你選擇的許可證與你打算使用代碼的方式兼容。此外,請(qǐng)確保許可證與你的項(xiàng)目代碼所需的任何第三方內(nèi)容(例如庫)兼容。在所有源文件的標(biāo)題中包含許可證的SPDX代碼。
15、將項(xiàng)目移到開源基金會(huì)
前面已經(jīng)提到過幾次基金會(huì)。基金會(huì)首先可以幫助你保持項(xiàng)目供應(yīng)商中立,這將有助于采用:開源軟件的魅力大多是因?yàn)椴捎谜呖梢员苊獗荒硞€(gè)特定組織所關(guān)注?;饡?huì)可以堅(jiān)持和保衛(wèi)項(xiàng)目的商標(biāo),建立治理模式,幫助你管理品牌,提供知識(shí)產(chǎn)權(quán)管理服務(wù),并為運(yùn)營(yíng)成功的開源項(xiàng)目提供常用的幫助和建議。成為開源基金會(huì)的一部分可以提供有價(jià)值的反饋循環(huán)。基金會(huì)可以為你的開源項(xiàng)目提供可信度,然后,開源項(xiàng)目反過來可以為基金會(huì)提供公信力。
運(yùn)作開源項(xiàng)目包含很多工作。但是,正如我們所建議的,它所需要的工作量取決于你對(duì)項(xiàng)目成功的定義。總而言之,開放源碼開發(fā)的核心原則:透明度,開放性和英才制度。其他一切都由此衍生。