GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

【CSDN 編者按】幾天前,當 GitHub 全球產品技術生態總經理 Michael Francisco 談到中國開發者已經成為 GitHub 上最活躍的群體時,有開發者提出數量之後質量也要跟上。的確,過去十數年間,中國開源一直呈現企業熱使用熱社區冷開發冷的景象,不過現在正在顯著發生變化,從 Apache ShardingSphere 的成長曆程就可以一窺。

歷經 4 年,從第一行代碼到今天,ShardingSphere 正式成為 Apache 頂級開源項目,GitHub 開發者關係主管 Martin Woodward 如此評價道:“我們很高興看到這個社區在過去兩年裡發展得非常好,現在有 120 多個直接貢獻者。”在本文中,其核心初創人員為我們分享了它的開源之路,相信會對所有熱愛開源希望有所建樹的開發者們大有裨益。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

作者 | 潘娟,Apache ShardingSphere PMC

張亮,Apache ShardingSphere VP

責編 | 唐小引

頭圖 | CSDN 下載自東方 IC

出品 | CSDN(ID:CSDNnews)

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

前言

從 Sharding-JDBC 到 Apache ShardingSphere;

從輕量級的分庫分表中間件到完整閉環的分佈式數據庫中間件平臺;

從 2016 年 1 月的第一行代碼到現今的 300K+行代碼;

從寥寥無幾的關注到 GitHub 10K+ 的 star;

從無人問津的社區到 100+ 位貢獻者;

從公司內部的應用類庫到 100+ 的採用公司列表;

從尋找 mentor 到順利成為 Apache 頂級項目。

……

Apache ShardingSphere 團隊核心初創人員將講述這其中的跌宕起伏,並以時間軸為線索為你呈現它開源之路背後的故事。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路
GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

項目介紹

Apache ShardingSphere 是一套開源的分佈式數據庫中間件解決方案組成的生態圈,它由 3 款相互獨立,卻又能夠混合部署配合使用的產品組成。它們均提供標準化的數據分片、分佈式事務和數據庫治理功能,可適用於如 Java 同構、異構語言、雲原生等各種多樣化的應用場景,核心功能如 1-1 所示。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

1-1 ShardingSphere 核心功能架構圖

Apache ShardingSphere 由三個子項目組成,形成一個完整的數據庫解決方案,合稱 J.P.S. 生態系統。

  • ShardingSphere-JDBC:定位為輕量級 Java 框架,在 Java 的 JDBC 層提供額外服務。它使用客戶端直連數據庫,以 jar 包形式提供服務,無需額外部署和依賴,可理解為增強版的 JDBC 驅動,完全兼容 JDBC 和各種 ORM 框架。

  • ShardingSphere-Proxy:定位為透明化的數據庫代理端,提供封裝了數據庫二進制協議的服務端版本,用於完成對異構語言的支持。目前提供 MySQL/PostgreSQL 版本,它可以使用任何兼容 MySQL/PostgreSQL 協議的訪問客戶端操作數據,對 DBA 更加友好。

  • ShardingSphere-Sidecar(TODO):定位為 Kubernetes 的雲原生數據庫代理,以 Sidecar 的形式代理所有對數據庫的訪問。通過無中心、零侵入的方案提供與數據庫交互的的齧合層,即 Database Mesh,又可稱數據網格。

Apache ShardingSphere 的亮點主要包括:

  • 完整的分佈式數據庫解決方案:提供數據分片、分佈式事務、數據彈性遷移、數據庫和數據治理等核心能力。

  • 獨立的 SQL 解析引擎:支持多 SQL 方言的完全獨立化 SQL 解析引擎,能夠脫離 ShardingSphere 獨立使用。

  • 可插拔微內核:所有的 SQL 方言、數據庫協議和功能都能夠通過 SPI 的可插拔方式加載或卸載,微內核甚至在未來可以運行於無任何功能的空白環境中。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

Apache 基金會

The most popular open source software is Apache.

這是對 Apache 開源軟件基金最好的描述和肯定。它旨在為全世界提供優質的開源軟件,同時歡迎全世界的朋友加入 Apache 社區貢獻力量,並在這個過程中不斷成長、得到肯定、共建開源社區。無論是否從事軟件開發工作,大家多少都知道它的存在及其提供的優質開源項目,可見其影響之大、之深遠。

此外,參與 Apache 開源社區,並在自己的努力下成為 Apache Committer,更是大多數軟件開發工程師心之所向。

