80% 的代码曾由一人提交, Apache ShardingSphere 何以从 ASF 毕业并晋升 TLP 顶
4 月 16 日,Apache 軟件基金會(Apache Software Foundation,ASF)宣布 Apache ShardingSphere 畢業并成為 Apache 頂級項目(Top Level Project,TLP)。這也是目前 ASF 首個分布式數據庫中間件項目。
ASF 是全球最大的開源軟件基金會,是專門為支持開源軟件項目而辦的一個非盈利性組織,提供組織、法律和財務等方面的支持,其支持的 Apache 項目與子項目中,所發行的軟件產品都遵循 Apache 許可證(Apache License)。據其 2019 年 8 月的財報顯示,ASF 彼時擁有 332 個頂級項目,47 個孵化項目。孵化項目畢業之后有機會成為頂級項目。
這次Apache ShardingSphere 從成為孵化器項目,到畢業成為頂級項目用時 17 個月。期間,完成了產品從分庫分表中間件轉變為了分布式數據庫生態平臺的升級。社區運營方面,從孵化前的 30+ 貢獻者,到現在有超過 120 個貢獻者。
不過,在進入孵化器之前,Apache ShardingSphere 也經歷了社區活躍度不夠,代碼幾乎由一人提交的階段。為此,Apache ShardingSphere 團隊也做了不少努力才成為 ASF 孵化器項目,之后在導師的幫助下,不斷完善社區發展。
作為 2020 年首個成為 ASF 頂級項目的中國團隊項目,Apache ShardingSphere 的發展及其孵化經歷或可為更多項目提供經驗。所以開源中國邀請 Apache ShardingSphere 項目 VP 張亮,請其分享相關情況。
摸著石頭過河
“現在回想起來,2015 年是數據庫思潮百家爭鳴的爆發前期。”
張亮記得,當時以 Hadoop 為主的大數據解決方案、以及以 NoSQL 為主的關系型數據庫替代方案在好評不斷之后開始逐漸降溫。
同時,容器和微服務是最熱門的話題,Docker 越來越受到廣泛的認可,現在一統天下的 Kubernetes 也在當年發布了 1.0 版本。Google 在幾年前發布的 Spanner 和 F1 等分布式數據庫相關的論文,在經過了一段時間的沉淀和發酵后,受到越來越多人的關注。很多人開始探索服務化之后的事情,也就是數據應該如何以分布式和云原生的方式存儲,“在那個革新的年代,更多的人愿意把精力投入在服務化的云原生之上。”
分布式數據庫 NewSQL 應運而生,但新的解決方案還沒那么快成熟。直到 2016 年 6 月,Andrew Pavlo 與 Matthew Aslett 發表論文《What's Really New with NewSQL》,將 NewSQL 劃分為 3 個大類:新架構(New Architecture)、透明化分片中間件(Transparent Sharding Middleware)和云數據庫(Database-as-a-Service)。NewSQL 的發展路徑才開始更為清晰。
而在 2015 年,張亮和他的團隊在決定采用在 Java 的 JDBC 層織入代碼,來達到開發成本最小化,自研開源的分布式數據庫中間項目——也就是 Sharding-JDBC( Apache ShardingSphere 前身)的時候,并未意識到,分庫分表的中間件其實也是 NewSQL 一種形態。
發布之后,Sharding-JDBC 也在隨著市場的需求不斷更新,完成到 ShardingSphere,再到 Apache ShardingSphere 的轉變,產品本身已從分庫分表的 Java 開發框架演化為了分布式數據庫生態體系。(后文統一將項目名簡稱為 ShardingSphere)
此外,從開始就走開源路線是基于大量調研的選擇。張亮團隊調研發現,當時已有的項目雖然能夠出色地解決某一領域的問題,但確實還未出現一個足夠成熟的產品。更讓他們擔憂的是項目的可持續發展可能性。在調研的項目中,無一例外的在經過一段時間之后停止更新,或極大的放緩了更新步伐,“這些項目并未產生足以引起開發者共鳴的活躍社區來驅動項目的長期發展。”
張亮認為,互聯網公司往往是忙碌的,需求層出不窮,故 ShardingSphere 項目發展規劃也是根據需求在不斷調整,螺旋上升。而開源項目可以接收到各方各面的需求,遠不是公司內部項目可以比擬的。這些公司外的需求可以不斷完善 ShardingSphere,如即將發布的 5.0 版本便是起意于多樣化的需求。
張亮:
多樣化的需求,使得 ShardingSphere 漸漸的確立了項目核心理念——可插拔平臺,它將在即將發布的 5.0 版本正式登場。
可插拔平臺的上線,意味著 ShardingSphere 從解決方案提供者演化為可自由擴展的平臺級應用。在它的核心設計中,可插拔組件將劃分為技術組件和功能組件。
技術組件包括:SQL 方言、事務類型、注冊中心類型等;相對于易于理解的技術組件可插拔,功能組件可插拔則更加令人激動。它意為著 ShardingSphere 的所有功能,如:分片、脫敏、分布式事務、讀寫分離、分布式治理、彈性調度等能力,將能夠以插件的方式從平臺中添加或刪除。功能之間完全獨立,多個功能同時使用,則由可插拔平臺負責能力的疊加。
可插拔平臺甚至可以不添加任何功能,以空白骨架運行,為工程師提供開發新插件的基礎設施。
我非常看好可插拔平臺能讓貢獻者更加方便的融入社區,并為 ShardingSphere 提供更加多元化的能力,如:多副本、SQL 審計、多模異構數據、HTAP 等。
(可插拔平臺設計)
當然,多樣的需求會加大工作的難度。張亮透露,如何明確公司之外需求的優先級,對于在京東數科開發 ShardingSphere 的同學來說,是難以決策的。比如:使用 XA 還是使用柔性事務作為 ShardingSphere 的事務處理引擎;是否提供公司需求之外的界面;如何處理公司暫時不使用的影子表壓測等社區需求等……
“蹲守”ASF 國外導師
踏上了開源之路,除了內部人員會面臨選擇和難題,如何調動社區,讓項目持久發展,也是亟待解決的問題。
ShardingSphere 2016 年 1 月 17 日初次開源。之后的兩年,張亮一人提交了項目 80% 以上的代碼,這支撐了項目最初的發展,卻也“限制”著一個開源項目的社區壯大。
“如果 ShardingSphere 始終是我個人的開源項目,或者是隸屬于某家公司的開源項目,那么參與貢獻的工程師難免會有顧慮。他們有理由擔心自己的付出也許會由于我個人喜好或公司商業計劃的變遷而付諸東流。”在張亮看來,國內始終不缺乏優秀且富有理想的工程師,而是缺乏為之付出的靶心。
如果項目可進入 ASF,那么項目精神屬性的改變會高于代碼本身的改變。項目參與者的所有貢獻將永久的留存在 ASF 的貢獻列表中,并公開展現給世界上的每一個程序員,也不必擔心 ASF 突然將項目宣布閉源。“我希望加入 ASF 之后的 ShardingSphere,能夠打破用戶的心理戒備,并激發貢獻者的共鳴。基金會的存在,是對項目開放和可持續發展的最有力保證。”
2018 年 11 月 10 日,ShardingSphere 進入 ASF 孵化器。而早在 2018 年 5 月,張亮團隊就已經在為進入 ASF 孵化器做準備了。
除了基本的提供英文文檔,將 Issue 由中文轉變為英文,任務盡量由 Issue 驅動等準備。張亮團隊還面臨兩個挑戰:一是需要增添項目社區驅動力屬性,使其更貼合 Apache Way。二是要“蹲守”ASF 的國外導師,爭取面對面交流機會,以期獲得導師幫助進入孵化器。
按照 ASF 規定,進入其孵化器,至少需要一位導師(mentor)的推薦,一般進入孵化器的項目都至少有 3 名導師的幫助。同時,社區本身也有面向 Apache Way 發展的意愿。
Apache Way 被認為沒有“單一模式”,它可以看做是項目管理委員會需要遵循的基本原則。Apache 項目及其社區專注于項目生命周期中特定階段所需要的活動,包括培育社區、開發優秀代碼、建立意識。ASF 堅持“社區優于代碼”,堅定認為,強大的社區總是可以糾正代碼中的問題,反之,不健康的社區可能難以持續維護代碼庫。
但彼時,ShardingSphere 社區參與度并不高,用張亮的話來說就是:“項目本身并不是由社區驅動,一個獨行俠掌控的項目顯然不符合 Apache Way。”于是,ShardingSphere 開始鼓勵社區貢獻者多多參與。在具備了基本的 Apache Way 要素之后,尋找導師的路才逐漸變得通暢。
張亮認為,在導師方面,面對面交流對比郵件更容易建立信任。而 2018 年,擁有 ASF 導師身份的國人非常少,因此,尋找國外的導師非常重要,也相對困難,“我們采取長時間收集和跟蹤國外導師來中國的行程的策略,爭取多和導師建立面對面交流的機會。”
ShardingSphere 進入 Apache 孵化器時,有三位導師和一位 Champion,其中一位外國導師和外國 Champion 是張亮在參加會議時結識的。
張亮:
在參加 HDC 會議的時候,我認識了當時還是 ASF 秘書長的 Craig L Russell,他愿意成為 ShardingSphere 項目的導師;同時也認識了 ASF 的資深大神 Roman Shaposhnik,他愿意成為項目的 Champion。
其余的兩位導師來自于國內,他們分別是 Apache ServiceComb 社區的資深 Apache 成員姜寧和 Apache RocketMQ 社區的馮嘉。就這樣,在三位導師和一位 Champion 的幫助下,我們成功的進入了 Apache 孵化器。
(2018 年 12 月,時任 Apache 基金會主席,導師 Craig 訪問京東數科的小伙伴)
導師是項目可以進入孵化器的關鍵人物,其主要任務是讓項目的 PPMC 理解 Apache 的規則,PPMC 主要職責是版本發布和提交者選舉。張亮對這個模式做了進一步解釋:“導師的指導僅限于讓孵化項目踐行 Apache Way,而不是項目本身的技術和產品發展路徑。項目的 Roadmap,是由 PPMC 和提交者共同決定的。
張亮:
Apache 的開源理念認為凡是符合 Apache Way 的項目最終將會得到很好的發展,因此,導師、PPMC 和提交者各司其職即可。
項目的貢獻不僅在于代碼,它是多元化的,還包括郵件討論、決議、文檔、回答問題、分享、運營等等,任何貢獻都是被認可的。除了社區的組建,法務合規也是至關重要的。導師將指導 PPMC 完成項目的許可證、品牌、知識產權的合規性。
導師是 Apache Way 的專家,并非項目的技術專家。
在孵化過程中,導師們為 ShardingSphere 社區提供了很多幫助和指導。包括 Apache Way 的指導,社區拓展的方針,郵件列表、孵化報告、whimsy、JIRA 等基礎設施的使用,Apache 版本發布的流程以及 License 的梳理,貢獻者和 PPMC 的選舉投票等等。
社區優于代碼這一理念也隨著社區的發展,越來越真正被大家認可。
和導師的溝融也是社區運營的關鍵一環。“郵件列表的活躍度是社區的重要度量指標。”張亮說,作為 PPMC,他和國外導師溝通是通過郵件;和國內導師溝通時,簡單的問題咨詢以微信為主,討論和決議類事件,則不區分國別,統一使用 dev@shardingsphere.apache.org 郵件列表完成溝通。
(ShardingSphere 郵件列表截選)
張亮透露,在孵化器這一年多的發展中,Apache ShardingSphere 社區沒有一次是采用投票的方式達成最終一致的,“協商是最有效的解決分歧的方案。”
社區運營不好,就別想畢業
打造具有粘性的活躍社區,被張亮當成在 Apache 孵化器的首要任務和最大預期。
從結果來看,進入孵化器之前,ShardingSphere 的貢獻者是 30 多人,目前項目貢獻者已達到 120 人以上。
此外,隨著貢獻者數量的激增,Issue 數量、PR 數量、代碼提交數量、甚至 star 數量都呈爆發式增長。張亮表示,隨著越來越多高質量貢獻者的加入,ShardingSphere 社區也遵循 Apache 社區的理念,投票選舉了十幾名擁有 Apache 賬戶的官方提交者,“創建了活躍且多元化的社區,是 ShardingSphere 在 Apache 孵化階段的最重要收獲。“
(2019 年 12 月,舉辦 meetup,和社區提交者見面)
在張亮看來,Apache 孵化器最大的優點有兩個:一是能夠吸引更多貢獻者參與;二是能夠給用戶提供更加放心的服務。
吸引貢獻者參與方面。ShardingSphere 在進入 Apache 孵化器之初,基本都是由京東數科的工程師主導開發的,外部力量很難真正的參與進來。在進入孵化器之后,中國電信翼支付、DaoCloud 和一些個人貢獻者相繼參與其中,為 ShradingSphere 貢獻了項目的 logo、UI 界面、影子表壓測功能和彈性遷移雛形等。
“一個中立于公司的基金會,能夠打破技術愛好者在商業層面的邊界,親密無間的合作。”張亮評價道。
對于使用者來說,由于 Apache 基金會的項目必須完全符合 Apache license,項目本身以及項目所有的依賴都必須與 Apache 協議兼容。而 Apache 協議是對商用友好的,所以使用和依賴 Apache 基金會的項目,完全不需要擔心 GPL 等開源傳播協議對公司商業行為帶來的風險。并且隨著項目歸屬于基金會,用戶無需在擔心項目社區由個人掌控所帶來的停止更新的可能,降低技術選型風險。同時,張亮表示,項目完全符合 Apache license 也是 Apache Release 的難點所在。
張亮例舉了他認為在孵化器過程中最重要的一點——如何鼓勵貢獻者持續參與社區。
張亮:
ShardingSphere 是一個入門門檻較高的項目,其數據分片、SQL 解析、基于 NIO 的數據庫協議等核心模塊,很難直接面向大眾開發者,吸納新的貢獻者成為提交者的難度比較陡峭。
因此我們特意開放了新手任務來吸引更多的貢獻者,并且將 ShardingSphere 的產品定位從分庫分表中間件轉換為分布式數據庫平臺,用于吸納更多的社區貢獻,并使其有機的組合在一起。
除此之外,在社區發展的初級階段,我們降低了提交者的選舉難度。在投票時,PPMC 更加看重有潛質和熱情的貢獻者。隨著目前社區成熟度的增加,提交者的選舉難度也將隨之增長。
社區運營結果也直接影響到項目能否順利畢業。Apache 有固定的項目成熟度評估模型,來評估項目項目是否可以達成畢業條件。該模型由代碼、版權、發布、質量、社區、一致性決議和依賴 7 個大的項目組成,每個大的項目中有2-7 個小的評估項不等。
評估報告參見:https://github.com/apache/shardingsphere/blob/master/MATURITY.md
從 ASF 畢業之后,項目要么獨立成為頂級項目,要么成為其他頂級項目的子項目。去年,中國團隊主導的 Apache SkyWalking 從 ASF 孵化器畢業,成為頂級項目。目前,包括 ShardingSphere 在內,從 ASF 畢業的中國團隊項目已達 10 個,還包括:Apache CarbonData、Apache Dubbo、Apache Eagle、Apache Griffin、Apache HAWQ 、Apache Kylin、Apache RocketMQ、Apache ServiceComb。
而ShardingSphere 成功畢業并晉升頂級項目的關鍵成果是:活躍社區組建、項目成度的評估以及品牌的法務合規。此外熟練掌握項目發布和提交者選舉則也是孵化階段最重要的兩個任務。
對于畢業孵化的周期,張亮介紹,這取決于項目和社區自身所處的狀態,并沒有橫向可比性。有的項目可在 8 個月內畢業,有些則幾年都未畢業。孵化過程中,項目可以使用 Apache 基金會提供的基礎設施,但沒有完全被基金會所認同,是可以隨時通過協商退出基金會的。
就 ShardingSphere 項目孵化周期而言,張亮認為 17 個月完成畢業孵化已經超出他的預期,這其中,導師和社區成員發揮了關鍵作用,“值得一提的是,在項目孵化過程中,一些導師和 PPMC 的身份發生了變化。Craig L Russell 在這期間當選了 Apache 基金會的主席;PPMC 吳晟則由于他主導的另一個項目 Apache SkyWalking 的活躍和畢業,具備導師的資格。這使得 ShardingSphere 的孵化過程更加順暢。”
“從我個人角度來看,產品完成度還不足 50%”
“項目從 Apache 孵化器畢業,只代表項目的社區運作方式得到了 ASF 的認可。”張亮表示,對于產品本身來說,Apache ShardingSphere 距最終的目標還有很大差距。“從我個人角度來看,產品的完成度應該還不足 50%。”
在孵化器一年半的時間里,Apache ShardingSphere 進行了產品迭代,從分庫分表中間件轉變為分布式數據庫生態平臺,先后發布 5 個版本,分別是 4.0.0-RC1,4.0.0-RC2,4.0.0-RC3,4.0.0 和 4.0.1。
張亮:
前 3 個版本都是 4.0.0 穩定版之前的發布候選版本。在孵化器階段主要的發力點是發布了 4.0.0 穩定版。主要功能包括了 SQL92 方言、PostgreSQL 的代理端、XA 和柔性事務的支持以及對 Seata 等事務框架的整合、數據脫敏、SkyWalking 插件、UI 等功能。
(Apache ShardingSphere 核心功能圖)
但在張亮及其團隊的規劃中,Apache ShardingSphere 還有許多事情要做:
- 項目的短期目標是打造一個通過可插拔方式對支持的組件和功能進行管理的平臺,可目前插拔平臺已經在開發中,其完整版本將會在 Apache ShardingSphere 的 5.x 版本中與大家見面。
- 不遠的將來, Apache ShardingSphere 要進入數據庫內核領域探索,打造一個全面的分布式數據庫體系。去年公布的 JDTX 設計思路,是項目在分布式事務方面的探索。未來在不斷完善 JDTX 的同時,項目也會進行查詢優化器的探索,并計劃在存儲端提供 KV 等更加多元化的方案選擇。
- 此外,項目團隊還希望打造一個分布式數據庫的治理和調度體系。數據庫在 Apache ShardingSphere 的體系中負責底層存儲,而由可插拔平臺完全接管分布式場景下的分片、計算、事務、治理和調度等能力。
- 最終的目標,則是希望 Apache ShardingSphere 能夠像 Kubernetes 管理容器一樣,以云原生的方式管理所有納入體系的數據存儲端。
- 公司層面,Apache ShardingSphere 更宏觀目標是承載京東數科 T1 平臺數據庫的全部能力。 目前,Apache ShardingSphere 是 T1 金融數字化解決方案技術中臺分布式數據庫核心中間件產品。基于此產品和團隊,京東數科正在打造一個可插拔自主可控的金融級分布式關系數據庫。
(TI:金融數字化解決方案全景圖)
也正因為如此,Apache ShardingSphere 項目方長期開放招聘數據研發工程師,希望更多的有理想和開源愿景的技術牛人加入,將工作與興趣結合在一起,打造更好的開源社區。
最后,張亮也介紹了目前 Apache ShardingSphere 的使用情況,正式登記注冊使用的公司超過 130 家,“實際采用的公司我們暫無從統計,但從微信群解答問題的情況來看,未登記的采用公司數量十分可觀。”可以參見:https://shardingsphere.apache.org/community/cn/powered-by/
隨著項目從 Apache 孵化器畢業,張亮也希望能在海外市場做更多推廣,“雖然項目還沒有國外公司采用,但是在 GitHub 的 Issue 和 PR 已經出現了不少外國貢獻者的身影。”在張亮看來,國產項目走向國際化市場,除了必要的宣傳和推廣外,還要做到能夠融入當今主流的開源體系。大而全的項目反而不易在海外市場獲得認可。專注項目自身領域,與其他開源項目合作解決問題是能否讓海外市場獲得認可的關鍵。
現在,ShardingSphere 已經從孵化器畢業,Apache 不再是 ShardingSphere 的幫助提供方,而是 ShardingSphere 即是 Apache 的一部分——完全歸屬于 Apache 基金會,成為其正式項目,“身份的轉變,將會吸引更多的優秀開源貢獻者參與到其中。”張亮說道。
嘉賓簡介
張亮,京東數科數字技術中心架構專家,Apache ShardingSphere 項目 VP & 創始人。
熱愛開源,擅長以 Java 為主分布式架構,推崇優雅代碼。目前主要精力投入在將分布式數據庫中間件 Apache ShardingSphere 打造為業界一流的金融級數據解決方案之上。
曾出版書籍《未來架構——從服務化到云原生》。
個人 GitHub:https://github.com/terrymanu
Apache ShardingSphere:
- https://github.com/apache/shardingsphere
- https://gitee.com/Sharding-Sphere/sharding-sphere
總結
以上是生活随笔為你收集整理的80% 的代码曾由一人提交, Apache ShardingSphere 何以从 ASF 毕业并晋升 TLP 顶的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果13pro特别卡,苹果13 Pro极
- 下一篇: 工信部:3月份户均移动互联网接入流量达9