Apache ShardingSphere社區的探索與拓展

Apache ShardingSphere社區的探索與拓展html

清華大學 git

Apache ShardingSphere社區受邀參與了11月9日在清華大學舉辦的《Apache Event——走進Apache開源軟件社區》的分享活動。在活動中Apache ShardingSphere社區的PPMC張亮分享了《Apache ShardingSphere社區的探索與拓展》這個話題,下面呈現分享的主要內容。github

01數據庫

爲何要作開源apache

作開源對於我的來說,能得到兩方面的收益:更好的職業生涯和享受樂趣。 編程

-1-後端

更好的職業生涯微信

1. 職位需求多。企業對於開源崗位有很強的招聘需求。開源可以給公司帶來不少價值,如:經過開源項目搭建雲服務平臺並提供增值服務、讓開源項目自己的質量得以提高、提高公司的是技術影響力等。開源的職位每每與技術和社區自己關聯性高、不受地域限制,屬於一個比較自由的職位。架構

2.自身技能提高。包括技術能力和軟技能的提高。經過參與頂級的開源項目,技術的提高自沒必要說,其餘的軟技能也會獲得相應的提高,如英語、協做能力、運營推廣能力等。若是是打造全新的開源項目,從零到一的開創能力也會獲得極大的提高。框架

3. 人際關係拓展。開源參與者的職業生涯將再也不僅關注薪水、KPI等與工做自己強相關的事情。純粹的技術交流、各類會議的分享、寫做邀請、甚至資本注入等各類與行業相關的鏈接會被逐漸擴展,參與國際的開源項目還會認識更多的國際友人。正所謂低頭作技術,擡頭看世界。參與開源,認識更多的人,爲從此職業生涯的發展提供更多可能性。

4. 我的品牌打造。開源的工做,其過程和成果都是公開的,這就意味着參與者的全部努力均可以被任何人在任什麼時候間看獲得,是永久留存的記錄。而公司內部的私有項目風險比開源項目相對來講要大不少,私有項目的評斷標準取決於項目負責人的承認,若是項目責任人不承認,那麼參與者的價值就趨近於零。開源項目則不一樣,正是由於參與者的價值可以在一個公開的平臺去展示,價值的評斷不取決於一個相對狹小的範圍。

-2-

享受樂趣

1. 成長的樂趣。真正喜歡去作一件事情的人,會在成長中體會到樂趣。軟件開發行業是要須要從業者發揮自驅力的行業,聽從心裏的喜歡編程,是在這個行業中取得成功的捷徑。喜歡編程的人,天然可以體會自身成長所帶來的樂趣。

2.成就感。行業的認同,會在成長的同時得到成就感。不管是我的自身的成就感,仍是項目提高帶來的成就感,都是職業生涯中快樂的源泉。當你所作的東西,被同好者普遍承認的時候,成就感會油然而生。

02

Apache軟件基金會項目簡介

Apache軟件基金會是一個非盈利組織。從1999年至今的20年時間裏,產出了無數影響軟件行業的項目。在幾百個Apache軟件基金會項目中,咱們能夠瀏覽一下幾個很是著名的項目:Apache Tomcat、Apache Commons、Apache Maven、Apache Hadoop、Apache Kafka、Apache Spark、Apache Zookeeper等等。Apache軟件基金會的項目成爲了開發者平常工做的基石。絕不誇張的說,若是以上項目,您一個都沒據說過的話,那麼可能很難拿到任何一家公司的Java後端或大數據類Offer。

近年來,來自中國的Apache項目也愈來愈多了,截止到目前爲止,已經有19個來自中國的項目進入了Apache軟件基金會,其中有9個項目已經畢業成爲頂級項目,還有10個項目正在孵化中。對於沒有在西方社會工做過的人來講,參與一個國際化的開源項目的門檻有點高,所以,來自中國的Apache軟件基金會項目對於想參與開源的國內同窗是一個巨大的福音。這些項目可以提供一個有效的緩衝帶,讓一些初入社區且找不到門路的同窗可以以熟悉的母語快速的進入國際化的開源社區。來自中國的Apache軟件基金會項目,與來自西方的Apache軟件基金會項目在流程、規範、法務等方面並沒有不一樣,惟一的區別是能在社區中找到能夠說漢語的人,拉進溝通交流的舉例,並進一步的瞭解Apache社區的運做模式,爲之後參與其餘國際化項目打好基礎。

03

Apache ShardingSphere簡介

Apache ShardingSphere是19個來自中國的Apache軟件基金會項目之一,目前正在孵化器中。Apache ShardingSphere是一個微內核且可高度擴展的數據庫中間件。它的內核微小而穩定,但卻提供可無限擴展的平臺,所以它很是適合與開放的社區一塊兒成長,並近乎於無限的拓展其功能範圍。

