如何發起並運營一個開源專案
阿新 • • 發佈:2021-03-02
![](https://img2020.cnblogs.com/other/1739473/202103/1739473-20210302100122338-1395721887.jpg)
## 1. 前言
今天分享一下如何發起並運營一個開源專案。平時我們開發用到的輪子大多都是開源的,可以說開源專案推動了IT行業的的發展,而這兩年是開源專案的爆發期。對於個人來說,開源專案也是開發者成長提升的途徑之一。今天就來分享一下如何孵化並運營一個開源專案。
## 2. 立項
凡是專案都需要創意,或者我們稱之為“點子”,來源有多個方面。
很多開源專案包括程式語言都誕生於解決特定問題的過程中,比如Java誕生於智慧硬體平臺的研發過程中。所以你日常遇到的一些問題和你對這些問題的解決方案可以成為你建立開源專案的一個思路。這種情況下需要更多的創造性,同時還要規避一些法律風險。
![](https://img2020.cnblogs.com/other/1739473/202103/1739473-20210302100122532-1580815135.jpg)
你也可以對其它一些開源專案進行擴充套件和優化,有時候我們可以站在巨人的肩膀上。就像開源Git託管平臺Gitea誕生於Gogs。
更簡單的方式是你甚至可以整合腳手架,目前在Github上的整合腳手架非常多,甚至有些專案知名度還非常高。
> 當你有這個契機你就有孵化開源專案的先決條件了。
## 3. 開發
接下來就是開發了,最開始只有你自己貢獻全部的程式碼,而且你可能需要做得更多。開發儘量遵循Git工作流,ISSUE功能要充分利用起來,使用者的諮詢建議和BUG反饋儘量通過ISSUE來處理。
![ISSUE處理問題](https://img2020.cnblogs.com/other/1739473/202103/1739473-20210302100122865-1802091903.png)
通過吸收**Pull Request**也可以集思廣益,提升你專案的質量。Gitee和Github還提供了一些漏洞檢測和質量檢測功能。也能提高你的開發質量。
### 3.1 測試
作為開源專案,一定要把好質量關。起碼的單元測試要做,這樣其它開發者會更加信任你的專案。
### 3.2 開源協議
開源協議是開源專案的重要標識,這個是必須的步驟。目前開源協議有很多,選擇一款適合你的,一般情況下我選擇**Apache 2.0**。
![](https://img2020.cnblogs.com/other/1739473/202103/1739473-20210302100123249-1847386411.png)
協議除了放一個`LICENSE`檔案在專案的目錄中外,最好在每一個原始碼檔案的`copyright`頭中也宣告一下,比如胖哥的開源專案[Payment Spring Boot](https://github.com/NotFound403/payment-spring-boot)中是這樣的:
![](https://img2020.cnblogs.com/other/1739473/202103/1739473-20210302100123558-754100522.png)
### 3.3 其它配套設施
作為一個開源專案,專案說明`README.md`要有,用來對專案進行簡單的介紹。因為是原始碼開放,程式碼註釋也非常重要,也有利於向別人講解你的思路和意圖。如果有精力構建一個專案主頁就可以讓你的專案更加高大上了,把文件、圖文教程、CHANGELOG、Q&A、RoadMap分門別類放進去,也有利於使用者更加深入的瞭解學習你的開源專案。你可以看胖哥以往的相關文章有介紹的哦。
## 4. 釋出
如果覺得你的專案已經達到可用的程度就可以公開發布了。原始碼國外肯定是放在Github上,國內選擇Gitee(碼雲)。根據你的喜好選擇一個主庫,兩者定期同步。另外要明確開發分支和正式分支,最好預設顯示最近的正式版本分支。
### 大致的發版步驟
> 版本一經發布不能進行更改,版本號建議語義化,參考下圖中Gitee的語義化說明。
Github和Gitee都提供了建立發行版的功能,以Gitee為例(Github同樣有類似的功能):
![Gitee建立發行版](https://img2020.cnblogs.com/other/1739473/202103/1739473-20210302100123738-1704297468.png)
建立完畢後,你的專案就會生成一個發行版,使用者可以通過對應版本的發行版獲取對應版本的原始碼,檢視描述。
![Gitee獲取對應版本的發行版](https://img2020.cnblogs.com/other/1739473/202103/1739473-20210302100123885-605814867.png)
在進行原始碼發行的同時,也建議部署對應的編譯版本到公用依賴庫,比如Java專案會發布的Maven中央倉庫,JavaScript專案會發布到NPM,Python專案PyPi。如果你有能力使用CI/CD的話(例如Github Action),可以讓整個發版流水線化。
>記得發版的同時,要釋出對應版本的更新資訊、文件等配套設施。
## 5. 推廣
只要是產品就需要推廣。推廣是一個技術活,而這往往不是技術人員的強項。你可以在目標人群的聚集地友好地宣講你的開源專案,例如一些開發者社群(開源中國),交流群等等,甚至是這幾年比較火的短視訊。每次發版可通過一些公共渠道進行公告。讓你的開源專案儘可能為人所知。但是請不要作弊,不要學某些人走捷徑,花錢去購買Star。
> 在推廣的過程中,要學會收集和分析使用者的意見。
## 6. 社群驅動
推廣的同時要進行社群建設,有利於拉昇你開源專案的活躍度,同時也可以從中提煉專案的需求。甚至可以將社群活躍者提升為專案貢獻者,組建一個開源小團隊。
> 社群驅動是開源專案發展的重要動力。
## 6. 總結
如果你想做好開源,就要把開源專案當做產品來做,堅持、創新、協作、運營、服務一個都不能少。個人也會在專案的打磨中成長提升。對於開源更重要的是一種態度。無論專案涉及的技術是否高深,開源者都應該得到鼓勵和尊重。
`關注公眾號:Felordcn 獲取更多資訊`
[個人部落格:https://felord.cn](https://fe