NXEP 1 — 治理与决策#

作者:

Jarrod Millman <millman@berkeley.edu>

作者:

Dan Schult <dschult@colgate.edu>

状态:

已接受

类型:

流程

创建日期:

2020-06-25

摘要#

NetworkX 是一个基于共识的社区项目。任何对该项目感兴趣的人都可以加入社区,为项目设计做出贡献,并参与决策过程。本文档描述了如何参与,如何达成共识以及如何解决僵局。

角色与职责#

社区#

NetworkX 社区由以任何方式使用或参与项目工作的任何人组成。

贡献者#

任何社区成员都可以通过以下具体方式直接参与项目,成为贡献者,例如:

以及其他可能性。通过为项目做出贡献,社区成员可以直接帮助塑造项目的未来。

贡献者应该阅读贡献者指南和我们的行为准则

核心开发者#

核心开发者是通过持续贡献对项目表现出持续承诺的社区成员。他们已经证明可以被信任细心地维护 NetworkX。成为核心开发者允许贡献者合并已批准的拉取请求,对合并拉取请求投赞成或反对票,并参与决定 API 的重大变更,从而更容易地继续他们的项目相关活动。核心开发者作为团队成员出现在NetworkX 核心开发者图库中,并且可以通过@networkx/core-developers 联系。核心开发者应遵守核心开发者指南,审查代码贡献。

新的核心开发者可以由任何现有核心开发者提名。关于新核心开发者提名的讨论是少数几个在项目私有管理列表上进行的活动之一。邀请新核心开发者的决定必须通过“惰性共识”(lazy consensus)作出,这意味着所有作出回应的现有核心开发者必须一致同意。邀请必须在最初提名后至少一周进行,以便现有成员有时间提出任何反对意见。

指导委员会#

指导委员会 (SC) 成员是承担额外职责的核心开发者,以确保项目的顺利运行。指导委员会成员应参与战略规划,批准治理模型的变更,并就授予项目本身的资金作出决定。(给予社区成员的资金由他们自己争取和管理。)指导委员会的目的是从宏观角度确保项目的顺利进展。影响整个项目的变更需要基于对项目和更广泛生态系统的长期经验进行分析。当核心开发者社区(包括指导委员会成员)未能在合理时间内达成共识时,指导委员会是解决问题的实体。

当前指导委员会成员列表显示在NetworkX 指导委员会图库中,并且可以通过@networkx/steering-council 发送消息。

决策过程#

关于项目未来的决策是通过与所有社区成员讨论进行的。所有非敏感的项目管理讨论都在项目邮件列表问题跟踪器上进行。偶尔,敏感的讨论可能在私有列表上进行。

决策应符合我们的使命与价值观

NetworkX 使用一种寻求共识的流程来制定决策。项目组努力寻找一个在核心开发者中没有开放异议的解决方案。核心开发者应区分对提案的根本性反对和他们可以接受的轻微感知缺陷,并且不应因后者而阻碍决策过程。如果找不到没有异议的方案,决策将升级至指导委员会,指导委员会将自行使用寻求共识的方式来达成解决方案。在极不可能出现僵局的情况下,如果提案获得指导委员会简单多数的支持,则提案将继续进行。任何提案都必须由 NetworkX 增强提案 (NXEPs) 进行描述。

决策(除了如上所述添加核心开发者和指导委员会成员外)按照以下规则制定:

  • 次要文档更改,例如错字修正,或添加/更正句子(但不改变 NetworkX 首页或“关于”页面),需要一名核心开发者批准,并且在问题或拉取请求页面上没有核心开发者提出异议或请求更改(惰性共识)。如果核心开发者不确定其他人是否会同意,他们应该给其他人“合理时间”对拉取请求提出意见。

  • 代码更改和主要文档更改需要两名核心开发者同意,并且在问题或拉取请求页面上没有核心开发者提出异议或请求更改(惰性共识)。

  • API 原则的更改需要一份增强提案 (NXEPs),并遵循上述决策过程。

  • 对本治理模型或我们的使命与价值观的更改需要一份增强提案 (NXEPs),并遵循上述决策过程,除非核心开发者对更改达成一致同意。

如果在惰性共识中提出异议,提案者可以向社区和核心开发者申诉,更改可以通过升级至指导委员会来批准或拒绝,如果需要,还可以通过一份 NXEP(见下文)来决定。

增强提案 (NXEPs)#

任何 NetworkX 增强提案都应按照模板NXEP X — 模板与说明编写为正式的 NXEP。NXEP 必须在投票前公开并讨论。讨论必须由提案的主要倡导者在 NXEP 的适当章节中进行总结。一旦该总结公开,并且在核心团队有足够时间理解后,他们将进行投票。NXEP 的工作流程在NXEP 0 — 宗旨与流程中有详细说明。

所有现有 NXEP 的列表可在此查看。

致谢#

本文档基于scikit-image 治理文档