关注了就能看到更多这么棒的文章哦~
Managing expectations with a contributions and credit policy
May 13, 2024
This article was contributed by Valerie Aurora
ChatGPT translation
https://lwn.net/Articles/971817/
开源项目的维护者有时会与贡献者在如何审查、修改、合并和署名贡献方面产生分歧。制定一份描述如何处理贡献的书面政策,可以帮助维护者为潜在的贡献者设定合理的期望。这样可以使维护者的工作更轻松,因为这有助于减少项目中的摩擦的来源。最近,一份帮助为项目创建这种政策的指南已经被开发出来。
人们有时对开源项目在贡献方面的运作方式有着相当不一样的期望。例如,最近关于如何为有两位作者的 Linux 内核补丁 (Linux kernel patch) 署名的 讨论 吸引了超过 600 条评论,其中有包括从“原作者应该独占署名权”或者“原作者不应获得任何署名权”的各种意见,不一而足。另一种分歧则是关于接受哪些类型的贡献:有些项目不希望有外部贡献,或者不希望增加任何新特性,但贡献者依然不断提交这些内容。
在没有书面政策的情况下,贡献者会对项目的运作方式做出假设——如果没有得到预期的回应,他们可能会发起争论。一份描述如何处理和署名贡献的书面政策可以防止冲突的发生。为了帮助维护者创建他们自己的政策,我与 Maria Matějka、Martin Winter、Marcos Sanz 以及其他 RIPE 开源工作组 (RIPE Open Source Working Group) 成员共同撰写了 《署名和贡献政策制定指南》 (credits and contribution policy development guide)。
覆盖范围
当一个贡献和认可政策(policy)聚焦于维护者和贡献者在处理贡献时经常存在不同、不兼容的期望时,它就最有用了,比如:欢迎哪些贡献、如何处理审查和修改、以及如何分配认可。政策还可以包括维护者和贡献者在处理复杂情况时的逐步说明,比如当贡献者不愿意进行请求的更改时。
相关政策可以、并且应该涵盖各种类型的贡献。Melissa Mendonça,NumPy、SciPy 和 napari 的维护者说:“通常,文档、社区、设计工作等都不会被视为正常意义上的贡献(即不会在 GitHub 上给你绿色的方块)。”相关政策可以帮助揭示这些贡献,并创建一个承认它们的标准流程。
这个政策可以帮助解决三个常见的困境:为多个直接贡献者分配认可、修订贡献和吸引合适的贡献。
决定谁应该为一项工作获得认可是一个困难且尚未解决的哲学问题。从实践角度来看,人们出于许多原因给予认可,比如奖励贡献者、建立知识产权所有权或追踪漏洞或后门的来源。
作为政策开发指南的作者,我们对这个问题采取了一种实际的方法。我们问自己在我们的项目中想要鼓励哪些行为,然后以使这些结果更可能发生的方式分配认可。由于我们希望吸引新的贡献者,即使维护者必须完全重写贡献,我们也会将主要作者的认可归给新的贡献者。其他项目可以做出类似的务实决定,而不必解决谁应该得到认可的一般问题。
有时人们会试图利用正式的认可政策。Mendonça 表示,对开源工作的认可“总是一个可以操纵的体系(例如,只做足够的贡献以获得一定的认可/职位,然后离开)”。然而,她表示她“愿意在给予认可方面犯错”,并在之后采取纠正措施。任何政策都可以明确规定,维护者可以采取他们认为必要的任何行动的例外。
多贡献者认可
对于分配认可的一些政策很容易实施,比如当前对许多项目来说是事实上的政策:“谁合并了代码就决定了谁获得认可”。然而,对于更复杂的认可政策,一些困难情况很快就会出现。Matějka,BIRD routing daemon 团队负责人(也是政策指南的合著者)说:
我们有时会收到带有好点子但质量很差的贡献。关于特定补丁更多是一个点子(在提交消息中表示感谢)还是一个补丁(我们保留作者但添加一个备注,表示由提交者更新)的讨论总是很激烈。
相反,对于多作者贡献的认可也可能变成指责;如果原始作者无法审查更改,将更改归功于他们可能会让他们为编辑的错误负责。解决复杂的认可问题可能会占用维护者大量的时间,或者导致贡献在几个月的时间里悬而未决。一个标准政策可以让维护者决定如何处理这些情况,并在将来简单地参考政策。
许多贡献在合并到主项目之前需要进行一些修订。这可能出现多种问题:也许没有人有时间审查,贡献者没有响应请求,或者在贡献被批准时已经不能合并。政策可以通过两种方式帮助解决这些问题:它可以为维护者提供应对困难情况的操作指南(例如,在两周没有回应后,进行编辑并合并贡献),并为贡献者提供何时联系维护者的指导方针(例如,在两周没有回应后,再次发送电子邮件到邮件列表)。
吸引合适的贡献
许多人认为“开源”意味着“开放给外部贡献并愿意指导新贡献者”。实际上,一些项目不希望有新的贡献者或新特性,另一些项目则会接受外部贡献,但前提是这些贡献必须完全重写,而且只有一些维护者有时间和兴趣指导新贡献者。明确的政策可以帮助维护者避免与潜在贡献者的冲突,也帮助潜在的贡献者和用户决定他们是否愿意依赖具有这种特定贡献政策的项目。
我早期的一次开源贡献是根据某种贡献政策指导的。xjack 屏幕保护程序 打印“总在工作没有娱乐让杰克变得乏味”这句话,并伴有各种错误和拼写错误,这一灵感来自电影《闪灵》中的一个场景。源代码中的注释 告诉潜在的贡献者不要费心提交修改其打印内容的补丁。然而,当我正是这么做的时候,将其改为打印“所有工作没有娱乐让瓦尔变得乏味”,我发现了代码中生成拼写错误的一个错误。我提交了一个修复该错误的补丁,虽然该补丁被合并了,但没有署名。
政策资源
《署名和贡献政策制定指南》 (credits and contribution policy development guide) 包含政策每个部分的几种变体,以及开源项目使用的政策列表。我们请求(但不强制要求)在任何衍生作品中给作者署名。该政策指南有自己的贡献和署名政策,并欢迎新贡献者。目前,我们特别感兴趣的是为政策每个部分提供更多选择的额外示例,以及现有政策的链接。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~