【CSDN 編者按】幾天前疾层,當 GitHub 全球產(chǎn)品技術(shù)生態(tài)總經(jīng)理 Michael Francisco 談到中國開發(fā)者已經(jīng)成為 GitHub 上最活躍的群體時将饺,有開發(fā)者提出數(shù)量之后質(zhì)量也要跟上。的確痛黎,過去十數(shù)年間予弧,中國開源一直呈現(xiàn)企業(yè)熱使用熱社區(qū)冷開發(fā)冷的景象,不過現(xiàn)在正在顯著發(fā)生變化湖饱,從 Apache ShardingSphere 的成長歷程就可以一窺掖蛤。
歷經(jīng) 4 年,從第一行代碼到今天井厌,ShardingSphere 正式成為 Apache 頂級開源項目蚓庭,GitHub 開發(fā)者關(guān)系主管 Martin Woodward 如此評價道:“我們很高興看到這個社區(qū)在過去兩年里發(fā)展得非常好致讥,現(xiàn)在有 120 多個直接貢獻者∑髟蓿”在本文中垢袱,其核心初創(chuàng)人員為我們分享了它的開源之路,相信會對所有熱愛開源希望有所建樹的開發(fā)者們大有裨益港柜。
前言
從 Sharding-JDBC 到 Apache ShardingSphere请契;
從輕量級的分庫分表中間件到完整閉環(huán)的分布式數(shù)據(jù)庫中間件平臺;
從 2016 年 1 月的第一行代碼到現(xiàn)今的 300K+行代碼夏醉;
從寥寥無幾的關(guān)注到 GitHub 10K+ 的 star爽锥;
從無人問津的社區(qū)到 100+ 位貢獻者;
從公司內(nèi)部的應(yīng)用類庫到 100+ 的采用公司列表畔柔;
從尋找 mentor 到順利成為 Apache 頂級項目救恨。
……
Apache ShardingSphere 團隊核心初創(chuàng)人員將講述這其中的跌宕起伏,并以時間軸為線索為你呈現(xiàn)它開源之路背后的故事释树。
項目介紹
Apache ShardingSphere 是一套開源的分布式數(shù)據(jù)庫中間件解決方案組成的生態(tài)圈肠槽,它由 3 款相互獨立,卻又能夠混合部署配合使用的產(chǎn)品組成奢啥。它們均提供標準化的數(shù)據(jù)分片秸仙、分布式事務(wù)和數(shù)據(jù)庫治理功能,可適用于如 Java 同構(gòu)桩盲、異構(gòu)語言寂纪、云原生等各種多樣化的應(yīng)用場景,核心功能如 1-1 所示赌结。
Apache ShardingSphere 由三個子項目組成捞蛋,形成一個完整的數(shù)據(jù)庫解決方案,合稱 J.P.S. 生態(tài)系統(tǒng)柬姚。
ShardingSphere-JDBC:定位為輕量級 Java 框架拟杉,在 Java 的 JDBC 層提供額外服務(wù)。它使用客戶端直連數(shù)據(jù)庫量承,以 jar 包形式提供服務(wù)搬设,無需額外部署和依賴,可理解為增強版的 JDBC 驅(qū)動撕捍,完全兼容 JDBC 和各種 ORM 框架拿穴。?
ShardingSphere-Proxy:定位為透明化的數(shù)據(jù)庫代理端,提供封裝了數(shù)據(jù)庫二進制協(xié)議的服務(wù)端版本忧风,用于完成對異構(gòu)語言的支持默色。目前提供 MySQL/PostgreSQL 版本,它可以使用任何兼容 MySQL/PostgreSQL 協(xié)議的訪問客戶端操作數(shù)據(jù)狮腿,對 DBA 更加友好腿宰。
ShardingSphere-Sidecar(TODO):定位為 Kubernetes 的云原生數(shù)據(jù)庫代理弟蚀,以 Sidecar 的形式代理所有對數(shù)據(jù)庫的訪問。通過無中心酗失、零侵入的方案提供與數(shù)據(jù)庫交互的的嚙合層义钉,即 Database Mesh,又可稱數(shù)據(jù)網(wǎng)格规肴。
Apache ShardingSphere 的亮點主要包括:
完整的分布式數(shù)據(jù)庫解決方案:提供數(shù)據(jù)分片捶闸、分布式事務(wù)、數(shù)據(jù)彈性遷移拖刃、數(shù)據(jù)庫和數(shù)據(jù)治理等核心能力删壮。
獨立的 SQL 解析引擎:支持多 SQL 方言的完全獨立化 SQL 解析引擎,能夠脫離 ShardingSphere 獨立使用兑牡。
可插拔微內(nèi)核:所有的 SQL 方言央碟、數(shù)據(jù)庫協(xié)議和功能都能夠通過 SPI 的可插拔方式加載或卸載,微內(nèi)核甚至在未來可以運行于無任何功能的空白環(huán)境中均函。
Apache 基金會
The most popular open source software is Apache.
這是對 Apache 開源軟件基金最好的描述和肯定亿虽。它旨在為全世界提供優(yōu)質(zhì)的開源軟件,同時歡迎全世界的朋友加入 Apache 社區(qū)貢獻力量苞也,并在這個過程中不斷成長洛勉、得到肯定、共建開源社區(qū)如迟。無論是否從事軟件開發(fā)工作收毫,大家多少都知道它的存在及其提供的優(yōu)質(zhì)開源項目,可見其影響之大殷勘、之深遠此再。
此外,參與 Apache 開源社區(qū)玲销,并在自己的努力下成為 Apache Committer输拇,更是大多數(shù)軟件開發(fā)工程師心之所向。
ShardingSphere 在開源之初痒玩,就有進入 Apache 開源組織基金會的計劃淳附。其原因有以下幾點:
Apache 基金會獨特的 Apache way 和社區(qū)建設(shè)思想會讓一個開源項目更規(guī)范、更有生命力蠢古;
Apache 基金會的導(dǎo)師制度會為一個開源社區(qū)帶來優(yōu)秀的指導(dǎo)和幫助;
Apache 基金會會為其下的開源項目帶來版權(quán)和商標上的法律保護别凹;
Apache 基金會在全世界范圍內(nèi)的影響不言而喻草讶,若是能進入 Apache 基金會,則會擴大項目的影響力炉菲,使其進入世界范圍的開源領(lǐng)域堕战。
Apache 基金會內(nèi)的項目會更有機會登上世界舞臺坤溃,并與其他開源項目建立友好交流,也能吸引更多貢獻者加入社區(qū)嘱丢。
但同樣薪介,進入 Apache 開源基金會的門檻可并不簡單,特別對于國內(nèi)的項目來說越驻,語言和地域的障礙無疑雪上加霜汁政。
如何為 Apache 做準備?
找尋 mentor 是進入 Apache 基金的最初且最重要的一步缀旁。
在了解了 Apache 基金會的運作方式后记劈,我們便踏上了找尋 mentor 之旅。參加各種與開源相關(guān)的分享會或 meetup并巍,借此來認識 Apache 的 member目木。但是,事情卻并不順利懊渡。多次的嘗試刽射、接觸換來的只是口頭的認可。這段時間我們確實倍感壓力和焦慮剃执,甚至打算以后再說柄冲,一切隨緣。
后來一個契機忠蝗,我們認識了吳晟和華為的姜寧现横。吳晟是 Apache SkyWalking 項目的 VP,在開源領(lǐng)域有豐富的經(jīng)驗阁最。他和 ShardingSphere 的前身 Sharding-JDBC 很有淵源戒祠,Sharding-JDBC 項目原型也有他參與設(shè)計,因此速种,他最終作為 ShardingSphere 的 PPMC 一同建設(shè)社區(qū)姜盈。在參與 ShardingSphere 社區(qū)建設(shè)的這一年多的時間里,他又陸續(xù)擔任了多個 Apache 孵化項目的 Mentor配阵,并在今年被選舉為 Apache Member馏颂。
而姜寧同樣是一位熱心又有經(jīng)驗的老手,是國內(nèi)最資深的 Apache Member 之一棋傍,在與他交流的過程中救拉,終于讓我們看到一些希望,他也最終成為了我們的 mentor瘫拣。
再后來亿絮,團隊 VP 張亮又前去上海參加 HDC 大會,認識了我們的另一位 mentor—— Craig L Russell,Craig 當時是 Apache 的秘書長派昧,所有的 SGA黔姜、ICLA 等法務(wù)文件均由他負責簽署。在 ShardingSphere 孵化的過程中蒂萎,Craig 當選了 Apache 軟件基金會的主席秆吵。他友善而和氣,給予了我們很多有關(guān)社區(qū)規(guī)范的實用建議五慈,也愿意助我們一臂之力纳寂。
第三位 mentor 則是由 Apache RocketMQ 的核心成員馮嘉擔任;最后由 Roman Shaposhnik 擔任項目的 Champion豺撑,為項目尋找導(dǎo)師之旅畫上完美句號烈疚。至今還記得我們當時的欣喜和激動。之前的無助聪轿、徘徊爷肝、失落在這一瞬間柳暗花明。
每個進入 Apache 基金會的項目陆错,一定都有自己的故事灯抛。尤其對于中國的項目來說,語言與地域的障礙會讓我們更加艱難音瓷。好在有越來越多的來自于中國的項目進入了 Apache 基金會对嚼,也能看到越來越多的華人活躍在 Apache 的郵件列表里,還有 ALC Beijing 的建立讓參與門檻不斷降低绳慎,這對想要參與的國內(nèi)朋友來說纵竖,確實是個 good news!
進入 Apache 孵化器
為了正式進入 Apache 孵化器,項目代碼、社區(qū)搭盾、文檔等都需要進行一系列的規(guī)范和整理站粟。這確實是個瑣碎但很重要的事情炒辉。
代碼層面,合規(guī)操作是首要原則。我們梳理第三方依賴的許可協(xié)議,確保滿足 Apache 軟件許可協(xié)議(ASL)合規(guī)的要求画舌;
社區(qū)方面,我們開始由中文轉(zhuǎn)變成英文已慢;
文檔方面則需要我們準備英文文檔曲聂,并準備相關(guān)的 proposal。
由于項目最開始的目標就是進入 Apache 基金會蛇受,所以在項目初期句葵,依賴就盡可能地簡單厕鹃,社區(qū)相對規(guī)范兢仰,文檔在不斷翻譯乍丈。不打無準備之仗,這些提前的準備讓這部分工作進展順利把将,而項目獲得 Apache 域名的那一刻轻专,大家才真切感受到所有付出得到了最有價值的回報。
除了學(xué)習寫規(guī)范代碼察蹲,團隊成員也開始學(xué)習 Apache 的規(guī)范请垛、運作方式、英文溝通渠道等細節(jié)洽议。我們開始了解到如何關(guān)注社區(qū)宗收,什么是 consensus decision,如何用異步方式進行郵件溝通亚兄。特別是郵件列表的學(xué)習非常重要混稽,你可以在其中找到歷史問題記錄、合規(guī)的解決方案审胚、優(yōu)秀的案例等匈勋。
Apache way 的探索
很多人認為只要代碼開放,就叫做開源膳叨。但其實洽洁,這僅僅只是開源旅程的第一步。
如何構(gòu)建一個活躍的社區(qū)菲嘴,如何理解 Apache way饿自,是一個更為重要的話題。ShardingSphere 在進入 Apache 孵化器初期并未能完全理解 Apache way龄坪,并且由于過度注重代碼風格昭雌,以至于參與門檻較高、社區(qū)活躍度平平悉默。
起初城豁,我們并不知道問題出在哪里,迷茫了很長一段時間抄课,直到在跟 Apache 的 member 不斷交流的過程中才漸漸意識到問題所在唱星,因此社區(qū)發(fā)起了有關(guān) committer bar 的討論,見圖 1-2跟磨。這是社區(qū)建設(shè)之路的轉(zhuǎn)折點间聊,因為從此 community over code 的理念開始逐漸滲入人心,并指導(dǎo)我們的行動抵拘。
仔細閱讀 Apache way 的關(guān)注點:
Earned Authority, Community of Peers, Open Communications, Consensus Decision Making, Responsible Oversight
你會發(fā)現(xiàn)它一直在強調(diào)合規(guī)哎榴、開放、平等、協(xié)作尚蝌,為的就是建立合規(guī)且活躍的項目社區(qū)迎变,盡可能地做到讓更多的人參與,平等溝通飘言,推動項目發(fā)展衣形,促進個人成長。秉持這個理念姿鸿,ShardingSphere 開始在多維度進行調(diào)整:
代碼:規(guī)整代碼結(jié)構(gòu)谆吴,劃分模塊功能,提供項目可插拔能力苛预,從而允許用戶局部參與某一模塊的同時句狼,盡量不破壞整體代碼結(jié)構(gòu);
心態(tài):開放的心態(tài)热某,編制社區(qū)任務(wù)腻菇,鼓勵社區(qū)朋友參與,相關(guān) PPMC 或 Committer 積極提供指導(dǎo)和幫助苫拍;
規(guī)范:梳理文檔和代碼規(guī)范芜繁,并提供詳細的訂閱、參與指南绒极,大范圍促進用戶自主進行社區(qū)貢獻骏令;
交流:鼓勵社區(qū)盡可能使用郵件和 Issue 進行討論從而公開討論內(nèi)容,同時針對較為細節(jié)的討論則放在微信群里進行垄提。此外榔袋,官方公眾號還會介紹社區(qū)的進展、Release铡俐、刊登技術(shù)文章等凰兑;
合作:與其他 Apache 社區(qū)建立聯(lián)系、增加溝通审丘,從合作交流中進行學(xué)習和發(fā)展吏够。
在孵化期間,Apache ShardingSphere 先后與 Apache SkyWalking滩报、Apache ServiceComb 進行項目的合作與集成锅知,不僅彼此的產(chǎn)品功能更加完善,還增加了社區(qū)成員之間的交流脓钾。此外售睹,還與 Apache DolphinScheduler(Incubating)和 Apache IoTDB(Incubating)舉辦了 co-meetup,詳見圖 1-3可训。還與 Apach pulsar 和 Apache APISIX(Incubating)的核心成員們進行了多次交流和探討昌妹。
經(jīng)過時間的積累捶枢,社區(qū)已有了質(zhì)的變化。從社區(qū)的郵件討論飞崖、GitHub 的數(shù)據(jù)展示中烂叔,你會發(fā)現(xiàn) ShardingSphere 的社區(qū)開始真正變得活躍與多元化。圖 1-4 展示了 ShardingSphere 在 Apache 孵化器一年多的社區(qū)數(shù)據(jù)變化蚜厉。
社區(qū)與貢獻者之間的依賴和互贏也在整個過程中體現(xiàn)的淋漓盡致长已。對于貢獻者來說畜眨,他們會在這個開源社區(qū)中與其他人交流昼牛、協(xié)作。而這個持續(xù)的過程康聂,將帶來以下成果:
擴大人際交友圈
不斷學(xué)習與成長
提高自己的技術(shù)影響力
拓寬職業(yè)渠道
結(jié)合興趣贰健,享受過程
對于社區(qū)來說,這個相互幫助和溝通的過程則會:
拓展項目的功能
收獲活躍多元化的生態(tài)圈
增加項目知名度
獲得社區(qū)的可持續(xù)發(fā)展
從這個角度來看恬汁,不斷探索 Apache way 不也是希望出現(xiàn)這樣一種共贏而互助的局面嗎伶椿?Please remember community over code。
從孵化器畢業(yè)
所有孵化器的項目最終都希望能走向 TLP(Top Level Project)氓侧。在 mentor 的指導(dǎo)脊另、PPMC 的探索、committer 和 contributor 的支持與付出下约巷,ShardingSphere 開始籌備 Apache 孵化器畢業(yè)偎痛。
依據(jù) Apache 的成熟度評估模型圖 1-5,在以下幾個方面評估社區(qū)和項目是否成熟独郎。其實在 Apache 項目社區(qū)的初建階段踩麦,我們建議大家就在這幾個方面發(fā)力,因為這是官方給予的畢業(yè)標準及指導(dǎo)方針氓癌。以此為方向谓谦,探索屬于各自項目的獨特社區(qū)運作方式,也可謂是百花齊放贪婉。
經(jīng)歷 Release反粥、社區(qū)建設(shè)、Apache member 的指導(dǎo)疲迂、meetup 舉辦等一系列事件才顿,ShardingSphere 終于在社區(qū)發(fā)起了畢業(yè)討論,開始接受 Apache member 及所有 Apache 成員的指導(dǎo)和評估鬼譬。雖然最終以 10 +1 binding votes娜膘,6 +1 non-binding votes 和 no -1 or +/-0 votes 通過畢業(yè)投票,但過程也是一波三折优质。
即便是經(jīng)過 1 年多的社區(qū)建設(shè)竣贪,項目基本成熟军洼,但面對畢業(yè)還是有很多工作要合乎畢業(yè)規(guī)范。例如確認商標是否可使用演怎、完成項目官網(wǎng)有關(guān) Apache brand 和 trademark 的陳述匕争、網(wǎng)站符合 Apache way 等。在這個投票期間爷耀,由于官網(wǎng)存在 fork me on github 的 slogan甘桑,而這一問題一直頻繁出現(xiàn)并且沒有結(jié)論,所以其他 Apache 成員借此單獨開辟了 thread 來討論這一問題歹叮,查看 Email List 了解詳情跑杭。雖說這一舉讓 ShardingSphere 被成功推到前臺,間接提高了項目的曝光咆耿,卻也能看出 Apache 對于第三方獨立德谅、禁止參與商業(yè)行為的重視和嚴苛。
可喜可賀的是萨螺,2020 年 4 月 16 日窄做,Apache ShardingSphere 最終通過基金會董事會決議,加入了 TLP 行業(yè)慰技!
未來的路
回首這一路椭盏,收獲與付出兼存。這篇文章旨在用故事為大家?guī)砀鼮樯鷦游巧獭⑷娴年U述和論據(jù)支撐掏颊,而在文章結(jié)尾,我們也特別想對開發(fā)者朋友說:
愿這篇文章能為你打開新的思路手报,它像一扇窗蚯舱,為有心的人呈現(xiàn)另一種職業(yè)風景,帶來新的思潮掩蛤。
希望文章有關(guān)”參與開源社區(qū)意義“的部分能為你解答有關(guān)開源價值的問題枉昏。
每一個 Apache 開源項目都有自己獨特的社區(qū)發(fā)展方向和價值觀。參與其中揍鸟,選擇與你氣味相投的社區(qū)兄裂,是一件很有價值且很有意思的事情。
有張有弛阳藻,有進有退晰奖;不妄自菲薄,也不目空一切腥泥;在開源的領(lǐng)域匾南,更確切說在 Apache 開源社區(qū),更多的是遵守規(guī)范蛔外、開放包容蛆楞、平等交流溯乒、互相學(xué)習。?
低頭工作豹爹,便全力以赴裆悄;耳聞窗外,便接收新潮臂聋,更新大腦光稼。
從 Apache 孵化器畢業(yè)成為 TLP,對 ShardingSphere 來說孩等,并不是一個結(jié)束艾君,而是另一個開始。在產(chǎn)品功能上瞎访,ShardingSphere 將繼續(xù)在分布式數(shù)據(jù)庫中間件平臺上深耕腻贰,打磨出以“分布式”為核心的數(shù)據(jù)庫中間件生態(tài)圈,從而提供完整的解決方案扒秸,如圖 1-6 所示。從社區(qū)角度講冀瓦,ShardingSphere 仍將繼續(xù)活躍社區(qū)伴奥,鼓勵更多朋友成為社區(qū)的 committer 和 contributor。所以翼闽,我們歡迎大家關(guān)注 ShardingSphere拾徙,并加入到社區(qū)來,與更多知己結(jié)伴前行感局。未來之路不可預(yù)測尼啡,但立足當下,眺望未來询微,初心未改崖瞭,即便亦步亦趨,也愿一葦以航撑毛!
Apache ShardingSphere Committer 列表
Mentor
Craig L Russell
馮嘉书聚,阿里巴巴
姜寧,華為
PMC
張亮藻雌,京東數(shù)科
潘娟雌续,京東數(shù)科
趙俊,京東數(shù)科
張永倫胯杭,京東數(shù)科
陳清陽驯杜,翼支付
曹昊,海南新軟
馬曉光
杜紅軍做个,領(lǐng)創(chuàng)智信
楊翊鸽心,京東數(shù)科
吳晟腔呜,tetrate.io
高洪濤,tetrate.io
Committer
李亞再悼,九個小海豹
顏志一核畴,DaoCloud
董宗磊,京東零售
孫海生冲九,瓜子
王奇谤草,京東零售
歐陽文,一卡易
蔣曉峰莺奸,阿里巴巴
王光遠
秦金衛(wèi)丑孩,京東數(shù)科
岳令
趙亞楠
Apache ShardingSphere 官網(wǎng):
https://shardingsphere.apache.org/
GitHub 地址:
https://github.com/apache/shardingsphere
作者簡介:
潘娟,京東數(shù)科高級 DBA灭贷,Apache ShardingSphere PMC温学。
張亮,京東數(shù)科數(shù)據(jù)研發(fā)負責人甚疟,Apache ShardingSphere VP仗岖,Apache Dubbo PMC,人氣開源項目 Elastic-Job 作者览妖。
開源社線上直播?“源”來如此?報名方式
掃描下方二維碼通過活動行報名填寫信息轧拄,添加小編微信號:chatbot-yuan,回復(fù)OS讽膏,進入“源”來如此粉絲群檩电。相信你可以在這里和志同道合的伙伴們愉快交流!
8月9日14:00-16:00府树,我們不見不散俐末!