新手如何快速參與開源項目
前言
開源這件事情在軟件開發(fā)領(lǐng)域一直是一個高頻話題,我們工作中不管是使用到的工具還是第三方庫都離不開開源的支持。
近期由于工作的原因,我需要經(jīng)常和 Apache Pulsar 社區(qū)溝通,同時也會將日常碰到的問題反饋給社區(qū),包括一些 bug ,一些我能修的也是順帶就提了一些 PR。
之前或多或少我也參與過其他的開源社區(qū),但和現(xiàn)在的還是有些許的不同:
- 以前我更多的是個人開源項目,偶爾也會有其他開發(fā)者向我的倉庫貢獻代碼。
- 也參與過其他個人作者或者是社區(qū)性質(zhì)的項目,但流程上沒有那么正規(guī)或者是標準。
簡單來說就是以前就是小打小鬧,Pulsar 畢竟是 Apache 社區(qū)的頂級項目,參與的整個流程要求也會比較復(fù)雜,當然學(xué)到的知識也會更多。
image.png
這半年時間大大小小提了十幾個 PR ,也逐漸捋清楚了一些上手的方法和套路,所以如果你也想?yún)⑴c開源,但苦于不知道如何入門,看完后希望對你有所幫助。
為什么參與開源
首先還是來聊聊參與開源的好處,了解之后也許會讓你有路轉(zhuǎn)粉。
首先最明顯的一點就是讓你對貢獻的這個項目更加深入的了解,我們常常都在面試的時候被問到對 XX 框架的熟悉程度,哪怕你在簡歷里寫的天花亂墜也沒有是這個項目 Contributor 更具有說服力。
其次是溝通交流能力也會得到鍛煉,開源社區(qū)往往都是以 github issue/PR,或者是 Mailing List 的方式溝通交流,這樣的溝通方式和我們常用的微信、QQ 這類及時通訊工具有著本質(zhì)的區(qū)別。
往往需要我們有了冷靜的思考加上清晰的描述才會將自己的觀點發(fā)布出去,這樣不自覺的就會養(yǎng)成自己的總結(jié)能力,這個能力對于內(nèi)容創(chuàng)意內(nèi)容工作者來說非常重要。
還有一個更明顯的好處就是對個人的能力背書,大家常說的 show me the code,而 GitHub 就是最好的方式。
當你是某個知名開源項目的 Contributor 甚至是 Committer/PMC 就已經(jīng)足夠證明自己的能力了。
如何參與
如何參與呢,其實也很簡單,不外乎有以下幾種方式(由易到難):
- 一些 typo 類的修復(fù)。
- 回答社區(qū)中用戶的問題。
- 使用過程中遇到 bug,直接反饋,有興趣的話最好是自己能修復(fù)。
- 修復(fù)現(xiàn)有 issue 列表中未解決的 bug。
- 軟件不具備自己需要的功能時提交 feature 提案并實現(xiàn)。
不管是哪種方式我的建議是在準備貢獻之前都應(yīng)該先看看官方提供的貢獻指南,通常在官網(wǎng)就能查看。
即便是最簡單的修復(fù) typo,因為越是專業(yè)的項目每個 PR 的合并都是嚴謹?shù)?,提前了解后可以避免犯一些基本錯誤從而影響積極性。
這里我以 Pulsar 為例:
官網(wǎng)有著詳細的貢獻指南,包括環(huán)境搭建、代碼約定、PR/git commit 語義等各種規(guī)范。
這里我重點強調(diào) PR 的語義,一個好的 PR 規(guī)范更容易引起社區(qū)成員的注意,畢竟我們每一次提交都需要 Committer 的同意才能合并。
還是以 Pulsar 為例,在提交 PR 前一定得先看看這里的規(guī)范要求,不然很可能第一步就會吃癟。
可能遇到的問題
下面講講貢獻過程中可能會碰到的問題。
在上面講到的難度排序中將修復(fù)個人 issue 排在了其他 issue 之前了,這是因為往往對自己提交的 bug 更熟悉,而社區(qū)其他人反饋的問題大概率會被老手認領(lǐng)。
加上自己也不熟悉,可能在自己研究復(fù)現(xiàn)的過程中就把自己勸退了。
認領(lǐng) issue
這里還有個小技巧,當我們準備修復(fù)一個不是自己提交的 issue 時,最好是在評論區(qū)讓 Committer 將這個任務(wù)分配給你,這樣社區(qū)成員就不會做重復(fù)工作了。
類似于這樣。
同時我們在查找可以修復(fù)的 issue 時也要注意這個 issue 有沒有被認領(lǐng)以及是否有 PR 關(guān)聯(lián)。
image.png
有時候 issue 并沒有被指定但也有相關(guān) PR 在處理該問題了,這時我們就可以過濾掉這個 issue。
help want
也可以找找?guī)в?nbsp;help want 標簽的 issue,這類問題往往會相對簡單,修復(fù)起來也更容易。
社區(qū)反饋較慢
還有一個比較常見的問題是自己提交的 issue 或者是 PR 遲遲沒有人處理。
我們可以先看看這個 issue 對應(yīng)的代碼最近主要是哪些人在維護,這個在 IDE 中配合 GitToolBox 插件就很容易看出來。
后面的 ID 往往是 PR 號,我們可以通過這個 PR 找到對應(yīng)的作者,然后嘗試在 issue 評論區(qū)艾特對方。
如果依然沒有回復(fù),那我們也可以給開發(fā)組發(fā)送郵件。
如果還是沒有回復(fù),比如我這個
那也還有一個辦法,就是嘗試在社交媒體(GitHub 首頁、技術(shù)群)上找到 Committer 的微信,直接私聊的方式讓對方幫忙推進。
當然也有一些項目長期沒有維護了,這種 PR 要做好心里準備,很有可能對方不會理你;這點在國內(nèi)某個企業(yè)的開源項目中比較常見。
總結(jié)
總的來說想要做好開源得有耐心和長期堅持,同時給自己帶來的好處也是物超所值的,Apache 這類專業(yè)的社區(qū)我也才參與了半年,后續(xù)也會長期堅持下去,也希望哪天可以積累到成為 Committer 后再和大家分享。