ShardingSphere 在開源之初,就有進入 Apache 開源組織基金會的計劃。其原因有以下幾點:

  • Apache 基金會獨特的 Apache way 和社區建設思想會讓一個開源項目更規範、更有生命力;

  • Apache 基金會的導師制度會為一個開源社區帶來優秀的指導和幫助;

  • Apache 基金會會為其下的開源項目帶來版權和商標上的法律保護;

  • Apache 基金會在全世界範圍內的影響不言而喻,若是能進入 Apache 基金會,則會擴大項目的影響力,使其進入世界範圍的開源領域。

  • Apache 基金會內的項目會更有機會登上世界舞臺,並與其他開源項目建立友好交流,也能吸引更多貢獻者加入社區。

但同樣,進入 Apache 開源基金會的門檻可並不簡單,特別對於國內的項目來說,語言和地域的障礙無疑雪上加霜。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

如何為 Apache 做準備?

找尋 mentor 是進入 Apache 基金的最初且最重要的一步。

在瞭解了 Apache 基金會的運作方式後,我們便踏上了找尋 mentor 之旅。參加各種與開源相關的分享會或 meetup,藉此來認識 Apache 的 member。但是,事情卻並不順利。多次的嘗試、接觸換來的只是口頭的認可。這段時間我們確實倍感壓力和焦慮,甚至打算以後再說,一切隨緣。

後來一個契機,我們認識了吳晟和華為的姜寧。吳晟是 Apache SkyWalking 項目的 VP,在開源領域有豐富的經驗。他和 ShardingSphere 的前身 Sharding-JDBC 很有淵源,Sharding-JDBC 項目原型也有他參與設計,因此,他最終作為 ShardingSphere 的 PPMC 一同建設社區。在參與 ShardingSphere 社區建設的這一年多的時間裡,他又陸續擔任了多個 Apache 孵化項目的 Mentor,並在今年被選舉為 Apache Member。

而姜寧同樣是一位熱心又有經驗的老手,是國內最資深的 Apache Member 之一,在與他交流的過程中,終於讓我們看到一些希望,他也最終成為了我們的 mentor。

再後來,團隊 VP 張亮又前去上海參加 HDC 大會,認識了我們的另一位 mentor—— Craig L Russell,Craig 當時是 Apache 的秘書長,所有的 SGA、ICLA 等法務文件均由他負責簽署。在 ShardingSphere 孵化的過程中,Craig 當選了 Apache 軟件基金會的主席。他友善而和氣,給予了我們很多有關社區規範的實用建議,也願意助我們一臂之力。

第三位 mentor 則是由 Apache RocketMQ 的核心成員馮嘉擔任;最後由 Roman Shaposhnik 擔任項目的 Champion,為項目尋找導師之旅畫上完美句號。至今還記得我們當時的欣喜和激動。之前的無助、徘徊、失落在這一瞬間柳暗花明。

每個進入 Apache 基金會的項目,一定都有自己的故事。尤其對於中國的項目來說,語言與地域的障礙會讓我們更加艱難。好在有越來越多的來自於中國的項目進入了 Apache 基金會,也能看到越來越多的華人活躍在 Apache 的郵件列表裡,還有 ALC Beijing 的建立讓參與門檻不斷降低,這對想要參與的國內朋友來說,確實是個 good news!

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

進入 Apache 孵化器

為了正式進入 Apache 孵化器,項目代碼、社區、文檔等都需要進行一系列的規範和整理。這確實是個瑣碎但很重要的事情。

  • 代碼層面,合規操作是首要原則。我們梳理第三方依賴的許可協議,確保滿足 Apache 軟件許可協議(ASL)合規的要求;

  • 社區方面,我們開始由中文轉變成英文;

  • 文檔方面則需要我們準備英文文檔,並準備相關的 proposal。

由於項目最開始的目標就是進入 Apache 基金會,所以在項目初期,依賴就儘可能地簡單,社區相對規範,文檔在不斷翻譯。不打無準備之仗,這些提前的準備讓這部分工作進展順利,而項目獲得 Apache 域名的那一刻,大家才真切感受到所有付出得到了最有價值的回報。

除了學習寫規範代碼,團隊成員也開始學習 Apache 的規範、運作方式、英文溝通渠道等細節。我們開始瞭解到如何關注社區,什麼是 consensus decision,如何用異步方式進行郵件溝通。特別是郵件列表的學習非常重要,你可以在其中找到歷史問題記錄、合規的解決方案、優秀的案例等。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

