原文:https://www.cockroachlabs.com/docs/stable/contribute-to-cockroachdb.html

我们将CockroachDB开源,让更多开发人员来完善和扩展它,以更好地满足用户的需求。 让我们惊喜的是,有许多对CockroachDB充满热情的人,他们愿意花时间去学习代码库并回馈社区,所以我们创建了这个文档来更好地支持这些代码贡献者。

介绍

一个适合贡献者初次贡献代码的好方法是搜索带有“help wanted”标签的未解决issue

我们将项目根据复杂程度分为三部分:

您可以在下面找到贡献代码库的步骤; 我们已经根据复杂性划分了。

如何判断复杂度?

如果满足以下所有条件,项目可能是较不复杂的:

如果满足以下任何条件,项目可能是高度复杂的:

难度介于上述两者之间的可视为中等复杂的项目。

如何贡献

前提条件

在开始一个项目之前:

  1. 请参阅CONTRIBUTING.md以设置您的本地开发环境,并了解我们的代码revuew工作流程。
  2. 查看(follow)一些 code reviews.
  3. 查看 style.md 来了解代码风格和约定。

较不复杂的项目

这些内容包括修复错误和小型增强功能,不涉及任何系统架构和设计。 当您遇到它们时,您可以随意提交这些内容以供审核。

  1. 查找或创建一个issue。
  2. 遵循我们的code review workflow,提交代码,包括相应的测试(https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md#code-review-workflow).
  3. CockroachDB工程师将验证并合并。

可以通过查找标签为“easy”的开放性问题,来找到这类较不复杂的项目。

中等复杂度的项目

对于这些项目,您应该:

  1. 首先联系Cockroach团队,并讨论您的方案。
  2. 我们的工程师会对您的设计进行反馈。有时您也需要提供RFC文档,在这种情况下,您在开始实施解决方案前,应当了解和遵循常规RFC流程
  3. 当大家都对该方案没有异议时,您就可以开始编码,并遵循规则进行code review了。

如果在提供该功能的时间排期上比较紧张,且该功能还没有完成(或者您的团队无法及时反馈进度),我们可能会把该功能收回到我们内部来实现。

以下是一个代码贡献者为outer joins功能添加支持的一个很好的例子

高复杂度项目

这些项目涉及对CockroachDB工作方式的改变,更重要的一点是,Cockroach团队需要花费较多时间,来支持外部开发者来构建和开发这些项目,因此我们需要评估并确保做这些事情是值得的。通常情况下,我们发现即使是能力很强的外部开发人员也很难在这些项目中取得成功,在大多数情况下, 我们团队自身开发这些功能的速度可能更快。

话虽这么说,如果您想迎接挑战,还有一些先决条件。 您应该:

应当避免以下情况:

如果在某些情况下,我们无法支持您的团队完成项目,我们将尽最大努力与您沟通,并告知我们做出该决定的原因。