社区流程
本页面的目的是使 Play 框架的决策过程透明化。这不是一套管理 Play 项目的法律,文档中的任何内容都不是新的,它只是承认已经存在的流程,并记录了它的内容。
本页面的目标是通过以下方式提高社区贡献和对 Play 项目的所有权意识
- 让 Play 社区的新人清楚地了解决策是如何做出的,谁做出了这些决策,以及新人如何获得任何决策责任。
- 提供 Play 决策过程的具体定义,以便在需要时可以参考和改进。
项目所有权
Play 项目源代码在 Apache 2 许可下授权。指导委员会对项目的產品决策和技术决策拥有最终决定权。
虽然指导委员会对任何做出的决策拥有最终决定权,但 Play 社区,拥有超过 400 位对 Play 核心代码做出贡献的社区贡献者,以及数百位对更广泛的 Play 生态系统做出贡献的人,可以说与 Play 项目本身一样重要,甚至更重要。
因此,指导委员会与 Play 项目的关系最好被描述为一种管理,指导委员会管理 Play 项目,但对 Play 社区负责。
有关指导委员会的更多详细信息,请参阅赞助商页面。
定义
贡献者
贡献者是指对 Play 做出贡献的任何人。这并不一定意味着代码贡献,它可能意味着以下任何一项
- 代码修复、改进和新功能
- 文档修复、改进和新功能
- 将文档翻译成其他语言
- 为 Play 编写或维护插件、模块或库
- GitHub 中的代码审查
- 提出、分类并添加更多信息以帮助解决问题
- 参与 Discuss 论坛中的设计和功能讨论
- 在 Discuss 论坛和 Stack Overflow 中回答问题
- 运行、在以 Play Framework 为中心的使用者小组中发言或做出贡献
- 在会议上发言、撰写关于 Play Framework 的博客文章或以其他方式宣传 Play Framework
集成者
集成者是指拥有 Play 项目或 playframework GitHub 组织下项目的源代码和文档的写入权限的任何人。所有集成者的最新列表可以在 代码和贡献者 页面上找到。
需要注意的是,您不必是集成者才能为 Play 做出贡献,事实上,在被认为是贡献的清单中,没有您不能做的事情,即使您不是集成者。实际上,集成者可以做而贡献者不能做的唯一事情是管理类型的任务,例如合并来自其他贡献者的贡献,以及在问题跟踪器中进行诸如关闭已修复或无效问题之类的维护任务。
决策
Play 项目中的决策分为两大类
- 实现决策,这包括是否将拉取请求合并到标准中,如何实现功能或改进。
- 设计和维护决策,即其他所有内容。这包括主要的设计决策、路线图、发布计划、关于项目如何运行和管理的决策、应该使用哪些工具等。
实现决策
实现决策主要发生在拉取请求中。它们是由拉取请求本身发起的,并通过审查和迭代,形成了关于如何实现给定更改的共识。
鼓励所有相关方参与审查拉取请求并为审查讨论做出贡献。
拉取请求是否合并所需的共识程度取决于拉取请求的影响程度。对于微不足道的更改,例如文档更正,集成者可以简单地将其合并,无需任何其他集成者的反馈。对于较大的更改,至少应该有一位熟悉被修改代码部分的人员进行审查,最好更多。对于大型重构,拉取请求应该在合并之前由至少 2 或 3 位其他集成者进行审查。
拉取请求是否合并取决于许多因素,包括
- 必要时,适当的测试覆盖率和文档水平
- 遵守编码标准和其他代码质量因素
- 遵守 Play 的通用架构指南,例如 Java 和 Scala API 之间的功能一致性
- 遵守外部规范,例如 RFC
- 与 Play 项目的方向和理念保持一致
设计和维护决策
关于 Play 设计和 Play 项目运行方式的讨论主要场所是 Play 框架论坛。所有主要的新功能、重构或对项目的更改都应该首先在这个论坛中进行讨论。讨论的目的是就任务是否完成以及如何完成达成共识。当发布新主题时,鼓励感兴趣的各方发表评论,表达他们的肯定或担忧。
虽然指导委员会最终对所有决定拥有最终决定权,但我们将尽最大努力在社区中达成共识。
集成者选择
集成者选择由指导委员会进行。指导委员会将根据以下标准为贡献者提供集成者身份
- 贡献者对 Play 做出了重大贡献。什么是重大贡献是主观的,但例如,最近的新集成者每周审查 3 个或更多拉取请求,每周提交一个或多个拉取请求,以及每周对 3 个或更多问题进行分类。
- 贡献者是 Play 的 行为准则 和 贡献者指南 的典范。
- 贡献者受到 Play 社区其他成员的尊重。
- 贡献者同意遵守以下指导委员会为集成者制定的规则。
如果集成者停止定期为 Play 贡献,他们的写入权限可能会被移除,但他们仍然保留在 Play GitHub 组织中的成员资格。
集成者规则
所有集成者应遵循本页概述的流程,并应以 Play 的 行为准则 和 贡献者指南 为榜样。以下还有一些具体的规则。
- 集成者绝不能直接推送到 GitHub 组织中的存储库。所有贡献,无论大小,都必须通过拉取请求进行。唯一的例外是回溯更改和从发布中产生的更改。
- 通常,拉取请求应从集成者的个人 fork 中发出,而不是从推送到 playframework GitHub 组织中的存储库的分支中发出。
- 集成者绝不能合并他们自己的拉取请求。所有拉取请求都必须由其他集成者审查和合并。
- 文档更改可以根据需要在版本之间回溯,但所有其他更改必须由指导委员会批准。
- 在关闭问题或拉取请求时,请记住我们正在与人打交道。要友善和乐于助人,引导人们走向正确的方向。例如,如果有人提出一个实际上是问题的问题,在关闭问题时,请将他们引导到 Play Framework 论坛,如果可能,请简要回答问题。