Apache way 的探索

很多人認為只要代碼開放,就叫做開源。但其實,這僅僅只是開源旅程的第一步。

如何構建一個活躍的社區,如何理解 Apache way,是一個更為重要的話題。ShardingSphere 在進入 Apache 孵化器初期並未能完全理解 Apache way,並且由於過度注重代碼風格,以至於參與門檻較高、社區活躍度平平。

起初,我們並不知道問題出在哪裡,迷茫了很長一段時間,直到在跟 Apache 的 member 不斷交流的過程中才漸漸意識到問題所在,因此社區發起了有關 committer bar 的討論,見圖 1-2。這是社區建設之路的轉折點,因為從此 community over code 的理念開始逐漸滲入人心,並指導我們的行動。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

1-2 Committer bar 討論郵件

仔細閱讀 Apache way 的關注點:

Earned Authority, Community of Peers, Open Communications, Consensus Decision Making, Responsible Oversight

你會發現它一直在強調合規、開放、平等、協作,為的就是建立合規且活躍的項目社區,儘可能地做到讓更多的人參與,平等溝通,推動項目發展,促進個人成長。秉持這個理念,ShardingSphere 開始在多維度進行調整:

  • 代碼:規整代碼結構,劃分模塊功能,提供項目可插拔能力,從而允許用戶局部參與某一模塊的同時,儘量不破壞整體代碼結構;

  • 心態:開放的心態,編制社區任務,鼓勵社區朋友參與,相關 PPMC 或 Committer 積極提供指導和幫助;

  • 規範:梳理文檔和代碼規範,並提供詳細的訂閱、參與指南,大範圍促進用戶自主進行社區貢獻;

  • 交流:鼓勵社區儘可能使用郵件和 Issue 進行討論從而公開討論內容,同時針對較為細節的討論則放在微信群裡進行。此外,官方公眾號還會介紹社區的進展、Release、刊登技術文章等;

  • 合作:與其他 Apache 社區建立聯繫、增加溝通,從合作交流中進行學習和發展。

在孵化期間,Apache ShardingSphere 先後與 Apache SkyWalking、Apache ServiceComb 進行項目的合作與集成,不僅彼此的產品功能更加完善,還增加了社區成員之間的交流。此外,還與 Apache DolphinScheduler(Incubating)和 Apache IoTDB(Incubating)舉辦了 co-meetup,詳見圖 1-3。還與 Apach pulsar 和 Apache APISIX(Incubating)的核心成員們進行了多次交流和探討。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

1-3 co-meetup

經過時間的積累,社區已有了質的變化。從社區的郵件討論、GitHub 的數據展示中,你會發現 ShardingSphere 的社區開始真正變得活躍與多元化。圖 1-4 展示了 ShardingSphere 在 Apache 孵化器一年多的社區數據變化。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

1-4 社區數據變化

社區與貢獻者之間的依賴和互贏也在整個過程中體現的淋漓盡致。對於貢獻者來說,他們會在這個開源社區中與其他人交流、協作。而這個持續的過程,將帶來以下成果:

  • 擴大人際交友圈

  • 不斷學習與成長

  • 提高自己的技術影響力

  • 拓寬職業渠道

  • 結合興趣,享受過程

對於社區來說,這個相互幫助和溝通的過程則會:

  • 拓展項目的功能

  • 收穫活躍多元化的生態圈

  • 增加項目知名度

  • 獲得社區的可持續發展

從這個角度來看,不斷探索 Apache way 不也是希望出現這樣一種共贏而互助的局面嗎?Please remember community over code。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

從孵化器畢業

所有孵化器的項目最終都希望能走向 TLP(Top Level Project)。在 mentor 的指導、PPMC 的探索、committer 和 contributor 的支持與付出下,ShardingSphere 開始籌備 Apache 孵化器畢業。

依據 Apache 的成熟度評估模型圖 1-5,在以下幾個方面評估社區和項目是否成熟。其實在 Apache 項目社區的初建階段,我們建議大家就在這幾個方面發力,因為這是官方給予的畢業標準及指導方針。以此為方向,探索屬於各自項目的獨特社區運作方式,也可謂是百花齊放。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

1-5 1-5 Apache 項目成熟度評估模型

