本文档旨在记录用于管理 Bundler 项目的政策和流程,它不是固定或永久的,可能会随着事件的需要而演变。
这些政策旨在作为应用这些目标的示例,我们意识到我们不可能涵盖所有边缘情况或漏洞。在任何政策与这些目标发生冲突的情况下,目标应该获胜。
Bundler 努力实现完全向后兼容。这意味着如果某些东西在 1.x 版本中有效,它应该在 1.y 和 1.z 中继续有效。该东西可能在 2.x 中继续有效,也可能无效。我们可能并不总是能做到,也可能存在迫使我们在不同类型的破坏之间做出选择的特殊情况,但兼容性对我们来说非常重要。基础设施应该尽可能地不出乎意料。
截至 2022 年 8 月,Bundler 团队将功能和错误修复作为 2.3.x 版本发布,并且可能会例外地将安全修复程序回溯到默认情况下与受支持的 Ruby 一起发布的旧系列,即 Bundler 2.1(与 Ruby 2.7 一起发布)和 Bundler 2.2(与 Ruby 3.0 一起发布)。
截至 2022 年 8 月,Bundler 支持 Ruby 和 RubyGems 版本,一直追溯到 Ruby 2.3,出于向后兼容性的原因。为了在放弃对旧版 Ruby 的支持时不破坏任何东西,已经引入了多项改进,因此我们计划在 2022 年圣诞节放弃对旧版 Ruby 的支持,并从那时起更紧密地遵循 Ruby 核心团队的支持策略。
这些政策不能保证任何特定的修复程序会被回溯。相反,这是一种让我们在进行更改时为 Ruby、RubyGems 和 Bundler 的版本设置上限的方法。如果没有限制,随着时间的推移,版本的数量会呈指数级增长,并很快变得难以管理,从而导致维护者倦怠。我们希望避免这种情况。
tl;dr: 大版本每年发布一次,小版本发布任何完成的带有文档的功能,补丁版本发布任何已提交的 bug 修复。
补丁(bug 修复)版本应尽快发布。单个 bug 修复 PR 的补丁版本完全可以。
小版本(功能)版本可以在至少一个新功能准备就绪时随时发布,但并非必须。小版本发布必须根据需要更新其大版本的 man 手册和文档网站,并且每个版本都应该有自己的“新增功能”部分。
大版本(重大变更)版本每年发布不超过一次,并且必须包含一个专门针对该大版本的文档网站新部分。理想情况下,大版本发布将在 Ruby 版本在 2 月或 3 月失去支持后进行,以帮助我们与核心团队支持的 Ruby 版本保持同步。
除了放弃对旧 Ruby 版本的支持之外,应尽可能避免重大变更,但可以在大版本中包含。通常,重大变更应在重大变更生效之前至少包含一个大版本(以及一年时间)的弃用警告。
使用 Bundler 的体验不应该包含意外。如果用户感到意外,说明我们做错了什么,我们应该修复它。没有用户错误,只有 UX 设计缺陷。警告应始终包含可操作的说明以解决它们。错误应包含说明、有用参考或其他信息,以帮助用户尝试调试。
更改现有行为也是令人意外的。如果减少用户意外会导致向后不兼容的更改,则该更改应在进行重大更改之前包含至少一个大版本的弃用警告。
任何人都可以打开问题或评论问题。没有有用内容(如“我也是”)的问题评论可能会被删除。
打开问题寻求帮助最终可能会得到帮助,但如果您在 Stack Overflow 上发布或在 Bundler Slack 中提问,帮助可能会更快到来。
我们会尽快处理问题,但这可能需要一些时间。提供一个可以用来重现问题的脚本,是帮助维护者帮助你的好方法。如果你可以,为你的问题编写一个失败的测试会更有帮助。
欢迎任何人为 Bundler 贡献代码。贡献的代码将以与现有代码库相同的许可证发布。
拉取请求必须通过测试才能合并。代码更改还必须包含对新行为的测试。不需要压缩提交。
每个拉取请求都应该解释
大型更改通常受益于更完整的编写、由其他人阅读和讨论。 Bundler RFC 仓库 是进行此操作的首选位置。
始终创建拉取请求,而不是直接推送到主分支。尽可能尝试从除你自己以外的人那里获得代码审查和合并批准。
持续贡献超过六个月(或为次要版本实现了全新的功能)的贡献者有资格加入维护者团队。除非现有维护者否决,否则将邀请这些贡献者加入维护者团队。如果他们接受,新的维护者将获得查看维护者手册、接受拉取请求和发布新版本的权限。
首先,Bundler 的政策和这些政策的执行在任何与Bundler 的行为准则冲突的情况下都是从属的。首要任务是尊重和同情地对待人类,而制定项目指南并坚持执行将永远排在第二位。
在执行我们自己的政策方面,我们都是普通人,尽力而为。我们可能会有不遵守政策或目标的时候。如果你注意到实际行动与这些政策和目标之间存在差异,请提出来!我们希望确保我们的行动和政策一致,并且我们的政策体现了我们的目标。
政策并非一成不变,如果发现违反政策的行为符合项目目标的精神,则可以修改政策。同样,违反项目目标精神的行为将被视为违反政策,并将采取执行措施。我们对规则律师不感兴趣,我们将采取必要的行动,以确保每个人都感到安全和被包容。
如果您愿意向整个 Bundler 团队报告问题,请发送电子邮件至 [email protected]。如果您出于任何原因不愿意向整个团队报告,请查看 维护者团队列表,并通过电子邮件、Twitter 或 Slack 向您选择的单个维护者报告。任何违反政策或目标的人员都应与团队(以及报告者,如果他们要求)合作,以按照项目目标解决问题。