Apache ShardingSphere開源將近4年了,它的外部使用至關普遍,目前有100+公司明確的聲明正在使用中,並未聲明的公司不可勝數,沒法準確的統計。已經記錄在冊的公司涵蓋了各行各業,有互聯網、互聯網金融、在線教育、企業服務,甚至還包括政府機關。Apache ShardingSphere和純粹從社區興起的項目略有不一樣,它是由公司捐助到Apache軟件基金會的,在公司內部已經被十分普遍的使用,涵蓋京東白條、超級帳戶、城市計算、秒級監控、京東金融雲、京東大數據、京東海外商城等不少系統。相對於自由發展的社區,Apache ShardingSphere也須要承載的穩定性的枷鎖。

04

Apache ShardingSphere 社區數據統計

對於一個開源項目來講,項目自己和社區是一樣重要的,所以,項目+社區纔是組成的Apache ShardingSphere的所有。Apache ShardingSphere是在2018年11月10號正式進入Apache軟件基金會孵化器的,至今爲止正好一年。這一年來,社區活躍度的社區數據變化仍是很明顯的。

-1-

郵件列表數據變化

這裏只統計dev@shardingsphere.apache.org郵箱,dev郵箱是社區交流問題的主要途徑。2019年5月有郵件53封;主題20個;參與人數14人。並且這些數據的統計是包含了GitBox從GitHub轉發的15封郵件,那麼實際的郵件數量是38封。在2019年9月的統計數據則有了明顯的提高,其中郵件148封;主題34個,參與人37人,而且咱們已經將GitBox轉發的郵件從dev郵件組摘除,而是轉移到了notification@shardingsphere.apache.org郵箱。

-2-

GitHub數據變化

從項目開源之初,到2018年6月左右的時間,項目總體的提交波峯波谷數據,和我我的的提交數據是幾乎吻合的。這說明,在沒有進入Apache軟件基金會以前,ShardingSphere項目是我的色彩濃重的項目,它的成功與失敗,是綁定在我的之上,項目的風險徹底集中在一個或幾我的身上。對比下近一個月(2019年10月-2019年11月)的GitHub數據,能夠看到項目有33我的參與;合併了100個pull requests;關閉了167個issues;新建了36個issues;總共修改了591個文件;其中新增代碼12021行;刪除代碼6577行。能夠看到,Apache ShardingSphere已經從我的項目轉變爲一個社區項目,由社區所掌控的項目風險更小、進展更迅速。GitHub的stars數量在近一年中增加了4000以上,從進入Apache基金會以前的5000+增加到了如今的9000+。

-3-

社區數據變化

在進入Apache孵化器時,ShardingSphere的項目管理委員會成員一共有11人,除了項目管理委員會成員,社區中並未有官方提交者。通過了一年的進展,目前項目管理委員會成員增長了2人,達到了13人;而且新提高了7個官方提交者。一年來,參與項目的貢獻者也從37人增加到了88人。參與的人數還在不斷的增加中,將來ShardingSphere社區會從這些貢獻者中提高更多的官方提交者,也會從官方提交者中提高更多的項目管理委員會成員。

05

Apache ShardingSphere社區的核心思路

1.  社區優於代碼。這是Apache社區的每個項目所反覆強調的事情。咱們所關注的不只僅是代碼,再好的代碼也是由人搭建的。咱們更加但願構建一個活躍的社區,由活躍的社區一塊兒去構建活躍的代碼庫。活躍的社區會使整個代碼功能和質量漸進前進。

2. 尊重和相信合做者。咱們相信,主動參與開源社區的人,是由於他願意去作,而且願意去作好的,是有充分熱情的。因此咱們會尊重每個合做者,珍惜每一個合做者的貢獻。同時,咱們也相信每個合做者,並授予他們最大的權限。這裏須要特別說明一下,合做者和初級貢獻者是不一樣的,合做者須要經過較爲長期參與來得到其餘合做者的認同。識別值得依賴的合做者,是開源社區的重要工做之一。

3. 自動化測試。隨着項目的貢獻者愈來愈多,代碼提交也會愈來愈頻繁,靠人力去把控最終質量則會越發不肯定。出錯與否不必定取決於我的意志,ShardingSphere社區更加看重能經過自動化的方式下降出錯的機率。自動化測試框架可以保證貢獻者不在提心吊膽的狀況下提交代碼,只要自動化測試是正確的,那麼代碼的正確性就能夠保證。自動化測試可讓參與者更加愉悅的享受代碼貢獻的過程。

4. 建立自助渠道。隨着項目被愈來愈多的用戶所使用,各類問題也會層出不窮,即有多是項目的bug,也有多是用戶自身的問題,還有多是文檔不清晰致使。所以,建立一個能夠用用戶自助的渠道就尤其重要。經過文檔和FAQ,讓用戶可以以自助的方式解決大部分問題。在出現沒法解決的問題時,經過郵件、GitHub、甚至微信羣均可以找到社區的核心開發者,進一步的溝通和交流問題。

5. 公開和遠程的工做模式。只有在郵件列表或GitHub進行公開討論問題,纔會被視爲已經發生的問題。社區不會處理私下的溝通和承諾,社區但願全部的問題和決議都是公開可查的。遠程協做則表示合做者沒有必要在地理上集中在一塊兒,這就意味着工做是異步的。非交互式溝通,則進一步要求信息來往要交代清楚上下文,並儘量多的經過一次信息描述更多的問題,從而進一步的促進溝通者的思考。

Apache軟件基金會提供了一個社區成熟度的評估模型(https://community.apache.org/...),從代碼、著做權、發佈、質量、社區、一致決議、產品獨立性這7個方面對社區的成熟度進行評估。目前Apache ShardingSphere已經完成了評估(https://github.com/apache/inc...),已經經過了其所有34個子項目的評估。

06

提高Apache ShardingSphere  社區的活躍度

1. 項目架構調整。Apache ShardingSphere在技術結構層面是由數據庫協議層、SQL層、分佈式事務層和存儲層組成的,在功能層面則是由分片、高可用治理、數據脫敏、讀寫分離等不少功能組成。目前的ShardingSphere架構正在調整爲徹底SPI化的架構,擴展任一技術或實現任一功能都不會影響其餘功能。舉例說明:Apache ShardingSphere對SQL的支持會根據數據庫的方言徹底分離,改動了MySQL的解析部分,不會對其餘數據庫有任何影響。所以,ShardingSphere能夠支持不少貢獻者同時貢獻代碼而相互不衝突。

2. 項目指南。Apache ShardingSphere爲貢獻者提供了不少指南,可讓潛在的貢獻者經過指南瞭解如何參與Apache ShardingSphere的社區,這些指南包括郵件訂閱指南、貢獻者指南、提交者指南、發佈指南以及文檔指南,基本涵蓋了全部的參與社區的要素。社區也正在着手處理技術模塊相關的貢獻指南,目前的測試框架以及SQL解析指南正在進行中。

3. 規範。規範化的代碼可使項目更加具備儀式感,當有代碼開始腐壞時,是整個項目開始失控的開始。所以,代碼規範也是Apache ShardingSphere項目的重要組成,社區提供了代碼規範文檔的同時,也提供了checkstyle等代碼檢查工具,不符合規範的代碼通不過持續集成工具的檢查,也無從合併至開發主幹。

4.需求邊界劃分。Apache ShardingSphere自己是一個活躍社區的同時,也是京東的基礎數據庫中間件,支撐了大量的在線應用。所以Apache ShardingSphere將項目拆分爲公司使用的場景和社區場景。在公司使用的場景需求下,功能會盡可能維持穩定、優先級更高、而且有Deadline做爲項目提交的最終日期限制;在社區的場景下,功能會維持持續開放的心態、優先級適中、通常會採用里程碑的方式做爲功能的最終日期。做爲京東的Apache ShardingSphere的團隊,咱們也是社區的一部分,在參與社區的同時,會將穩定版本的Apache ShardingSphere賦能公司內部應用。

5.多元化溝通渠道。除了郵件和GitHub的issue,社區也提供了微信羣進行交流。特別說明一下,郵件和GitHub永遠是核心開發者用於處理問題的依據。微信溝通雖然方便,但不便於歸檔和二次查詢,所以只用於進一步溝通使用,若是用戶沒有經過郵件或GitHub建立問題,核心開發者可能並不會經過微信直接反饋。

貢獻社區的方式有不少,包括但不限於分享(演講、文章)、回答問題、參與討論、調查issue、網站設計、文檔更新、文章文檔翻譯、代碼提交、社區運營&推廣等。代碼提交只是衆多貢獻方式的一種,熱烈歡迎願意參與社區的同窗以多元化的方式貢獻社區,提高自身的價值。

願Apache ShardingSphere社區成爲您參與的候選之一。


官網網址:https://shardingsphere.apache...

官網網址(中文):https://shardingsphere.apache..._zh.html

GitHub:https://github.com/apache/inc...

訂閱郵箱:dev-subscribe@shardingsphere.apache.org

相關文章
相關標籤/搜索