SciPy 项目治理#

本文档的目的是使 SciPy 项目在普通和特殊情况下使用的治理流程正式化,并阐明如何做出决策以及我们社区的各个要素如何互动,包括开源协作开发与可能由营利或非营利实体资助的工作之间的关系。

项目#

SciPy 项目(以下简称“项目”)是一个开源软件项目。该项目的目标是开发用于 Python 中科学计算的开源软件,特别是 scipy 包。该项目开发的软件根据 BSD(或类似)开源许可证发布,公开开发并托管在 scipy GitHub 组织下的公共 GitHub 存储库中。

该项目由一个分布式的开发者团队(称为贡献者)开发。贡献者是指为该项目贡献了代码、文档、设计或其他工作的个人。任何人都可以成为贡献者。贡献者可以隶属于任何法律实体或不隶属于任何法律实体。贡献者通过提交、审查和讨论 GitHub 拉取请求和问题,并参与 GitHub、论坛和其他渠道上的公开项目讨论来参与该项目。项目参与的基础是开放性和透明度。

项目社区由所有贡献者和项目用户组成。贡献者代表更大的项目社区工作并对其负责,我们努力保持贡献者和用户之间的障碍尽可能低。

该项目不是法律实体,目前与任何法律实体没有任何正式关系。

治理#

本节介绍该项目的治理和领导模式。

项目治理的基础是

  • 开放性和透明度

  • 积极贡献

  • 机构中立性

传统上,项目领导由一部分贡献者(称为核心开发者)提供,他们的积极和持续贡献已通过获得项目 GitHub 存储库的“提交权限”而得到认可。一般来说,所有项目决策都是通过核心开发者在听取社区意见后达成共识而做出的。

虽然这种方法对我们很有帮助,但随着项目的增长,我们看到了对更正式的治理模式的需求。SciPy 核心开发者表示倾向于包含 BDFL(仁慈的独裁者)的领导模式。因此,展望未来,该项目领导将由 BDFL 和指导委员会组成。

BDFL#

该项目将设立一名 BDFL(仁慈的独裁者),目前是 Pauli Virtanen。作为独裁者,BDFL 有权为项目做出所有最终决定。作为仁慈的独裁者,BDFL 在实践中选择将其权力让位于社区讨论渠道和指导委员会(见下文)的共识。预计,而且过去的情况也是如此,BDFL 很少会行使其最终权力。由于很少使用,我们将 BDFL 的最终权力称为“特殊”或“否决”投票。当这种情况发生时,BDFL 的否决通常发生在指导委员会陷入僵局或者指导委员会要求 BDFL 对特定事项做出决定的情况下。为了确保 BDFL 的仁慈,如果不同意 BDFL 的总体方向,该项目鼓励其他人分叉该项目。BDFL 可以自行决定将其在特定决策或一组决策上的权力委托给任何其他委员会成员。

BDFL 可以任命其继任者,但预计会就此决定咨询指导委员会。如果 BDFL 无法任命继任者,指导委员会将做出此决定 - 最好通过共识,但如果需要,通过多数投票。

请注意,BDFL 可以随时辞职,并且本着诚意,也会听取要求其辞职的严肃呼声。另请注意,BDFL 更像是一个后备决策角色,而不是董事/首席执行官的角色。

指导委员会#

该项目将设立一个指导委员会,该委员会由为项目做出质量和数量都非常可观且持续至少一年的贡献的贡献者组成。委员会的总体作用是通过与 BDFL 合作并听取社区的意见,确保项目在技术上和作为一个社区的长期福祉。

委员会将设有一名主席,其职责是保持委员会和项目的运作的组织方面正常进行。委员会还将为项目任命一名发布经理,该经理对一个或多个版本的发布负最终责任。

在日常项目活动中,委员会成员与所有其他贡献者和社区成员一样,以同等的身份参与所有讨论、代码审查和其他项目活动。在这些日常活动中,委员会成员不因其在委员会中的成员身份而拥有任何特殊权力或特权。但是,由于他们的贡献质量和数量以及他们对项目软件和服务的专业知识,预计委员会成员将为可能经验不足的贡献者提供有用的指导,无论是技术方面还是项目方向方面。

