如何做好一个开源项目(一)
做好一個(gè)開源項(xiàng)目其實(shí)是一件比較費(fèi)時(shí)費(fèi)力費(fèi)心的工作,它的最大難點(diǎn)除了代碼維護(hù)之外,還包括后期的維護(hù)和持續(xù)的跟進(jìn)。我曾經(jīng)做過不少開源項(xiàng)目,但是堅(jiān)持下來的,目前有信心能夠持續(xù)維護(hù)的也只有Magicodes.IE。這里請?jiān)试S我來一波硬廣:
Magicodes.IE
導(dǎo)入導(dǎo)出通用庫,支持Dto導(dǎo)入導(dǎo)出以及動(dòng)態(tài)導(dǎo)出,支持Excel、Word、Pdf、Csv和Html。已加入NCC開源組織。
Github:
https://github.com/dotnetcore/Magicodes.IE
碼云(手動(dòng)同步,不維護(hù)):
https://gitee.com/magicodes/Magicodes.IE
如何打造一個(gè)好的開源項(xiàng)目?
我們回歸正題。如何做好一個(gè)開源項(xiàng)目呢?接下來來說道說道:
1)有一個(gè)好的理念和創(chuàng)意
如果大家都在做重復(fù)的事情,但是又沒有合適的輪子的時(shí)候,那么我們就可以創(chuàng)造一個(gè)。
如果輪子很多,但是沒有好用的,或者不夠通用,那么我們就可以動(dòng)手寫一個(gè)。
Magicodes.IE就是在這種情況下誕生的。導(dǎo)入導(dǎo)出是一個(gè)非常普遍的場景,相關(guān)的組件也很多,比如就拿導(dǎo)出Excel來說,主流的就有EPPlus、NPOI等等庫。那么為什么我們還需要再造輪子呢?因?yàn)槲覀儼l(fā)現(xiàn),在大部分場景下使用這些庫我們都需要進(jìn)行一些重復(fù)性的編碼以及特定針對Excel的操作的編碼才能滿足我們的需求,那么有沒有更合適的做法?所以就有了Magicodes.IE,通過設(shè)置Dto就能滿足大部分導(dǎo)入導(dǎo)出的場景,并且還支持除了Excel之外的其他導(dǎo)入導(dǎo)出格式。
2)寫好代碼
代碼規(guī)范,易于閱讀這些都是必不可少的。尤其是在多人遠(yuǎn)程協(xié)作的情況下,代碼審閱,定期重構(gòu)也非常有必要。否則大家就算是想貢獻(xiàn)代碼,但是也要看得懂不是?
3)充分的測試
代碼寫好了,上去就是干明顯就是挖坑。隨著項(xiàng)目的時(shí)間越長,代碼重構(gòu)或者功能迭代就越需要測試的保障,而不是個(gè)人感覺或者編譯通過即可。
那么如何做好充分的測試呢?
1.完善的單元測試
每一次功能迭代或者Bug修復(fù),均要完善好相關(guān)的單元測試。單元測試是代碼可靠程度的最基本的保障。
2.盡可能提高代碼覆蓋率
代碼覆蓋率作為一個(gè)指導(dǎo)性指標(biāo),可以一定程度上反應(yīng)測試的完備程度,是軟件質(zhì)量度量的一種手段。100%覆蓋的代碼并不意味著100%無bug的應(yīng)用,代碼覆蓋率作為質(zhì)量目標(biāo)沒有任何意義,而我們應(yīng)該把它作為一種發(fā)現(xiàn)未被測試覆蓋的代碼的手段。
通過代碼覆蓋率測試,我們可以了解測試過程中覆蓋和未覆蓋的地方,可能存在的風(fēng)險(xiǎn)。分析未覆蓋代碼,反推在測試設(shè)計(jì)是否充分,進(jìn)一步明確測試設(shè)計(jì)階段的問題。
代碼覆蓋率測試也有助于我們發(fā)現(xiàn)測試死角、冗余代碼、歷史廢棄代碼,便于重構(gòu)。
3.使用自動(dòng)化測試來保障每次提交和驗(yàn)證PR
開源項(xiàng)目有很多DevOps的服務(wù)可以選擇,我們可以基于其打造自己的自動(dòng)化測試來保障開源項(xiàng)目的質(zhì)量,以針對每次提交、PR進(jìn)行驗(yàn)證,并且作為資源發(fā)布的參考依據(jù)。
4)友好的文檔
文檔一直是開源項(xiàng)目運(yùn)作的一個(gè)難題:
代碼寫的歡,文檔難產(chǎn)。
本地化文檔(中文文檔)沒問題,其他語言文檔(英文文檔)難以編寫。
文檔的更新永遠(yuǎn)跟不上代碼的更新,版本的迭代。
友好的文檔一直是開源項(xiàng)目吸引用戶的首要標(biāo)準(zhǔn),所以文檔是必須的。
Magicodes.IE的文檔也在積極補(bǔ)充和完善之中,希望大家能夠多多支持:
Magicodes.IE之導(dǎo)入學(xué)生數(shù)據(jù)教程
Magicodes.IE基礎(chǔ)教程之導(dǎo)出Excel
Magicodes.IE基礎(chǔ)教程之導(dǎo)出Pdf
Excel模板導(dǎo)出之導(dǎo)出教材訂購表
使用Magicodes.IE.Excel完成Excel圖片的導(dǎo)入和導(dǎo)出
5)版本規(guī)劃和管理
對于開源項(xiàng)目來說,版本規(guī)劃和發(fā)布版本也不應(yīng)該是一件隨意的事情。畢竟錯(cuò)誤的版本可能會(huì)給用戶帶來災(zāi)難性的問題。不合理的規(guī)劃,也可能會(huì)將項(xiàng)目帶入溝渠。
這里分享幾個(gè)經(jīng)驗(yàn):
版本規(guī)劃我們通過收集反饋來進(jìn)行規(guī)劃。如Magicodes.IE就通過Issue收集用戶反饋、討論以推出新的版本:
資源發(fā)版提供詳細(xì)的版本日志,以供用戶參考和追蹤:
測試版預(yù)先發(fā)布Beta版的包,如上圖中的2.2.0-beta2。
6)做好推廣
其實(shí)也就是讓可能需要他、真正需要他的人知道他的存在。從技術(shù)人的角度建議如下:
和技術(shù)社區(qū)合作,分享干貨,不水群,不瞎聊
加入知名開源組織,比如Magicodes.IE就加入了NCC開源組織
不要理會(huì)噴子。干自己認(rèn)為有價(jià)值的事情,不要理會(huì)那些只會(huì)噴但是啥也不會(huì)做的麻瓜。對于開源作者傷害最大的其實(shí)就是噴子和嘴炮,大家都是利用業(yè)余精力去支持和付出,為社區(qū)做貢獻(xiàn),不圖你支持,但是希望你別圖一時(shí)嘴快!不愛用那你就滾啊,不好用那你寫個(gè)更好用的分享出來啊!
7)關(guān)注反饋,持續(xù)更新
從Issue中來,到代碼中去。
在開源項(xiàng)目達(dá)到一定規(guī)模時(shí),社區(qū)就會(huì)給出非常多的反饋。這是單兵作戰(zhàn)肯定是不適合的,那么適時(shí)組成自己的開源團(tuán)隊(duì)或者開源管理委員會(huì)就非常有必要了。同時(shí),社區(qū)反饋的很多問題往往都是過于偏具體業(yè)務(wù)的需求,這時(shí)就需要我們?nèi)コ槿〕鐾ㄓ玫男枨罅恕?/p>
歡迎PR,及時(shí)處理PR!
開源項(xiàng)目在前期往往均只能利用業(yè)余精力運(yùn)作,那么每一個(gè)PR都是非常寶貴的,團(tuán)隊(duì)一定要及時(shí)驗(yàn)證并處理。先以功能優(yōu)先,再適當(dāng)重構(gòu)。
大小版本提前規(guī)劃,小版本快速迭代!
開源項(xiàng)目既需要有長期的規(guī)劃,以確保長期的方向,也需要有短期的計(jì)劃和目標(biāo)。這樣對團(tuán)隊(duì)對用戶都是有幫助的。同時(shí)小版本規(guī)劃或者考慮的功能也可以通過Issue的方式和用戶探討:
最后
本篇僅是筆者結(jié)合Magicodes.IE講解如何做好一個(gè)開源項(xiàng)目的第一篇,接下來,我們會(huì)講解如何基于開源項(xiàng)目完成徽章、DevOps等等。
轉(zhuǎn)載是一種動(dòng)力 分享是一種美德
如果喜歡作者的文章,請關(guān)注【麥扣聊技術(shù)】訂閱號(hào)以便第一時(shí)間獲得最新內(nèi)容。本文版權(quán)歸作者和湖南心萊信息科技有限公司共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
文檔官網(wǎng):docs.xin-lai.com
QQ群:
編程交流群<85318032>?
產(chǎn)品交流群<897857351>
總結(jié)
以上是生活随笔為你收集整理的如何做好一个开源项目(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以Blog.Core的方式来打开Abp.
- 下一篇: Abp商业版 - Identity Se