本页介绍了针对 Cloudberry Database 进行重大变更所需的 Cloudberry Database Proposal (Cloudberry Database 提案,缩写为 CP)
整个流程。
何时启用
不是所有更改都需要提案。
如果变更仅仅是小更新或常规错误修复,只需要直接创建 pull request 即可!
如果你只有初步想法或不太正式的功能需求,可以考虑先在 GitHub Discussions - Ideas / Feature Requests 板块上发帖和大家讨论、获取反馈。
如有以下任何一种情况,均可视为重大更改,需要发起提案:
- 会对 Cloudberry Database 的公共接口产生影响的任何更改。
- 为 Cloudberry Database 引入新组件、新模块或新概念,或者更改现有的行为。
- 影响代码重用性和结构的大规模代码重构行为。
- 任何重要的向后或向前兼容性中断行为。
在发起新提案之前,请确保没有与你的提案类似的已有提案,你可以搜索 GitHub Discussions 或在我们的 Slack 频道上直接询问。
何人提出
任何人都可以发起一个提案。对于提案人,可以只是你自己,或是一群开发者,或一个团队。请在提案中列出所有提案人的名字。
提案周期
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 Cursor | Discuss | https://github.com/apache/cloudberry/discussions/120 |
CP-1 | [Proposal] Support Incremental View Maintenance (IVM) in Cloudberry Database | Discuss | https://github.com/apache/cloudberry/discussions/36 |
你可以在此查看全部提案。