指导委员会及其成员在某些情况下发挥着特殊的作用。特别是,委员会可以

  • 就项目的总体范围、愿景和方向做出决策。

  • 就与其他组织或个人的战略合作做出决策。

  • 就具体的技术问题、功能、错误和拉取请求做出决策。它们是指导代码审查过程和合并拉取请求的主要机制。

  • 就项目运行的服务做出决策,并为项目和社区的利益管理这些服务。

  • 当常规社区讨论无法在合理的时间范围内就某个问题达成共识时做出决策。

  • 更新政策文件,例如本文件。

委员会成员资格#

要获得成为指导委员会成员的资格,个人必须是为项目做出质量和数量都非常可观且持续至少一年的贡献的贡献者。潜在的委员会成员由现有委员会成员提名,并在询问潜在成员是否有兴趣并愿意担任该职务后,由现有委员会投票决定。该委员会将最初由截至 2017 年 1 月在过去两年中一直非常活跃的现有核心开发者组成。

在考虑潜在成员时,委员会将全面考虑候选人的贡献。这将包括但不限于代码、代码审查、基础设施工作、论坛和聊天参与、社区帮助/建设、教育和推广、设计工作等。我们有意不设置任意的定量指标(如“此存储库中的 100 次提交”),以避免鼓励为指标而行动而不是为项目的整体福祉而行动的行为。我们希望在我们的团队中鼓励各种背景、观点和才能,这就是为什么我们明确不将代码定义为评估委员会成员资格的唯一指标。

如果委员会成员在一年内在该项目中变得不活跃,则会考虑将其从委员会中移除。在移除之前,将联系不活跃的成员,以了解他们是否计划恢复积极参与。如果没有,他们将在委员会投票后立即被移除。如果他们计划很快恢复积极参与,将给予他们一年的宽限期。如果他们在那段时间内没有恢复积极参与,他们将被委员会投票移除,不再有宽限期。所有前委员会成员可以在未来的任何时候再次被考虑加入,就像任何其他项目贡献者一样。退休的委员会成员将在项目网站上列出,以表彰他们在委员会中活跃的时期。

如果委员会成员(BDFL 除外)被认为对项目的福祉造成积极的损害,并且沟通和冲突解决的尝试失败,则委员会保留开除当前成员的权利。

当前指导委员会成员的列表维护在页面 关于我们

委员会主席#

主席将由指导委员会任命。主席可以任职多久,但可以随时辞职,并且会听取要求其辞职的严肃呼声(类似于 BDFL 的角色)。主席将负责

  • 在 4 月中旬和 10 月中旬左右,每半年启动一次对项目技术方向的审查(如 SciPy 路线图 所述)。

  • 在每年的同一时间,总结前一段时间的任何相关组织更新和问题,并在论坛上征求反馈/建议。

  • 确保指导委员会的组成保持最新。

  • 确保在指导委员会私下讨论的事项在论坛上进行总结,以使社区知情。

  • 确保其他重要的组织文件(例如,行为准则、财政赞助协议)在添加后保持最新。

发布经理#

发布经理对发布负有最终责任。这包括

  • 提出并决定发布时间。

  • 在对特定变更或功能没有达成共识的情况下,确定发布内容。

  • 创建发布版本并在相关的公共渠道上发布公告。

有关这些职责在实践中的更多细节,请参阅 制作 SciPy 发布版本

利益冲突#

BDFL 和理事会成员预计将在各种公司、大学和非营利组织任职。因此,成员可能会存在利益冲突。此类利益冲突包括但不限于:

  • 财务利益,例如在项目之外的可能影响他们在项目中的工作的投资、雇佣或承包工作。

  • 访问其雇主的专有信息,这些信息可能会泄露到他们在项目中的工作中。

所有理事会成员,包括 BDFL,应向理事会的其他成员披露他们可能存在的任何利益冲突。在特定问题上存在利益冲突的成员可以参与理事会关于该问题的讨论,但必须回避对该问题进行投票。如果 BDFL 因特定决定而回避,理事会将为此决定任命一名替代 BDFL。

理事会的私人沟通#

