主要治理文档#

此文档的正式版本,以及下述治理部分定义的角色中的个人和机构列表,包含在项目治理存储库中,位于

matplotlib/governance

项目#

Matplotlib 项目(“项目”)是一个隶属于 NumFOCUS 基金会的开源软件项目。该项目目标是开发开源软件,并部署开放的公共网站和服务,用于数据可视化。该项目开发的软件以 BSD(或类似的许可)开源许可证发布,以开放方式开发,并托管在 Matplotlib GitHub 组织下的公共 GitHub 存储库中。项目软件的示例包括用于数据可视化的 Matplotlib 库及其相关的扩展和依赖项。该项目运行的服务包括托管在 matplotlib.org 域名下的公共网站和网络服务。

该项目由一个分布式的开发人员团队(称为贡献者)开发。贡献者是指向一个或多个项目存储库贡献了代码、文档、设计或其他工作的个人。贡献者在项目许可证中也称为“Matplotlib 开发团队 (MDT)”。任何人都可以成为贡献者。贡献者可以隶属于任何法律实体或不隶属于任何法律实体。贡献者通过提交、审查和讨论 GitHub 拉取请求和问题,并参与在 GitHub、Discourse、Hackmd、Gitter 聊天室和邮件列表上的开放公共项目讨论来参与项目。项目参与的基础是开放性和透明度。

例如,以下是当前主要 Matplotlib 存储库的部分贡献者列表

matplotlib/matplotlib

该项目的其他存储库的日志中也列出了许多其他贡献者。这还不包括代码以外的其他项目的贡献,例如报告和评论问题,因此这只是被认为是贡献者的个人的一部分。

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

