如何做一個真正牛X的開源專案
近年來,越來越多的開發者選擇將自己的產品以開源形式釋出,有時的結果是——你滿懷誠意地開源,卻無人問津。儘管你的產品做得相當好,但是僅把產品的原始碼公佈出來,這還不算開源,因為其他使用者可能無從下手。沒有使用者,久而久之,你的滿腔熱情就會熄滅。
那麼如何才能讓開源專案為更多人所知,成為一個真正牛X的開源專案呢?除了專案自身優秀外,你還需要注意以下事項。
一、有一個真正有用的README
即使你為你的開源專案製作了一個很好的網站,但是一些潛在使用者很可能會首先通過閱讀README檔案來了解這個專案。因此,你要確保在README中提供儘可能全面的資訊:
1. 依賴、安裝資訊
儘可能寫清楚依賴、安裝資訊,最好能夠讓使用者通過複製貼上相關程式碼來新增依賴。比如這樣。
2. 專案成熟度狀態
不至於讓使用者在生產環境中用了幾個月後才發現你的專案才處於Alpha階段。
3. 詳細說明專案支援的語言、執行環境和工具的版本
不至於讓使用者花費大量的時間去摸索你的專案的相容性。
4. 明確所使用的許可證
這個許可證需要是流行的、使用者都知道的,如果你自己創造一個或使用一個陌生的(比如WTFPL),那麼沒有使用者敢於在自己的產品中使用你的開源專案的。你可以選擇比較友好的 Apache Public License 2.0或Eclipse Public License等。需要注意的是一些許可證(比如MIT)也是比較流行的,但是沒有提供任何專利保護。你也可以採用APL2/GPLv2雙許可,讓使用者挑選適合他們的。
二、為你的專案寫一個文件
寫文件並不容易,且比較費時,但是對於使用者來說,文件是瞭解一個專案最便捷、最省時的方式,還可以讓使用者相信你不會輕易放棄這個專案。
在文件中,把你的專案可以幫助使用者完成的事情放在首位,這是使用者決定是否使用這個專案的關鍵。此外,你要讓使用者相信做這個專案的是個人,而不是一個會產生程式碼的機器人。
關於開源專案文件,建議你閱讀:開源專案文件應規避的13處“硬傷”
三、專案可以很容易地升級
隨著專案中bug的修復和一些功能的改進,你需要釋出另一個版本。需要注意的是:
1. 向後相容
不要因為不向後相容,而讓使用者重寫大量程式碼。這樣會讓使用者憤怒,繼而拋棄你的專案。當然,你也不必像OpenJDK那樣相容15年前的產品。
2. 更新日誌
有一個清晰明確的更新日誌,需要包含:該版本發生了什麼變化?會破壞使用者現有專案的程式碼嗎?等等。比如Twitter的做法:
- 每修復一個bug,就在更新日誌中寫上一個簡短的條目
- 每新增一個功能,就簡要描述一下並附上一些示例程式碼
- 每改變一個API,就需要在日誌中用粗體明確指出
如果你有多個分支,就需要為每個分支都寫一份更新日誌。
3. 版本標籤
為你的專案的每一個版本打上一個標籤,比如v1.0.0-alpha1、v1.0.0、v1.1.2,可以讓你的使用者很清晰地分辨出專案的版本。
4. 釋出公告
專案釋出後,接下來就需要為這個事件寫一篇博文,或直接將公告發布到專案的郵件列表中。
在公告中需要說明這個專案有什麼用,是否向後相容,並給出更新日誌的連結。
5. 專案狀態標籤
有些專案很長時間一直使用相同的版本號,比如1.1.0,而專案一直在改進。如果這是一個開發版本,你也需要通過標籤來說明專案所處的開發階段。比如:
- 1.1.0.pre1
- 1.1.0-alpha1
- 1.1.0-SNAPSHOT
總之,你要確保專案有一個嚴格的版本命名規劃。
四、使用GitHub
在GitHub上,你可以很容易地做下面的事情:
- 釋出你的專案
- 瀏覽和搜尋程式碼
- 專注於專案issues
- 參與貢獻,合併使用者的貢獻
五、確保有一個為使用者提供支援的地方
如果你的專案達到一定的普及程度,你就會不斷收到使用者的提問。你需要有一個收集和回答使用者提問的地方,比如論壇、郵件列表等。只要有一個交流的地方,使用者也可以彼此提供幫助。久而久之,就會形成一個很不錯的社群。
六、專案傳遞
不排除這種情況——你可能會對專案維護失去興趣,或者你換了一個新工作不再使用當前的專案了。你可以在郵件列表上公佈,讓其他開發者接管你的專案。在Github上專案所有權轉移會更容易,尤其是在別人為你的專案引入了新功能後。
無論如何,不要讓專案死掉。
七、總結
總之,在你打算髮布開源產品時,請確保它有:
- 清晰的依賴/安裝說明
- 至少有一個簡短的文件/指南
- 庫中包含更改日誌和相關標籤
- 一些關於支援語言、執行環境、工具版本、專案成熟度的資訊
- 郵件列表,供使用者提問、相互幫助
八、最後
總之,要想讓你的開源專案“發揚光大”,首先應該讓它對使用者更友好。除了專案文件外,其他事情花費不了多長時間。
另外,將專案開源出來容易,長時間維護就難了,因此,你還需要具備堅毅的精神和打持久戰的準備。當然,如果你只希望將專案開源出來,而不指望它能夠發展得多好,那麼你完全可以忽略以上的所有內容。
相關文章
- 【專案總結】:如何做一個牛逼的Team leader?
- 百度開源的 71 個專案,太牛逼了!
- 一個檔案的開源專案,開啟你的開源之旅
- 騰訊作為BAT之一,都有哪些開源的牛批專案?BAT
- 開源一個文字分析專案
- 如何熟悉一個開源專案?
- 14個超級牛X的免費開源小工具!
- 企業開源指南:建立一個開源專案
- 怎樣做好一個開源專案
- 開源一個機器學習文字分析專案機器學習
- 企業開源指南:啟動一個開源專案
- 找個開源專案
- 管理多個專案:專案管理真正的挑戰專案管理
- 如何去參與一個開源專案
- 我寫了一個開源專案AlphabetPyAlphabet
- 如何才能運作好一個開源專案?
- 開源專案推薦:提高研發效率的5個開源專案
- 一個令人驚豔的ChatGPT專案,開源了!ChatGPT
- PlantUML 是繪製 uml 的一個開源專案
- 成功運作一個開源專案的 15 個要點
- 【分享】楊響亮:如何召開一個牛逼的IT專案啟動會
- 5個造福世界的開源專案
- 24 個很棒的開源 Rust 專案Rust
- 開源一個線上專案 WeAre-AR相簿
- 如何找到並快速上手一個開源專案
- 記錄一個開源專案排名網站網站
- 開源一個功能完整的SpringBoot專案框架Spring Boot框架
- 我的第一個開源專案 Kiwis2 MockserverMockServer
- 給你的開源專案加一個綬帶吧
- 如何為你的開源專案釋出一個版本
- Hi,我是ChunJun,一個有趣好用的開源專案
- [譯]過去一個月最 ? 的 10 個 Swift 開源專案Swift
- 推薦一個.Ner Core開發的配置中心開源專案
- 專案管理小結(如何做好一個百萬級專案甚至千萬級別的專案)專案管理
- 19個安全專家一定要關注的開源 GitHub 專案Github
- 真正成功的SOA專案5個裡才1個
- 如何發起並運營一個開源專案
- 聊聊第一個開源專案(內網穿透) - CProxy內網穿透