除非有特别要求,否则所有理事会的讨论和活动都将公开进行,并与项目贡献者和社区进行协作和讨论。理事会将有一个私人邮件列表,该列表将谨慎使用,仅在特定事项需要保密时使用。当需要私人沟通和决策时,理事会将在删除不应发布到公共互联网的个人/私人/敏感信息后,尽力向社区总结这些沟通和决策。

理事会决策#

如果指导委员会必须做出正式决定,他们将使用 Apache 基金会投票流程 的一种形式。这是一种正式的共识形式,其中 +1 票表示同意,-1 票表示否决(并且必须附带理由,如上所述),如果希望表达意见而不登记完全否决,也可以投小数票(例如 -0.5、+0.5)。这些数字投票也经常被非正式地用作了解人们对某些问题的一般感受的一种方式,并且通常不应被视为正式投票。只有在明确声明的情况下才会进行正式投票,如果发生这种情况,则应将投票保持开放足够长的时间,以便所有感兴趣的理事会成员都有机会回应 - 至少一周。

在实践中,我们预计对于大多数指导委员会的决策(例如,投票选出新成员),更非正式的流程就足够了。

机构合作伙伴和资金#

指导委员会是项目的主要领导者。除了作为贡献者和理事会成员参与项目外,任何外部机构、个人或法律实体都无权拥有、控制、篡夺或影响该项目。但是,由于机构可以成为项目的重要资金机制,因此正式承认机构参与该项目非常重要。这些是机构合作伙伴。

机构贡献者是指任何作为机构合作伙伴的正式职责的一部分而为项目做出贡献的个人项目贡献者。同样,机构理事会成员是指任何作为机构合作伙伴的正式职责的一部分而为项目做出贡献的项目指导委员会成员。

根据这些定义,机构合作伙伴是指任何国家/地区中至少雇用 1 名机构贡献者或机构理事会成员的任何公认的法律实体。机构合作伙伴可以是营利性实体,也可以是非营利性实体。

通过雇用作为其正式职责的一部分积极为项目做出贡献的个人,机构有资格成为机构合作伙伴。换句话说,合作伙伴影响项目的唯一方法是通过积极参与项目的开放式开发,与贡献者和理事会成员社区的任何其他成员的条件相同。仅在机构环境中使用项目软件并不能使实体成为机构合作伙伴。财政捐赠不能使实体成为机构合作伙伴。一旦机构有资格获得机构合作伙伴资格,指导委员会必须提名并批准合作伙伴关系。

如果现有机构合作伙伴在某个时候停止雇用任何贡献员工,则将开始为期一年的宽限期。如果在这为期一年的期限结束时,他们仍然没有任何贡献员工,则他们的机构合作伙伴关系将失效,并且恢复该合作伙伴关系将需要经过新合作伙伴的正常流程。

机构合作伙伴可以通过任何合法手段自由地为他们在项目中的工作寻求资金。这可能涉及非营利组织从私人基金会和捐赠者那里筹集资金,或者营利性公司构建利用项目软件和服务的专有产品和服务。机构合作伙伴为在项目上的工作而获得的资金称为机构资金。但是,机构合作伙伴获得的任何资金都不能凌驾于指导委员会之上。如果合作伙伴有资金进行 SciPy 工作,而理事会决定不将该工作作为项目来追求,则合作伙伴可以自由地自行追求。但是,在这种情况下,合作伙伴的这部分工作将不属于 SciPy 的范畴,并且不能以任何暗示正式关系的方式使用项目商标。

机构合作伙伴的权益包括:

  • 在 SciPy 网站和演讲中致谢

  • 能够在 SciPy 网站和演讲中致谢其自身的资金来源

  • 能够通过其理事会成员的参与来影响项目

  • 邀请理事会成员参加 SciPy 开发人员会议

当前机构合作伙伴的列表维护在 关于我们 页面上。

文档历史#

scipy/scipy

致谢#

本文档的很大一部分改编自 Jupyter/IPython 项目的治理文档NumPy 的治理文档

许可证#

在法律允许的最大范围内,作者已根据 CC-0 公共领域奉献/许可证放弃了 SciPy 项目治理文档的所有版权及相关或邻接权利。