文章首發在公眾號(龍臺的技術筆記),之後同步到部落格園和個人網站:xiaomage.info
就在前幾天,收到了 Apache ShardingSphere Vote 我成為 Committer 的郵件,心情非常高興,被提名代表自己的貢獻得到了充分的認可;在這裡,非常感謝 ShardingSphere 團隊給予我的幫助!
寫這篇文章,主要是記錄自己貢獻 ShardingSphere 這段時間內,程式碼提交的心路歷程。讓大家找到對的道路,能夠和我一樣,成為 Apache 專案的 Committer。
熟練使用
如果有個人告訴我他想貢獻一個專案,但是連怎麼使用都不知道,那我一定覺得他在和我開玩笑。
與 ShardingSphere 結緣是在 21 年,當時在集團內推廣 ShardingSphere,並結合業務做了眾多個性化功能;在定製的過程中,發現了一些問題,並且嘗試去解決。
也就是這個使用與定製的過程中,對 ShardingSphere 的設計理念和原始碼有了深入瞭解,而這也是驅動自己進行程式碼貢獻的前提。
擺脫畏懼
如果對 Apache 開源專案沒有貢獻過的小夥伴,可能提到 PR(Pull Request) 程式碼都會比較陌生,有種不明覺厲的感覺。
以我舉例,在對 ShardingSphere 進行貢獻前,覺得能對 Apache 專案產生貢獻的,都是那種技術大拿,壓根沒有想過自己可以提交 PR。
其實這是一種很錯誤的想法,剛開始貢獻 Apache 專案不一定是要貢獻核心程式碼,可以從簡單的測試用例或文件修復等任務做起;這樣可以快速幫助你熟悉貢獻流程,為後續的程式碼貢獻做鋪墊。
成為 Apache Committer 的第一步,是跨過心裡的那道坎,從想象轉換為實際行動。
參與開源
如果你想參與開源專案,ShardingSphere 會是個不錯的選擇。新增 ShardingSphere 社群經理微信:ss_assistant_1
,拉你進官方交流群,群裡會不定期釋出 Issue 任務列表,可以根據個人想法認領嘗試。
選擇 ShardingSphere 在我看來,有以下好處:
- Apache 頂級專案:GitHub 16.3 K Star,5.7 K Star,410+ contributor;
- 廣泛應用:截止目前登記,已有 217 家企業生產環境應用;深入研究後,公司應用遇到問題可以快速定位;
- 社群活躍度:ShardingSphere 會有專人在微信交流群、中文社群和 GitHub 上進行問題答疑,如果你在貢獻的過程中有問題,他們都會耐心解答,沒有任何架子;
- 專案迭代進度:Fork 後的專案,隔個幾天不更新,Fetch upstream 程式碼時,基本都是幾十上百的提交。
除去 ShardingSphere 官方釋出的任務,也可以閱讀接入端、分散式治理,核心、資料遷移、事務、DistSQL 等相關原始碼,找到自己感興趣的內容深入研究。
成為 Committer 能收穫什麼
Apache 專屬郵箱
提名後,Apache 會根據你提供的資訊建立專屬 Apache 郵箱。比如我的 ID 是 machen,對應的郵箱是:machen@apache.org
。
擁有 Apache 郵箱是一件非常酷的事情,代表著頂級開源組織對你能力的認可,也會對你未來找工作有一定的幫助。
想象一下,小夥伴們瀏覽 Apache 網站時看到了你的名字,或者和麵試官發郵件時,他們會不會有種不明覺厲的感覺,形象瞬間就高大上了有木有!
郵箱地址全域性唯一,可以在 Apache 官網上查詢,如果已被佔用將不能註冊。地址:http://people.apache.org/committer-index.html。
Jetbrains 正版全家桶
Jetbrains 為所有 Apache 貢獻者提供了全品類的免費許可證,根據 Apache 郵箱在 Jetbrains 官網申請永久免費許可證。
申請後,Jetbrains 會向你的郵箱傳送邀請連結。讓我比較感慨的有這一句話,感覺所做的事情是很有意義的。
We hope that our software will be useful for your work on the Apache Software Foundation projects. Thank you for your contribution to Open Source Software!
我們希望我們的軟體將對您在 Apache 軟體基金會專案中的工作有用。感謝您對開源軟體的貢獻!
ShardingSphere 倉庫寫許可權
普通開發者只能對 ShardingSphere 倉庫發起 PR,而 Committer 角色會擁有倉庫寫入許可權,即合併 PR 的許可權。
文末總結
Apache ShardingSphere 是一款開源分散式資料庫生態專案,旨在碎片化的異構資料庫上層構建生態,在最大限度的複用資料庫原生存算能力的前提下,進一步提供面向全域性的擴充套件和疊加計算能力。其核心採用可插拔架構,對上以資料庫協議及 SQL 方式提供諸多增強功能,包括資料分片、訪問路由、資料安全等。
如果大家對 Apache ShardingSphere 有任何疑問或建議,歡迎在 GitHub issue 列表提出,或可前往中文社群交流討論。
GitHub issue:https://github.com/apache/shardingsphere/issues
貢獻指南:https://shardingsphere.apache.org/community/cn/contribute/