TiDB Developer Group (TiDB 社区开发者组织)作为社区发展的基石,由以下角色构成:Maintainer,Committer,Reviewer,Active Contributor,Contributor。每一个角色在社区中都承担相应的职责,他们是推动 TiDB 健壮发展的重要成员。

为了让更多的人加入到社区中来,现在原有架构中引入了 “专项兴趣小组”(Special Interest Group,简称 SIG)以及 “工作小组”(Working Group,简称 WG)。

SIG
SIG(Special Interest Group,专项兴趣小组)主要负责 TiDB/TiKV 某个模块的开发和维护工作,对该模块代码的质量负责。社区将邀请满足条件的 Active Contributor 加入专项兴趣小组,开发者们将在专项兴趣小组中获得来自 Tech Lead 们的持续指导,一边锻炼技术能力,一边优化和完善该模块。社区开发者们可通过专项兴趣小组逐渐从初始的 Active Contributor 成长为受到社区认可的 Reviewer、Committer 和 Maintainer。一般而言每个专项兴趣小组都会周期性的组织会议,讨论最近进展和遇到的问题,所有的会议讨论都公开在社区上,方便感兴趣的同学一起参与和讨论。
  • TiKV Coprocessor SIG: Coprocessor 是 TiKV 中负责处理 TiDB 的下推计算的模块。本 SIG 的主要职责是对 Coprocessor 模块进行未来发展的讨论、规划、开发和维护。
  • TiKV Storage Engine SIG: Storage Engine SIG 的主要职责是对 TiKV 的存储引擎的未来发展进行讨论和规划,并组织社区成员进行相关开发和维护。工作范围包括为 TiKV 引入新的存储引擎,以及对现有存储引擎进行稳定性、性能、易用性等方面的提升。
  • TiDB SQL Infra SIG: SQL Infra SIG 主要负责 TiDB DDL 和 parser 及其相关模块的开发和维护。工作内容包括对 DDL 模块和 parser 模块进行稳定性、性能、与 MySQL 的兼容性等方面的提升。
  • TiDB Scheduling SIG: Scheduling SIG 以打造智能、高效、高可用、可扩展的分布式系统为目标。主要工作内容包括集群中心化管理,优化资源分配策略,智能调度,高可用容灾等。
WG
WG( Working Group,工作小组)是由为了完成某个特定目标而聚集在一起的社区开发者。为了完成目标,有些工作小组可能跨越多个 SIG,有些小组可能只会专注在某个具体的 SIG 中做某个具体的事情。
工作小组具有生命周期,一旦目标完成,工作小组即可解散。工作小组运营和管理的唯一目标是确保该小组成立时设置的目标在适当的时间内完成。一般而言,工作小组也会有周期性的会议,用于总结目前项目进展,确定下一步实施方案等。

社区角色

Maintainer
项目的规划和设计者,拥有合并主干分支的权限,从 Committer 中产生。他们必须对子项目的健康表现出良好的判断力和责任感。维护者必须直接或通过委派这些职责来设置技术方向并为子项目做出或批准设计决策。
  • 如何成为 TiDB Maintainer:
    • 对 TiDB 的技术目标和方向有非常深入的了解
    • 积极组织技术研讨会,并提出有建设性的专案
    • 能处理代码实现过程中的复杂问题
    • PMC 内的成员投票一致通过
  • Maintainer 权利及义务:
    • 制定子项目的技术设计和决策。
    • 设置子项目的技术方向和优先级。
    • 参与版本发布,规划项目发展路线
    • 指导 Contributor,Reviewer 和 Committer 对项目持续贡献
    • 保证子项目的整体质量
Committer
由 Maintainer 或 PMC 推荐,是对 TiDB 有突出贡献的 Contributor。需要独立完成至少一个 feature 或修复重大 bug。
  • 如何成为 Committer:
    • 表现出良好的技术判断力
    • 至少是两个以上子项目的 Reviewer
    • 审阅或合并了一定数量的 TiDB 代码
    • 对 TiDB 性能提升做出突出贡献;修复了重大 bug
    • 由两名或以上在任 Maintainer 提名通过
  • Committer 权利及义务:
    • 整体把控项目的代码质量
    • 指导 Contributor 和 Reviewer 对 TiDB 持续贡献
    • 定期参与 Committer 会议,对项目发展有优先知情权
Reviewer
负责审查社区提交的代码,保证代码的质量和正确性,从 Contributor 中产生。
  • 如何成为 Reviewer:
    • 熟悉代码库
    • 为 TiDB 子模块贡献一定数量的代码
    • 在专项兴趣小组(SIG)中表现优秀
    • 获得至少两位在任 Committer 的提名通过
  • Reviewer 权利及义务:
    • 保证子项目代码的正确性
    • 及时响应社区提交的 PR
    • 定期参加专项兴趣小组(SIG)的研讨会
    • 对代码拥有 LGTM 的权限
Active Contributor
活跃的社区贡献者。
  • 如何成为 Active Contributor:
    • 一年内对 TiDB 贡献 8 个 pr 及以上
    • 得到两位现任 Reviewer 的认可
  • Active Contributor 权利及义务:
    • 自动获得进入专项兴趣小组(SIG)的资格
Contributor
社区贡献者,在 TiDB 项目相关 repo 中有一个或以上被合并的 PR。
新手指南

对于从来没有或者很少参与大型开源项目的小伙伴来说,我们建议先阅读 TiDB 相关资料,尤其是说存储讲计算谈调度这三篇。再由以下方式上手参与项目:

  • 积极帮助社区用户解答技术问题
  • 帮助项目增加测试​
  • 完善技术文档
  • 提供有价值的 Issue
  • 报告或修复未知 / 已知的 Bug​
  • 为项目撰写源码分析、实用案例相关的文章​

同时也可以参考社区小伙伴撰写的如何 「从零开始参与大型开源项目」,以及这份官网老司机整理的完整 contribution-map

有了这些基础知识之后就可以到我们的 GitHub 上寻找适合的 Issue 了。在标签下选择 'for new contributors' 或 'help wanted',这两个标签都是对新手比较友好的。如果你对某一个模块特别感兴趣也可以选择模块对应的标签。

贡献你的第一个 PR

我们鼓励大家通过项目测试、文档撰写、上报 bug 等多种形式参与社区。成为 Contributor 之后还可以获得我们的纪念马克杯,现在就来贡献你的第一个 PR 吧!

  • Fork 项目至你的 GitHub 账户
  • Git Clone 到本地仓库
  • 创建 master 分支
  • 在本地仓库中编写代码并测试
  • Push 已经 commit 的代码至远程仓库
  • 创建一个新的 PR
  • 代码审查:提交 PR 之后我们会检查你提交的代码是否有 bug 或语法错误,请留意 PR 下面的留言回复。如果有两位代码审查者点赞,你的 PR 就会被合并,恭喜你成为 TiDB Contributor,快来领取属于你的勇士奖杯!