來談一談如何做好乙個開源專案

2021-12-30 10:01:39 字數 2336 閱讀 7296

bootstrap

古話說得好:「萬事開頭難」。

開頭在本質上是解決 「bootstrapping」,人們一直使用這個比喻來描述解決啟動問題的方法,即乙個人試圖用自己的鞋帶將自己拉起來。比如按下電腦開機按鈕後初始化系統被廣泛稱作自舉引導(簡稱 booting)。

想做好乙個開源專案,就先得規劃乙個好的啟動方式。

github

10 多年前做開源專案託管的話基本只有乙個選擇,那就是 sourceforge。

期間也有過一些其他大廠的專案託管服務,比如 google code,sun/oracle 的 project kenai,現在都停服了。目前 github 已然是全球最大的開源專案託管服務商了,促成這樣現狀的最大原因有這幾個方面吧:

git 版本控制系統的流行,並做了一些更簡單的工作流,比如 pull request

更好、更現代化的使用者體驗,比如 issue comments 的實時推送

api 開放平台,構建第三方應用的生態系統

持續不斷的改進,github 隔三差五會有一些細節改進,並且桌面客戶端工具也在不斷演進

目前 github 是開源專案託管的不二之選。國內也有類 github 的專案託管服務,比如碼雲和 coding,希望它們越做越好 :+1:

repo

建庫是第一步,首先需要確定的是開個人專案還是組織專案,這兩者有些許不同:

個人專案:專案如果受歡迎一般來說人們都會瀏覽下作者主頁並關注,有利於作者本人漲粉

組織專案:如果一開始就規劃了相關系列專案,建議選擇組織型別

第二步就是需要乙個好的名字:

和需求/技術相關或者有些特定含義

庫名命名優先是全小寫,如果需要分隔單詞則使用 -,最後遵循開發語言、框架的約定

如果專案是乙個系列的,需要考慮好字首,或者按前面說的走組織專案

init commit

初始提交盡量是核心功能可用的,這樣能給別人乙個好印象。並且必須寫好 readme,內容至少覆蓋如下幾個方面:

專案介紹:該專案是什麼,主要用於解決什麼問題,這個部分主要闡述專案的動機

功能特性:有哪些主要功能,獨特的特性有哪些

安裝方式:如何安裝,最好也介紹一下開發環境搭建

技術依賴:該專案主要依賴哪些專案,這樣能讓別人大體上知道複雜度和上手難度

開源協議:一定要讓使用者知道,非常重要

除了 readme,github 還建議加入編碼規範、貢獻指南說明,這個可以後期慢慢加入。

文字的介紹是一方面,另一方面是多**格式,如果能有使用**是最好的,但至少專案的 logo 是要有的,一開始稍微醜一點沒關係 :blush:,可以鼓勵其他人參與貢獻。

document

專案託管服務商一般都提供了 wiki 服務,主要用於專案相關文件。直接使用 wiki 的最大好處是可以讓其他人參與進來維護文件,比如有錯別字時其他人可以很方便地幫忙修改。

但直接使用 wiki 服務也有個致命的缺點,就是當專案要遷移託管商時就很麻煩,不同服務商支援的文件語法不盡相同,排版也比較麻煩。推薦的做法是專案的文件自己搭建乙個站點來管理,雖然運維麻煩一些,但這樣不存在遷移問題,並且自由度也更大一些。

建議通過論壇系統來維護文件,這樣方便使用者進行提問,也促進了專案社群的發展。

issues

issue 最好先建立模板,讓使用者提問的時候有章可循。不過即使有模板,issue 描述不清晰還是很常見的,使用者的系統環境千奇百怪,遇到奇葩的系統不工作其實也正常。

關於 issue 你未來可能會面臨如下情況:

練習使用 github 的

由於其他軟體不會用導致的

宣洩個人情感的

良好的 issue 互動情況:

提 issue 的人描述清晰

提 issue 的人跟蹤 bug 有始有終

提 issue 的人提完順帶 fix

總之通過 issue 來追蹤管理變更是很好的做法,發布版本時還可以根據 issues 生成 changelogs。

不過對於 issue 也有我覺得比較難處理的情況:

提的 issue 構想太大,作者 hold 不住

和作者本意相矛盾

總之,做開源很重要一點就是和參與者、使用者保持交流,等專案用的人多了以後責任也會變大,所以不能太隨意,盡量做到變更可追溯。

回歸本質

總之,開始乙個開源專案時最重要的一點就是要問自己:為什麼要做這個開源專案?

這個問題的答案將解釋該項目的動機並且為專案設定了目標。

開源專案成千上萬,並且同質化嚴重,但總有一些開源專案能夠脫穎而出,因為這些專案抓住了本質:

開發者自己是使用者:開發者自己不用是發現不了問題的,特別是後期需求

做真正有用的事情:不一定要受眾很廣,但要有剛需,能夠解決問題

長期投入精力情感:你投入的情感使它與眾不同,保持細水長流

如何做好乙個專案 二

a.會談的禮貌 和客戶交談,無論是 ceo cfo c x o,還是其普通員工,我們必須懷著平等的心態。盡量使用普通話,語速不要太快 寧慢勿快 闡述問題要有節奏,等對方明白你所說的一段話後,再說下一段。聽對方講話時,切勿強行打斷。等他說完你再說。無論跟誰談話一定要不卑不亢。也許,你會說這很簡單。其實...

如何做好乙個測試leader

做的是敏捷測試 所以並不適合所有專案。1 prd review prd product requirements document 產品需求文件2 prd 更新 跟蹤 當然,水不一定非常乾淨,我們需要做一些過濾 prd肯定有一些不完善的地方,我們也會遇到prd的更新 修改 但是我們1定要保證這些更新...

如何做好乙個市場人員

態度決定一切 我非常推崇前中國國家足球隊主教練公尺盧的這句話 態度決定一切 營銷是乙個務實的職業,良好的工作態度 扎扎實實的工作精神,是不可能取得良好的業績的。或許可以通過一些不正當的手段如竄貨 經銷商囤貨在乙個不規範的市場中短時間內取得不錯的業績,但如果沒有進行紮實的市場操作,沒有區域扎扎實實的銷...