本文档基于牛津大学的 仁慈独裁者治理模式 。 它受 知识共享 署名-相同方式共享 2.0 英国:英格兰和威尔士许可证。
NuGet 项目由仁慈独裁者领导,由社区管理。 也就是说,社会积极为项目的日常维护做出贡献,但一般战略路线是由仁慈的独裁者绘制的。 对于分歧,仁慈的独裁者有最后一句话。
这是仁慈的独裁者的工作,以解决社区内部的争端,并确保该项目能够以协调的方式取得进展。 反过来,社区的工作是通过积极参与和贡献来指导仁慈独裁者的决定。
角色和职责
此处描述了四个角色:仁慈的独裁者、提交者、参与者和用户。
仁慈的独裁者
NuGet 核心团队被自称为仁慈独裁者或项目主管。 然而,由于社区始终有能力进行分叉,团队需要对社区完全负责。 项目负责人预计将了解整个社区,并努力满足尽可能多的冲突需求,同时确保该项目在长期生存。
在许多方面,仁慈独裁者的角色与独裁统治无关,而更多是关于外交。 关键是确保,随着项目的扩展,合适的人获得对项目的影响力,并且社区能够团结在项目负责人的愿景下。 项目负责人的工作是确保提交人员(如下所示)代表项目做出正确的决策。 一般来说,只要提交者符合项目的策略,项目主管就会允许他们根据需要继续。
此外,.NET Foundation 的员工将项目负责人视为与 NuGet 相关的所有业务运营(包括域名注册和技术服务,如代码签名)的主要或首要联系人。
提交者
承诺者是贡献者,他们为 NuGet 做出了持续宝贵的贡献,并由仁慈独裁者任命。 任命后,代码提交者负责直接将代码写入存储库,并审查其他人的贡献。 提交者通常是开发人员,但可以通过其他方式参与。
通常,提交者专注于项目的特定方面,并具备一定水平的专业技能和理解力,从而赢得社区和项目负责人的尊重。 贡献者的角色不是一种官方身份,而是社区内有影响力的成员在项目主管寻求指导和支持时所担任的非正式职责。
提交者在 NuGet 的总体方向方面没有权限。 然而,他们确实能够引起项目主管的注意。 这是一个承诺者的工作,以确保领导知道社区的需求和集体目标,并帮助开发或引起对项目的适当贡献。 通常,提交者被赋予非正式地控制其特定责任领域的权力,并被授予直接修改特定源代码区域的权限。 也就是说,虽然承诺者没有明确的决策权,但他们经常会发现,他们的行动与领导做出的决定是同义的。
供稿人
贡献者是向 NuGet 提交补丁的社区成员。 这些补丁可能是一次性事件或随着时间的推移发生的。 预期是参与者首先提交较小的修补程序,然后随着参与者、提交者和项目主管对其修补程序质量建立信心,修补程序可以增大。 贡献者在相关的产品发行说明文档中被认可。
在参与者的第一个修补程序放入存储库之前,他们必须签署 参与者许可协议 或向 .NET Foundation 分配协议。 可以提交并讨论补丁,但实际上在没有必要的手续的情况下无法提交到存储库。 若要获取参与者许可协议,请通过电子邮件发送请求到 contributions@nuget.org。
若要成为参与者,请将拉取请求提交到以下存储库之一:
提交拉取请求的详细过程因存储库而异:
用户
用户是需要 NuGet 并使用 NuGet 作为包使用者和/或作者的社区成员。 用户是社区中最重要的成员:如果没有这些成员,项目将没有目的。 任何人都可以是用户;没有特定的要求。
应鼓励用户尽可能多地参与 NuGet 和社区的生活。 用户参与使项目团队能够确保他们满足这些用户的需求。 常见的用户活动包括但不限于以下各项:
- 倡导推广项目的使用
- 从新用户的角度来看,通知开发人员项目优势和弱点
- 提供道德支持(感谢能产生很大的正面影响)
- 编写文档和教程
- 提交 bug 报告和功能请求
- 参与社区活动,例如错误修复大会
- 参与讨论板或论坛
继续参与该项目及其社区的用户通常会发现自己越来越参与其中。 然后,此类用户可能会继续成为参与者,如上所述。
特殊情况下的包继承
在 NuGet 帐户持有者不幸失去能力或去世的情况下,我们将与社区合作,在该帐户拥有唯一所有权的情况下,为在 OSI 批准的许可证下发行的软件包添加适当的所有者。 若要请求所有权,必须向我们发送以下文档:
- 政府颁发的带照片身份证复印件。
- 以下文件之一证明以前的帐户持有人身份:
- 如果前一位账户持有人去世,需提供由政府颁发的死亡证明,或者
- 认证文件,如由负责护理无能力帐户持有人的医疗专业人员签名的证书。
- 以下文档之一证明你有权拥有:
- 婚姻证明显示你是账户持有人的幸存配偶,
- 签署的授权书
- 将你命名为执行人或受益人的遗嘱或信托文档的副本,
- 帐户持有人的出生证明(如果你是他们的父母,或者,
- 如果您是账户持有人的法定监护人,则需要提供监护文件。
如果你发现自己需要调用此策略,请向我们发送电子邮件,其中包含 support@nuget.org 包的 ID 和版本。
透明度
在开源项目的治理方面建立社区信任对于它的成功至关重要。 为此,决策必须以透明、开放的方式完成。 必须公开讨论项目的方向。 社区不应该对仁慈的独裁者的决定感到措手不及。 此外,必须存档有关项目决策的讨论,以便社区成员能够了解决策及其上下文的整个历史记录。