跳到主要内容
Cloudberry Database 提案指南
如果你计划对 Cloudberry Database 进行重大更改,需要提交提案以供审阅。

本页介绍了针对 Cloudberry Database 进行重大变更所需的 Cloudberry Database Proposal (Cloudberry Database 提案,缩写为 CP) 整个流程。

何时启用

不是所有更改都需要提案。

如果变更仅仅是小更新或常规错误修复,只需要直接创建 pull request 即可!

如果你只有初步想法或不太正式的功能需求,可以考虑先在 GitHub Discussions - Ideas / Feature Requests 板块上发帖和大家讨论、获取反馈。

如有以下任何一种情况,均可视为重大更改,需要发起提案:

  • 会对 Cloudberry Database 的公共接口产生影响的任何更改。
  • 为 Cloudberry Database 引入新组件、新模块或新概念,或者更改现有的行为。
  • 影响代码重用性和结构的大规模代码重构行为。
  • 任何重要的向后或向前兼容性中断行为。
警告

在发起新提案之前,请确保没有与你的提案类似的已有提案,你可以搜索 GitHub Discussions 或在我们的 Slack 频道上直接询问。

何人提出

任何人都可以发起一个提案。对于提案人,可以只是你自己,或是一群开发者,或一个团队。请在提案中列出所有提案人的名字。

提案周期

Cloudberry Database Proposal life

Draft(草案)

你可以通过 GitHub Discussions 模板发起提案。请尽可能填写所有字段,至少包括必需字段,如:

  • 提案标题。保持直接清晰。请在标题前添加 [Proposal] 前缀。
  • 提案人。列出所有提案人,可以是一个人、多个人、一个团队或一家公司。
  • 提案状态。从多个选项中选择一个:Under Discussion/In Progress/Completed/Inactive/Abandoned。当你发起提案时,默认状态为 Under Discussion
  • 摘要。简要描述你的提案内容。
  • 动机。概述动机以及为什么应该实施该提案。
  • 实现。介绍你如何实现提案,包括原则、设计、计划等。

Discuss(讨论)

当你的提案草案准备就绪后,你可以将 GitHub 链接分享到我们的 Slack #dev 频道,或者 @ 其他人以获取社区的反馈。积极回应其他人提出的疑问或担忧很重要。在讨论阶段,主要就是从不同角度收集各种反馈、建议和建设性的批评。

你的提案至少保持 7 天时间的讨论,以便来自不同时区的社区成员能够查看和参与讨论,直到解决全部疑问。

Vote(投票)

一旦你或其他人觉得对某个想法已经达成了大致的共识,并且在讨论阶段之后没有强烈的反对意见,你就可以将你的提案移至投票阶段。

为此,你要在对应的 GitHub Discussions 帖子下留言以启动投票。我们遵循 Apache 项目常用的投票方式。投票以 -1 到 +1 之间的数字表示,其中“-1”表示“否”,“+1”表示“是”。

中间的数值表示投票人对此事的感觉程度。以下是一些投票示例以及投票者可能想要传达的信息:

  • +0:“我对此事没有特别强烈的看法,但我没问题。”
  • -0:“我不会阻止,但我更希望我们不要做这件事。”
  • -0.5:“我不喜欢这个想法,但找不到合理的理由来支持我的感觉。”
  • ++1:“哇!我喜欢这个想法!抓紧开始吧!”
  • -0.9:“我真的不喜欢这个,但如果其他人想继续,我也不会阻止。”
  • +0.9:“这是个很酷的想法,我喜欢,但我没时间/必要的技能提供帮助。”

投票必须至少持续 72 小时,以便为所有相关人员提供参与的机会,无论他们身在何处。如果大部分投票时间是周末,建议延长投票时间。鼓励全体社区成员给出 +1 或 -1 投票。

投票和讨论都是寻求共识的过程,“目标不是赢得选票或达成一致意见,而是确保有一个让人们提出和讨论问题的场所,使得没人感觉非得阻止团队前进才行。寻求共识强调讨论而非陈述:当所有问题都得到解决时,就实现了大致的共识,但不一定都能得到满足。”

对于投票来说,我们一贯遵循“少数服从多数”,即必须有更多的支持投票而非否定投票。

Accepted(已接受)

祝贺!你的提案已被接受。

备注

如果你的提案在被接受后要进行重大更改,你可以按照相同程序重新推进新版提案。

接下来是分解任务。你应在 Cloudberry Database GitHub issue 页面创建分解任务。一旦提案被接受,它将进入实现阶段,状态变更为 In Progress(正在进行)。

In Progress(正在进行)

开发人员或贡献者开始着手进行提案开发工作,积极开发并将它们集成到项目代码库中。

现在你可以开始做贡献了,更重要的是建议你可以鼓励其他人一起参与到你的项目实现中来。然而,这是可选操作,取决于你的决定。你可以学习如何为社区做出贡献,如何与其他社区成员进行沟通。如果没人主动参与到你的提案贡献中来,你可以发挥想象力、利用各种沟通渠道鼓励大家参与。针对较大提案,建议多人组队一起推动。

Rejected(已拒绝)

如果提案未能获得足够支持,或与项目目标或路线图不符,可能会被拒绝。这意味着该提案将于此终止、不会继续进行,提案会被视为关闭。

Completed(已完成)

当所有提议的变更和相关任务完全实现、经过测试并集成到项目中时,该提案将被标记为 Completed(已完成)。新特性或增强功能将随后续项目发版正式推出。

Inactive(非活跃)

如果提案在 6 个月内没有更新,我们将把提案移至 Inactive(非活跃)状态。这可能出于各种原因,例如缺乏资源或需要进一步讨论。该提案仍然保持开放,只是尚未积极推进或取得进展。

如果有人能接手该提案并继续推进,那么该提案将被标记为 In Progress(进行中)。

Abandoned(已放弃)

如果一项提案由于失去相关性、支持或实现所需的资源而超过 12 个月未采取任何行动,则被视为 Abandoned(已放弃)。已放弃的提案将被视为不再活跃,因不再实现而关闭。

如果你想重新启动已放弃的提案,必须遵循与以前相同的评审程序,防止提案自放弃以来有任何更改。

备注

请确保你的提案定期更新,反映实现过程中的最新进展。


Cloudberry Database 提案清单

序号标题状态讨论
CP-2[Proposal] Implement Scorll Parallel Retrieve CursorDiscusshttps://github.com/orgs/cloudberrydb/discussions/120
CP-1[Proposal] Support Incremental View Maintenance (IVM) in Cloudberry DatabaseDiscusshttps://github.com/orgs/cloudberrydb/discussions/36

你可以在此查看全部提案。