SPEC 9 — 治理

作者:
Sanket Verma <svsanketverma5@gmail.com>,Inessa Pawson <inessapawson@gmail.com>,Daniel McCloy <dan@mccloy.info>,Matt Haberland <mhaberla@calpoly.edu>,Jarrod Millman <millman@berkeley.edu>
讨论:
https://discuss.scientific-python.org/t/spec-9-governance/1229
历史:
https://github.com/scientific-python/specs/commits/main/spec-0009
获批者:
注意

这是一份草稿文件。

描述#

此 SPEC 描述了治理是什么,并为开源项目的治理模型选择提供建议。

开源项目社区是软件及其使用者和维护者的集合。治理模型定义了项目内决策的方法、赋予决策权的社区成员的角色以及填充(以及在需要时腾空)这些领导角色的流程。在开源软件项目的背景下,治理模型通常还定义了授予必要的权限或访问组织机密所需的权限,这些权限对于实施与项目相关的决策至关重要。治理模型是对行为准则和社区指南的补充,这些准则定义了项目中所有参与者(包括软件用户)的期望和责任,无论其是否为项目领导者(参见 SPEC XXX),确保项目的长期可持续性。

开源社区通过各种媒介进行互动和贡献,例如分布式版本控制系统、聊天平台、博客文章、讨论论坛、邮件列表和社交媒体。制定明确的参与指南有助于保持持续的贡献流。

本 SPEC 概述了治理的定义、各种开源治理模型、选择正确治理模型的步骤以及采用后需要做什么。

请注意,这些是建议,而不是章程。如果您有任何建议/想法,我们非常乐意考虑。

核心项目认可#

生态系统采用#

徽章#

项目可以通过包含 SPEC 徽章来突出显示他们对本 SPEC 的采用。

SPEC 9 — Governance
[![SPEC 9 — Governance](https://img.shields.io/badge/SPEC-9-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.cn/specs/spec-0009/)
|SPEC 9 — Governance| 

.. |SPEC 9 — Governance| image:: https://img.shields.io/badge/SPEC-9-green?labelColor=%23004811&color=%235CA038
   :target: https://scientific-python.cn/specs/spec-0009/
要使用一个徽章指示多个 SPEC 的采用,请参见 此处

实施#

选择治理模型#

当您为项目定义治理时,您需要确定一些事项

  • 维护人员、核心团队、贡献者和社区成员在项目中扮演什么角色?
  • 每个角色都具有哪些权限、职责和特权?
  • 人们如何被分配到角色以及如何被移除?
  • 项目内如何做出决策并记录决策?
  • 解决冲突的方法是什么?

开源项目中使用了一些**预定义的治理模型**。我们将在这里提及它们以供参考

  • BDFL
    • BDFL 代表“终身仁慈独裁者”。在这种结构下,一个人(通常是项目的最初作者)对所有主要的项目决策拥有最终决定权。较小的项目默认情况下由 BDFL 管理,因为只有 1 或 2 名维护人员。
    • BDFL 模型模板 → http://oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel
  • 精英统治/能者居上
  • 自我任命委员会/委员会/董事会
    • 此模型任命一个董事会或委员会来管理项目的各个方面。这些群体通常被称为指导委员会、提交者委员会、技术运营委员会、董事会等。对于需要赞助基金会的项目以及建立选举机制具有挑战性的项目,此模型可能会有所帮助。
  • 选举
    • 社区选举领导层或决策机构。此模型旨在确保指导项目方向并做出关键决策的人员以民主方式选出,代表更广泛的社区利益。
  • 基金会支持
    • 一个非营利基金会监督该项目,其治理结构通常包括董事会、技术委员会和工作组。

其他治理模型

如何选择合适的治理模型?#

为您的开源项目选择正确的治理模型需要考虑几个因素,以确保该结构与您的项目目标、社区和资源相一致。大多数开源项目从 BDFL 模型开始;最终,它们会发展壮大并采用更开放的模型。

在为您的项目选择合适的模型时,您应该考虑一些事项

  • 项目生命周期阶段
    • 早期阶段
    • 成长阶段
    • 成熟阶段
  • 评估项目的需要和目标
    • 项目规模和复杂性
    • 社区参与
  • 评估可用资源
    • 领导力和管理能力
  • 社区动态
    • 大型、多元化的社区可能会从民主或精英统治模型中受益,以代表各种利益
    • 较小、同质的社区更适合 BDFL 模型
  • 技术和运营复杂性
    • 具有众多子项目或组件的复杂项目可能需要一个结构化的治理模型来有效地管理它们
  • 灵活性和适应性
    • 选择一个允许项目在发展过程中进行未来调整的模型
    • 实施机制,以便社区定期反馈治理有效性
  • 外部利益相关者
    • 考虑与其他项目、组织或公司建立合作伙伴关系如何可能影响治理
  • 法律和财务考虑
    • 如果项目需要作为非营利组织、基金会或在公司下注册
    • 评估资金来源以及它们如何影响治理

采用后该怎么做?#

一旦项目采用了治理模型,就可以遵循几个重要步骤来确保顺利实施和运营。

  • 记录治理模型
    • 清楚地记录治理模型,包括角色、职责、决策过程以及冲突解决程序。
    • https://communityrule.info/templates/ 提供了一个优秀的界面,您可以在其中为您的治理模型创建 .md 文件
  • 与社区沟通
    • 公开宣布采用新的治理模型
    • 概述治理模型的工作原理、选择它的原因以及它对社区的意义
  • 实施治理结构
    • 分配初始角色和职责
    • 根据治理模型形成任何必要的委员会、理事会或董事会
  • 培养社区参与并确保透明度和问责制
    • 定期向社区更新和报告治理活动、决策和项目进展
    • 建立机制,以便社区对治理模型及其实施提供反馈
    • 通过公开所有与治理相关的文档、会议记录和决策来保持透明度。您可以为此使用公共存储库或网站。
  • 建立冲突解决流程
    • 实施正式机制来解决社区和治理机构内部的冲突。确保这些机制公平、透明、考虑多样性和包容性,并对所有社区成员开放。

备注#

本页