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