TiKV算是Rust界的明星項目了,介紹它的文章很多,這裡就不再贅述。但是如果你打算給TiKV做點貢獻,還不知道如何開始,也許此文可以幫助你節省點時間。
給TiKV做貢獻,可以簡單地分為以下幾步:
想要做貢獻,當然要選擇一個趁手的問題了。什麼叫趁手?
如果超出自己的能力範圍,那很容易勸退;如果太耽誤自己的時間,那也很容易拖延,最終還是勸退。
如果選擇趁手的問題?我來教你一個辦法。
來This Week in Rust網站,然後會看到一個「Call for Participation」的分類,這下面的內容就是有人已經幫你選好的Rust生態中各種開源項目需要人幫忙的各種issues。上面也可以不定期地看到TiKV的各種issues。如下圖:
通過This Week in Rust來尋找可貢獻的issues更加方便一點,當然你也可以直接去TiKV項目的issues中找,但你的選擇面可能就更廣更不好確定了。確定了選擇範圍之後,接下來就要看issues的難度了。
幸好,這些issues上面都標記有難度Label。上圖中的issues標記的是D: Easy,這是專門給新手準備的。D: Easy標記的意義:
D: Easy
所以,不管你Rust水平高低,選擇這個應該是最好的。因為TiKV屬於一個比較大型的項目了,業務邏輯相當複雜,對於新人來說,最好是選擇依賴業務上下文最少的那些issues來解決。
選擇好issues之後,接下來不要馬上動手。你首先需要搞清楚問題所在,想清楚如何解決,再動手。但是你可以先fork一個自己的分支。對issues有任何問題,可以通過GitHub提問,每個issues應該有一個主要的負責人,他會指導你。
在修改代碼的時候需要注意,TiKV默認是使用Nightly Rust,在項目的根目錄下有一個`rust-toolchain`文件,裡面指定了相關的版本。在你使用cargo build的時候,如果你本地沒有這個版本的Rust,則會自動安裝。
找到解決問題的思路,順利寫完代碼之後,先別著急Commit代碼。需要注意下面三點:
ulimit -n 1000
too many files
git commit -s
然後順利Push代碼之後,發起Pull Request要注意,寫清楚這次PR的詳細信息,這些TiKV的模板有描述,注意查看。
提交PR以後,就安心等待Review吧。並不是你剛提交就會馬上有人來幫你review,所以不要心急。
Review也是分批次,主要負責人過來review之後,給出一些修改意見,然後也可能會有業務相關的人員過來再次Review,給出其他意見。但這裡面需要注意:
TiKV代碼太多,並不是每個review人員都看過完整代碼,他們也許只是對他負責的那一塊熟悉。當他幫同事負責的那一塊review的時候,他並不能分清,哪些代碼是已經存在的,哪些是你新加上去的。所以,很可能會給你提出一些修改意見,包含了修復「他們曾經沒有發現,review的時候剛發現的代碼中早已包含的一些問題」。對於這些問題,你可以選擇拒絕,另開issues去處理。 因為這些代碼並不是你寫的,上下文你也不清楚,如果冒然修改,可能會引起未知的連鎖問題,那麼你這個PR就休想完成了。
對於Review之後的修改請求,經過你的過濾和判斷之後,選擇真正需要修復的代碼進行修改即可。這期間還要注意,CI中的測試是否通過。如果沒有通過,需要你點擊details鏈接過去看看測試是什麼原因出錯了。
details
測試沒有通過,會有很多原因:
對於你理解不了的問題,你可以另外發起一個issues來報告給TiKV團隊。然後你就可以重新提交一下代碼來觸發測試,沒準就能過。
代碼合併之後,你就是一個貢獻者了。但是,這可以是結束,也可以是一個好的開始。
你能以這個PR涉及的業務為中心,然後逐漸輻射到與之相關的更多issues,繼續去提交貢獻,那麼肯定會一次比一次嫻熟。
現在Rust的職位確實很少,但是Rust又是那麼有魅力,幾乎有80%的開發者想用Rust。如何是好呢? 給開源項目做貢獻就是一個好的方法,在實踐中學習Rust。
給TiKV做貢獻有什麼好處呢?眾所周知,TiKV最近從Rust官方招攬了幾員猛將,比如brson和nrc。我給TiKV提交的PR是由brson負責的,所以我有幸領略了brson的做事風格:
給TiKV做貢獻讓我學到不少東西。除了brson,Tikv團隊中其他成員也非常棒,給我的代碼也提出了不少修改意見,讓我學到了不少技巧。當然,你如果想給其他開源項目做貢獻,我想也會有相同的收穫的。只不過本文是侷限於了TiKV,僅供參考。
更多閱讀: 如何為Rust語言做貢獻