經歷 Release、社區建設、Apache member 的指導、meetup 舉辦等一系列事件,ShardingSphere 終於在社區發起了畢業討論,開始接受 Apache member 及所有 Apache 成員的指導和評估。雖然最終以 10 +1 binding votes,6 +1 non-binding votes 和 no -1 or +/-0 votes 通過畢業投票,但過程也是一波三折。

即便是經過 1 年多的社區建設,項目基本成熟,但面對畢業還是有很多工作要合乎畢業規範。例如確認商標是否可使用、完成項目官網有關 Apache brand 和 trademark 的陳述、網站符合 Apache way 等。在這個投票期間,由於官網存在 fork me on github 的 slogan,而這一問題一直頻繁出現並且沒有結論,所以其他 Apache 成員藉此單獨開闢了 thread 來討論這一問題,查看 Email List 瞭解詳情。雖說這一舉讓 ShardingSphere 被成功推到前臺,間接提高了項目的曝光,卻也能看出 Apache 對於第三方獨立、禁止參與商業行為的重視和嚴苛。

可喜可賀的是,2020 年 4 月 16 日,Apache ShardingSphere 最終通過基金會董事會決議,加入了 TLP 行業!

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

未來的路

回首這一路,收穫與付出兼存。這篇文章旨在用故事為大家帶來更為生動、全面的闡述和論據支撐,而在文章結尾,我們也特別想對開發者朋友說:

  • 願這篇文章能為你打開新的思路,它像一扇窗,為有心的人呈現另一種職業風景,帶來新的思潮。

  • 希望文章有關”參與開源社區意義“的部分能為你解答有關開源價值的問題。

  • 每一個 Apache 開源項目都有自己獨特的社區發展方向和價值觀。參與其中,選擇與你氣味相投的社區,是一件很有價值且很有意思的事情。

  • 有張有弛,有進有退;不妄自菲薄,也不目空一切;在開源的領域,更確切說在 Apache 開源社區,更多的是遵守規範、開放包容、平等交流、互相學習。

  • 低頭工作,便全力以赴;耳聞窗外,便接收新潮,更新大腦。

從 Apache 孵化器畢業成為 TLP,對 ShardingSphere 來說,並不是一個結束,而是另一個開始。在產品功能上,ShardingSphere 將繼續在分佈式數據庫中間件平臺上深耕,打磨出以“分佈式”為核心的數據庫中間件生態圈,從而提供完整的解決方案,如圖 1-6 所示。從社區角度講,ShardingSphere 仍將繼續活躍社區,鼓勵更多朋友成為社區的 committer 和 contributor。所以,我們歡迎大家關注 ShardingSphere,並加入到社區來,與更多知己結伴前行。未來之路不可預測,但立足當下,眺望未來,初心未改,即便亦步亦趨,也願一葦以航!

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

1-6 Apache ShardingSphere 生態圈

Apache ShardingSphere Committer 列表

Mentor

  • Craig L Russell

  • 馮嘉,阿里巴巴

  • 姜寧,華為

PMC

  • 張亮,京東數科

  • 潘娟,京東數科

  • 趙俊,京東數科

  • 張永倫,京東數科

  • 陳清陽,翼支付

  • 曹昊,海南新軟

  • 馬曉光

  • 杜紅軍,領創智信

  • 楊翊,京東數科

  • 吳晟,tetrate.io

  • 高洪濤,tetrate.io

Committer

  • 李亞,九個小海豹

  • 顏志一,DaoCloud

  • 董宗磊,京東零售

  • 孫海生,瓜子

  • 王奇,京東零售

  • 歐陽文,一卡易

  • 蔣曉峰,阿里巴巴

  • 王光遠

  • 秦金衛,京東數科

  • 嶽令

  • 趙亞楠

Apache ShardingSphere 官網:

https://shardingsphere.apache.org/

https://github.com/apache/shardingsphere

作者簡介:

潘娟,京東數科高級 DBA,Apache ShardingSphere PMC。

張亮,京東數科數據研發負責人,Apache ShardingSphere VP,Apache Dubbo PMC,人氣開源項目 Elastic-Job 作者。

GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

☞同期兩篇Nature:運行溫度高於1K的量子計算平臺問世!

☞Libra的Move語言初探,10行代碼實現你第一個智能合約

☞程序員:“我放棄了年薪20萬的Offer”

☞20萬個法人、百萬條銀行賬戶信息,正在暗網兜售

☞以太坊2.0中的Custody Game及MPC實現

☞很用心的為你寫了9道MySQL面試題,建議收藏!


分享到:


相關文章: