主题
- #開源貢獻
- #成長機會
撰写: 2025-05-03
更新: 2025-05-27
撰写: 2025-05-03 00:00
更新: 2025-05-27 09:42
這篇文章的目的是為了給那些對 開源 感興趣,但又擔心「我敢嗎?」「應該從哪裡開始?」的人們打氣。
今天,我想分享我鼓起勇氣踏入 開源的大門,並在過程中學習和感受到的經驗。
在學習開發時,您會經常遇到 ' 開源' 這個詞。 如果您瀏覽 GitHub,您會發現許多正在改變世界的項目都公開了他們的程式碼。
將程式碼公開給外部的專案稱為 ' 開源'。
例如,有 OpenJDK、Spring Framework、Redis 和 React 等大型開源項目。
到目前為止,我總共為開源貢獻了 4 次。 我正在尋找開源項目中很小, 微小的改進,而不是添加可能改變世界的特性。
我不知道上述專案的程式碼風格,也不太清楚它們是如何運作的。
可以看出,即使我 無法完全理解程式碼,我也可以為社群做出貢獻。 我學習開發才兩年,而且我覺得自己並沒有什麼開發天賦。
我只是喜歡為開源做貢獻,並在開發者社群中進行交流,所以我一直保持著這樣的活動。
老實說,起初我確實想過 “ 如果在簡歷中加一行不是很好嗎?”, 想法也從未消失。 非常大。 但還有一個更大的動機。 那就是「我想學得更深入」的渴望和「我想解決我遇到的問題」的需要。
在一個團隊專案中,我有機會使用 Spring WebFlux,深入研究了它的基礎技術 Project Reactor。 我通過書籍和文件理解了這個概念,但在實際的複雜系統中, 它是如何運作和優化的是一個我必須親自查看程式碼並親身體驗的領域。 此外,我常常苦惱於「我如何證明我努力學習了 Reactor?」,並因此產生了 「 我必須為開源做貢獻!」的想法。
當我決定 「 我想做出貢獻!」時,我不知道從哪裡開始。 從浩瀚的程式碼中找到我需要修改的部分,到預測我的更改將如何影響整個系統,一切都讓我感到害怕。
我擔心 ‘如果我提交 PR,是不是會被罵?’」, 似乎花了很多時間才最終提交 PR。
我使用 Reactive Stack 的 Redis Java 客户端 Lettuce 的 Reactive Command 是基于 Reactor 的,我想基于 Reactor 学习,尝试直接修改 Reactor 链来改进它。
我只是随便 fork 了一下,然后通过匹配字符串 “Reactive”,“reactor” 查看了包含的所有代码。 我似乎检查了所有由 Reactor Publisher(如 Mono 和 Flux)组成的链。
在仔细研究代码后,幸运的是,我发现了一个使用 Reactor 链的代码,其中一个代码的可读性略有下降,并且方法链没有正确进行。 它并没有对世界造成改变,也不是架构上的改变,但是 这是一个小而明确的问题,我可以在我的理解范围内进行修复。 我想 「 哦,如果是这样的事情,我也能做出贡献!」
根據我掌握的內容,我小心地修改了程式碼,並在本地環境中確認它是否按照我的意圖運作。 雖然只是很小的改動,但考慮到現有程式碼的風格,以及它是否會影響到其他部分,我仔細地做了很多次。
提交了修改後的內容,終於到了提交 PR 的時候。 說實話,在按下「發送」按鈕之前,我真的有很多的苦惱和猶豫。 ‘這個改動就提交 PR 好嗎?’、‘是不是修了一些理所當然的東西?’、‘可以用英文好好解釋嗎?’ 等等。
正如我之前所說,我擔心我會因為自己的不足而受到批評。 但是,我想 「開始是成功的一半」, 「如果不嘗試,就什麼也學不到」,所以我鼓起勇氣,盡可能詳細地寫下了我所做的更改以及原因,然後提交了 PR。
redis/lettuce - #3061
最終,我的 PR 被 「合併」,並且我編寫和修改的程式碼成為許多開發者使用的知名開源專案的一部分,我真的感到非常滿足和自豪。
最重要的是, 我知道我也可以!獲得了信心是我最大的收穫。
即使您沒有完全理解也沒有關係。 像我一樣,從很小的地方開始。 例如,修正文件中的拼寫錯誤、參與翻譯、報告簡單的錯誤等等,有很多貢獻方式。 重要的是 克服恐懼邁出第一步的勇氣。
如果您犯了錯誤,這也是一個通過錯誤從社群獲得反饋,並 獲得更多成長機會。
它也是 一個可以添加到簡歷中的寶貴機會,但基於學習的開源貢獻也可以成為證明我真的努力學習的一種方式。
此文章无法发表评论。