如何發(fā)起并運(yùn)營一個開源項目
1. 前言
今天分享一下如何發(fā)起并運(yùn)營一個開源項目。平時我們開發(fā)用到的輪子大多都是開源的,可以說開源項目推動了IT行業(yè)的的發(fā)展,而這兩年是開源項目的爆發(fā)期。對于個人來說,開源項目也是開發(fā)者成長提升的途徑之一。今天就來分享一下如何孵化并運(yùn)營一個開源項目。
2. 立項
凡是項目都需要創(chuàng)意,或者我們稱之為“點(diǎn)子”,來源有多個方面。
很多開源項目包括編程語言都誕生于解決特定問題的過程中,比如Java誕生于智能硬件平臺的研發(fā)過程中。所以你日常遇到的一些問題和你對這些問題的解決方案可以成為你創(chuàng)建開源項目的一個思路。這種情況下需要更多的創(chuàng)造性,同時還要規(guī)避一些法律風(fēng)險。
你也可以對其它一些開源項目進(jìn)行擴(kuò)展和優(yōu)化,有時候我們可以站在巨人的肩膀上。就像開源Git托管平臺Gitea誕生于Gogs。
更簡單的方式是你甚至可以整合腳手架,目前在Github上的整合腳手架非常多,甚至有些項目知名度還非常高。
當(dāng)你有這個契機(jī)你就有孵化開源項目的先決條件了。
3. 開發(fā)
接下來就是開發(fā)了,最開始只有你自己貢獻(xiàn)全部的代碼,而且你可能需要做得更多。開發(fā)盡量遵循Git工作流,ISSUE功能要充分利用起來,用戶的咨詢建議和BUG反饋盡量通過ISSUE來處理。
通過吸收 Pull Request 也可以集思廣益,提升你項目的質(zhì)量。Gitee和Github還提供了一些漏洞檢測和質(zhì)量檢測功能。也能提高你的開發(fā)質(zhì)量。
3.1 測試
作為開源項目,一定要把好質(zhì)量關(guān)。起碼的單元測試要做,這樣其它開發(fā)者會更加信任你的項目。
3.2 開源協(xié)議
開源協(xié)議是開源項目的重要標(biāo)識,這個是必須的步驟。目前開源協(xié)議有很多,選擇一款適合你的,一般情況下我選擇 Apache 2.0 。
協(xié)議除了放一個 LICENSE 文件在項目的目錄中外,最好在每一個源代碼文件的 copyright 頭中也聲明一下,比如胖哥的開源項目 Payment Spring Boot 中是這樣的:
3.3 其它配套設(shè)施
作為一個開源項目,項目說明 README.md 要有,用來對項目進(jìn)行簡單的介紹。因為是源碼開放,代碼注釋也非常重要,也有利于向別人講解你的思路和意圖。如果有精力構(gòu)建一個項目主頁就可以讓你的項目更加高大上了,把文檔、圖文教程、CHANGELOG、Q&A、RoadMap分門別類放進(jìn)去,也有利于用戶更加深入的了解學(xué)習(xí)你的開源項目。你可以看胖哥以往的相關(guān)文章有介紹的哦。
4. 發(fā)布
如果覺得你的項目已經(jīng)達(dá)到可用的程度就可以公開發(fā)布了。源代碼國外肯定是放在Github上,國內(nèi)選擇Gitee(碼云)。根據(jù)你的喜好選擇一個主庫,兩者定期同步。另外要明確開發(fā)分支和正式分支,最好默認(rèn)顯示最近的正式版本分支。
大致的發(fā)版步驟
版本一經(jīng)發(fā)布不能進(jìn)行更改,版本號建議語義化,參考下圖中Gitee的語義化說明。
Github和Gitee都提供了創(chuàng)建發(fā)行版的功能,以Gitee為例(Github同樣有類似的功能):
創(chuàng)建完畢后,你的項目就會生成一個發(fā)行版,用戶可以通過對應(yīng)版本的發(fā)行版獲取對應(yīng)版本的源代碼,查看描述。
在進(jìn)行源代碼發(fā)行的同時,也建議部署對應(yīng)的編譯版本到公用依賴庫,比如Java項目會發(fā)布的Maven中央倉庫,JavaScript項目會發(fā)布到NPM,Python項目PyPi。如果你有能力使用CI/CD的話(例如Github Action),可以讓整個發(fā)版流水線化。
記得發(fā)版的同時,要發(fā)布對應(yīng)版本的更新信息、文檔等配套設(shè)施。
5. 推廣
只要是產(chǎn)品就需要推廣。推廣是一個技術(shù)活,而這往往不是技術(shù)人員的強(qiáng)項。你可以在目標(biāo)人群的聚集地友好地宣講你的開源項目,例如一些開發(fā)者社區(qū)(開源中國),交流群等等,甚至是這幾年比較火的短視頻。每次發(fā)版可通過一些公共渠道進(jìn)行公告。讓你的開源項目盡可能為人所知。但是請不要作弊,不要學(xué)某些人走捷徑,花錢去購買Star。
在推廣的過程中,要學(xué)會收集和分析用戶的意見。
6. 社區(qū)驅(qū)動
推廣的同時要進(jìn)行社區(qū)建設(shè),有利于拉升你開源項目的活躍度,同時也可以從中提煉項目的需求。甚至可以將社區(qū)活躍者提升為項目貢獻(xiàn)者,組建一個開源小團(tuán)隊。
社區(qū)驅(qū)動是開源項目發(fā)展的重要動力。
7. 總結(jié)
如果你想做好開源,就要把開源項目當(dāng)做產(chǎn)品來做,堅持、創(chuàng)新、協(xié)作、運(yùn)營、服務(wù)一個都不能少。個人也會在項目的打磨中成長提升。對于開源更重要的是一種態(tài)度。無論項目涉及的技術(shù)是否高深,開源者都應(yīng)該得到鼓勵和尊重。