该项目正式隶属于 NumFOCUS 基金会(http://numfocus.org),这是一个由美国国税局法典第 501(c)(3) 条涵盖的非营利组织。NumFOCUS 作为其财政赞助商,可以持有项目商标和其他知识产权,帮助管理项目捐款,并充当母法律实体。NumFOCUS 是唯一与该项目有正式关系的法律实体(请参见下文的机构合作伙伴部分)。

治理#

本节描述该项目的治理和领导模式。

项目治理的基础是

  • 开放性和透明度

  • 积极贡献

  • 机构中立性

项目领导最初由原始作者 John D. Hunter 提供。在他 2012 年去世前不久,领导权移交给了 Michael Droettboom,后者后来邀请 Thomas A Caswell 作为联合负责人。其他领导也由一部分贡献者(称为开发人员)提供,他们的重大或持续贡献已通过获得项目存储库的“提交权限”而得到认可。一般来说,所有项目决策都是通过开发人员之间的共识,并听取社区的意见而做出的。

尽管这种方法为我们提供了很好的服务,但随着项目的增长,面临更多的法律和财务决策并与其他机构互动,我们认为有必要建立更正式的治理模式。展望未来,项目领导将包括一名项目负责人、几名副负责人和一个指导委员会。我们认为这种治理模式是对我们已经做的事情的正式化,而不是方向的改变。

项目负责人#

该项目将有一位项目负责人 (PL),目前是 Thomas A Caswell。PL 有权为项目做出所有最终决定。实际上,PL 选择将该权力推迟到社区讨论渠道、副项目负责人和指导委员会(见下文)的共识。预计,而且过去的情况也一直是这样,PL 很少会行使他们的最终权力。由于很少使用,我们将 PL 的最终权力称为“特殊”或“否决”投票。当确实发生时,PL 的否决通常发生在指导委员会陷入僵局或指导委员会要求 PL 就特定事项做出决定的情况下。

PL 是指导委员会的主席(见下文),并且可以自行决定将其在特定决策或一组决策上的权力委托给任何其他委员会成员。PL 负责确保正确记录所有需要投票的 SC 活动。

PL 可以任命他们的继任者,但预计会就此决定咨询指导委员会。如果 PL 无法任命继任者,指导委员会将向 NumFOCUS 主董事会提出建议或建议。虽然指导委员会和 NumFOCUS 主董事会将密切合作进行 PL 的遴选过程,但 NumFOCUS 主董事会将做出最终决定。在特殊情况下,NumFOCUS 董事会可能会将 PL 从项目中移除。

指导委员会#

该项目将有一个指导委员会,由项目贡献者组成,这些贡献者已经产生了质量和数量上都很可观,并且持续至少一年的贡献。委员会的总体作用是通过与 PL 合作并听取社区的意见,确保项目在技术、财务和社区方面长期良好发展。

任何委员会成员都不能通过雇佣或承包的方式向同一个人汇报。

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

指导委员会及其成员在某些情况下扮演着特殊角色。特别是,委员会可以

  • 开发资金来源并确定资金的使用方式(请参见下面的财务小组委员会)。

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

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

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

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

  • 授予或撤销提交权限。

指导委员会将由 5 到 7 人组成,包括 PL。担任指导委员会成员是一种责任,而不是对长期贡献者的认可。

委员会成员#

要获得成为指导委员会成员的资格,个人必须是项目贡献者,其贡献在质量和数量上都很可观,并且持续至少一年。潜在的委员会成员由现有委员会成员提名,并在询问潜在成员是否有兴趣且愿意担任该职务后,由现有委员会投票决定。委员会最初将通过 PL 从符合上述标准的现有开发人员中提名产生。

在考虑潜在成员时,委员会将以全面的视角看待候选人的贡献。这将包括但不限于代码、代码审查、基础设施工作、邮件列表和聊天参与、社区建设、用户和开发人员支持、教育和推广、拨款申请和设计工作。我们故意不设置定量指标(如“此存储库中的 100 次提交”),以避免鼓励为指标而表现而不是为项目的整体福祉而表现的行为。我们希望在我们的团队中鼓励各种背景、观点和才能,这就是为什么我们明确地不将代码定义为评估委员会成员的唯一指标的原因。

当被邀请加入指导委员会时,贡献者承诺服务 2 年。在两年结束时,在征得委员会其他成员的同意后,可以选择重新加入委员会。如果他们选择不重新加入委员会,则使用上述流程招募新成员。

指导委员会成员(PL 除外)将分为两个任期错开 1 年的同等班级。这将有助于随着时间的推移保持指导委员会的连续性。

指导委员会成员可以随时辞职。如果委员会成员不活跃的时间超过 2 个月,PL 将会联系他们,询问他们是否计划重返积极参与。如果他们不打算重返,将被要求辞职。如果委员会成员表示他们打算再次活跃,但在 1 个月后仍未这样做,委员会可能会投票将其移除。

如果委员会成员提前离开委员会,可以使用与上述相同的流程进行替换。他们的继任者将加入同一班级并完成剩余的 2 年任期。

只要理事会总人数(包括项目负责人)在 5 到 7 人之间,每个类别的人数可以在 2 到 3 人之间波动。如果某个类别的人数过少,则必须招募额外的成员。

所有前理事会成员,就像任何其他项目贡献者一样,在未来任何时候都可以被考虑再次成为会员。退休的理事会成员将列在项目网站上,以表彰他们在理事会中活跃的时期。

理事会保留权利,通过超级多数投票,将任何被认为对项目福祉有害的人(包括理事会成员)从项目的在线空间中驱逐出去,前提是沟通和冲突解决的尝试已经失败。

利益冲突#

项目负责人、副项目负责人和理事会成员预计将在各种公司、大学和非营利组织工作。因此,成员可能会存在利益冲突。此类利益冲突包括但不限于:

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

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

理事会的所有成员(包括项目负责人)应向理事会其他成员披露他们可能存在的任何利益冲突。在特定问题上存在利益冲突的成员可以参与理事会对该问题的讨论,但必须回避对该问题的投票。如果项目负责人因某个特定决定而回避,他们将为该决定任命一名替补项目负责人。

理事会的私人沟通#

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

小组委员会#

理事会可以创建小组委员会,为项目的特定方面提供领导和指导。与整个理事会一样,小组委员会应以公开透明的方式开展工作,除非有特殊需要要求保密。私人小组委员会的沟通应在理事会的主要私人邮件列表中进行,除非有特殊需要或有外部成员。

NumFOCUS 小组委员会#

理事会将维持一个专注于管理其与 NumFOCUS 互动的小组委员会,该委员会将包括外部成员。

  • NumFOCUS 小组委员会由 4 人组成,负责管理通过 NumFOCUS 获得的的项目资金。预计这些资金的使用方式应与 NumFOCUS 的非营利使命以及由整个理事会确定的项目方向保持一致。

  • 该小组委员会不得就项目的方向、范围或技术方向做出决定。

  • 该小组委员会将有 4 名成员,其中至少 2 名也是指导委员会的成员,1 名将是指导委员会的外部成员。任何小组委员会成员都不能通过雇佣或承包工作向任何其他小组委员会成员汇报。这样可以避免实际上的多数票集中在一个人身上。

行为准则小组委员会#

该委员会应由 3 至 7 人组成,其中至少一人来自指导委员会,至少一人不来自指导委员会。该委员会负责处理在我们数字和物理空间内发生的行为准则报告。他们将维护自己的私人邮件列表和报告地址。有关如何处理行为准则的详细政策将在其他地方记录。

副项目负责人#

副项目负责人 (DPL) 拥有预先授权的权力,可以在其职责范围内做出决策。与项目负责人一样,副项目负责人应在行使权力之前努力达成共识。副项目负责人的决定可以向项目负责人提出申诉,但除非在特殊情况下,否则推定项目负责人将听从副项目负责人的意见。副项目负责人之间的争议将由项目负责人解决。

副项目负责人由指导委员会成员提名,并由指导委员会多数投票从任命之日起任命为期 1 年(发布经理除外)。在每个 1 年任期内,副项目负责人可以选择继续任职一年或辞职。指导委员会可以通过超级多数投票解除副项目负责人的职务。

根据指导委员会和项目负责人的决定,副项目负责人的职位可能不会被填补,在这种情况下,责任将退回给项目负责人。指导委员会可以通过多数投票创建新的副项目负责人职位、取消未填补的副项目负责人职位或更改职位的描述。

任何当前活跃的贡献者都有资格被考虑担任副项目负责人,并且一个人可以同时担任多个副项目负责人。

项目特定负责人#

Matplotlib 在其保护伞下和 Matplotlib GitHub 组织上托管着许多特定领域的软件包。这些项目将各自有自己的项目负责人,他们可以按照自己认为合适的方式运行项目,但要符合 Matplotlib 的行为准则。

如果一个项目希望托管在 GitHub 上的 Matplotlib 组织中,他们可以向指导委员会提出申请,并通过简单的多数投票获得批准。项目可以随时离开该组织,并且可以通过指导委员会 2/3 的多数投票从该组织中删除。

机构合作伙伴和资金#

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

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

根据这些定义,机构合作伙伴是指在美国或其他地方认可的任何法人实体,该实体至少雇用一名机构贡献者或机构理事会成员。机构合作伙伴可以是营利性实体或非营利性实体。

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

如果现有机构合作伙伴不再有贡献的雇员,他们将获得一年的宽限期,以便其他雇员开始做出贡献。

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

根据赞助级别,机构需要至少提供

  • 6 人月/年的带薪工作时间,用于一名或多名 Matplotlib 维护者或为任何 Matplotlib 团队或活动做出贡献的定期贡献者

才能成为机构合作伙伴。除了赞助文档中描述的赞助商鸣谢外,机构合作伙伴还可以

  • 在 Matplotlib 网站、演讲和 T 恤上鸣谢他们自己的资金来源。

更改治理文档#

对治理文档的更改通过 GitHub 拉取请求提交到项目在 matplotlib/governance 的治理文档 GitHub 存储库中。然后,拉取请求会根据公众的评论和审查进行完善,目标是达成社区共识。在此开放期之后,一名指导委员会成员向指导委员会提议批准更改并合并拉取请求(接受拟议的更改),或提议关闭拉取请求而不合并(拒绝拟议的更改)。该成员应在拟议接受或拒绝的拉取请求中说明最终提交哈希,并简要总结拉取请求。整个指导委员会必须投票,并且至少 2/3 的投票必须是赞成的,才能执行拟议的行动(投票分数向上取整到最接近的整数)。由于项目负责人对项目拥有最终权力,项目负责人有权单独行动来接受或拒绝更改,或推翻指导委员会的决定。