今天分享一下如何發起並運營一個開源項目。平時咱們開發用到的輪子大多都是開源的,能夠說開源項目推進了IT行業的的發展,而這兩年是開源項目的爆發期。對於我的來講,開源項目也是開發者成長提高的途徑之一。今天就來分享一下如何孵化並運營一個開源項目。git
凡是項目都須要創意,或者咱們稱之爲「點子」,來源有多個方面。github
不少開源項目包括編程語言都誕生於解決特定問題的過程當中,好比Java誕生於智能硬件平臺的研發過程當中。因此你平常遇到的一些問題和你對這些問題的解決方案能夠成爲你建立開源項目的一個思路。這種狀況下須要更多的創造性,同時還要規避一些法律風險。spring
你也能夠對其它一些開源項目進行擴展和優化,有時候咱們能夠站在巨人的肩膀上。就像開源Git託管平臺Gitea誕生於Gogs。編程
更簡單的方式是你甚至能夠整合腳手架,目前在Github上的整合腳手架很是多,甚至有些項目知名度還很是高。編程語言
當你有這個契機你就有孵化開源項目的先決條件了。
接下來就是開發了,最開始只有你本身貢獻所有的代碼,並且你可能須要作得更多。開發儘可能遵循Git工做流,ISSUE功能要充分利用起來,用戶的諮詢建議和BUG反饋儘可能經過ISSUE來處理。spring-boot
經過吸取Pull Request也能夠集思廣益,提高你項目的質量。Gitee和Github還提供了一些漏洞檢測和質量檢測功能。也能提升你的開發質量。單元測試
做爲開源項目,必定要把好質量關。起碼的單元測試要作,這樣其它開發者會更加信任你的項目。學習
開源協議是開源項目的重要標識,這個是必須的步驟。目前開源協議有不少,選擇一款適合你的,通常狀況下我選擇Apache 2.0。測試
協議除了放一個LICENSE
文件在項目的目錄中外,最好在每個源代碼文件的copyright
頭中也聲明一下,好比胖哥的開源項目Payment Spring Boot中是這樣的:優化
做爲一個開源項目,項目說明README.md
要有,用來對項目進行簡單的介紹。由於是源碼開放,代碼註釋也很是重要,也有利於向別人講解你的思路和意圖。若是有精力構建一個項目主頁就可讓你的項目更加高大上了,把文檔、圖文教程、CHANGELOG、Q&A、RoadMap分門別類放進去,也有利於用戶更加深刻的瞭解學習你的開源項目。你能夠看胖哥以往的相關文章有介紹的哦。
若是以爲你的項目已經達到可用的程度就能夠公開發布了。源代碼國外確定是放在Github上,國內選擇Gitee(碼雲)。根據你的喜愛選擇一個主庫,二者按期同步。另外要明確開發分支和正式分支,最好默認顯示最近的正式版本分支。
版本一經發布不能進行更改,版本號建議語義化,參考下圖中Gitee的語義化說明。
Github和Gitee都提供了建立發行版的功能,以Gitee爲例(Github一樣有相似的功能):
建立完畢後,你的項目就會生成一個發行版,用戶能夠經過對應版本的發行版獲取對應版本的源代碼,查看描述。
在進行源代碼發行的同時,也建議部署對應的編譯版本到公用依賴庫,好比Java項目會發布的Maven中央倉庫,JavaScript項目會發布到NPM,Python項目PyPi。若是你有能力使用CI/CD的話(例如Github Action),可讓整個發版流水線化。
記得發版的同時,要發佈對應版本的更新信息、文檔等配套設施。
只要是產品就須要推廣。推廣是一個技術活,而這每每不是技術人員的強項。你能夠在目標人羣的彙集地友好地宣講你的開源項目,例如一些開發者社區(開源中國),交流羣等等,甚至是這幾年比較火的短視頻。每次發版可經過一些公共渠道進行公告。讓你的開源項目儘量爲人所知。可是請不要做弊,不要學某些人走捷徑,花錢去購買Star。
在推廣的過程當中,要學會收集和分析用戶的意見。
推廣的同時要進行社區建設,有利於拉昇你開源項目的活躍度,同時也能夠從中提煉項目的需求。甚至能夠將社區活躍者提高爲項目貢獻者,組建一個開源小團隊。
社區驅動是開源項目發展的重要動力。
若是你想作好開源,就要把開源項目當作產品來作,堅持、創新、協做、運營、服務一個都不能少。我的也會在項目的打磨中成長提高。對於開源更重要的是一種態度。不管項目涉及的技術是否高深,開源者都應該獲得鼓勵和尊重。
關注公衆號:Felordcn 獲取更多資訊