主治理文件#

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

matplotlib/governance

项目#

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

本项目由一群分布式开发人员开发,他们被称为贡献者(Contributors)。贡献者是向一个或多个项目存储库贡献了代码、文档、设计或其他工作的人员。在项目许可证中,贡献者也被称为“Matplotlib 开发团队(MDT)”。任何人都可以成为贡献者。贡献者可以隶属于任何法律实体,也可以不隶属。贡献者通过提交、审查和讨论 GitHub 拉取请求(Pull Requests)和议题(Issues),以及参与 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 负责确保所有需要投票的指导委员会活动都得到妥善记录。

PL 可以任命其继任者,但预计在此决定上会咨询指导委员会。如果 PL 无法任命继任者,指导委员会将向 NumFOCUS 主董事会提出建议。虽然指导委员会和 NumFOCUS 主董事会将密切合作进行 PL 选拔过程,但最终决定将由 NumFOCUS 主董事会做出。NumFOCUS 董事会在特殊情况下可以免去 PL 的项目职务。

指导委员会#

项目将设有一个指导委员会,由在质量和数量上做出实质性贡献,且贡献持续至少一年的项目贡献者组成。委员会的总体职责是,通过与 PL 合作并听取社区意见,确保项目的长期福祉,包括技术上、财务上和作为一个社区的福祉。

任何委员会成员不得通过受雇或签约方式向同一个人汇报。

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

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

  • 开发资金来源并决定资金如何使用(参见下方的财务小组委员会)。

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

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

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

  • 在常规社区讨论未能在合理时间内就某个问题达成共识时做出决策。

  • 授予或撤销提交权限。

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

委员会成员资格#

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

在考虑潜在成员时,委员会将全面审视候选人的贡献。这包括但不限于代码、代码审查、基础设施工作、邮件列表和聊天参与、社区建设、用户和开发者支持、教育和推广、资助申请撰写和设计工作。我们特意不设置量化指标(例如“此存储库中的 100 次提交”),以避免鼓励为了达到指标而非项目整体福祉的行为。我们希望鼓励团队中拥有多样化的背景、观点和人才,这就是为什么我们明确不将代码定义为评估委员会成员资格的唯一标准。

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

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

指导委员会成员可以随时辞职。如果委员会成员在 2 个月内不活跃,PL 将与他们联系,了解他们是否计划恢复积极参与。如果否,他们将被要求辞职。如果委员会成员表示他们打算再次活跃,但一个月后仍未实现,委员会可以投票将其罢免。

如果委员会成员提前离任,可以按照上述相同流程进行替换。其替代者将加入同一类别并服务剩余的 2 年任期。

只要委员会总人数(包括 PL)在 5 到 7 人之间,每个类别可以在 2 到 3 名成员之间波动。如果某个类别人数过少,则必须招募一名新成员。

所有前委员会成员在未来任何时候都可以像其他项目贡献者一样再次考虑加入。退休的委员会成员将列在项目网站上,注明他们在委员会中活跃的时期。

如果委员会认为任何人(包括委员会成员)对项目的福祉具有积极危害性,并且沟通和冲突解决的尝试失败,委员会保留以绝对多数票将其逐出项目在线空间的权利。

利益冲突#

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

  • 在项目之外可能影响其项目工作的财务利益,例如投资、就业或合同工作。

  • 接触其雇主的专有信息,这些信息可能潜在地泄露到他们在项目中的工作中。

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

委员会的私密通讯#

除非有特殊要求,所有委员会的讨论和活动都将是公开的,并通过正常的沟通渠道与项目贡献者和社区进行协作和讨论。委员会将设有一个私人邮件列表,该列表将很少使用,仅在特定事项需要保密时使用。当需要私人通讯和决策时,委员会将尽力在删除不应发布到公共互联网上的个人/私人/敏感信息后,向社区进行总结。

小组委员会#

委员会可以设立小组委员会,为项目的特定方面提供领导和指导。与整个委员会一样,小组委员会应以开放和公开的方式开展工作,除非有特殊保密要求。私人小组委员会通讯应在委员会的主要私人邮件列表上进行,除非有特殊要求或有外部成员参与。

NumFOCUS 小组委员会#

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

  • NumFOCUS 小组委员会由 4 名人员组成,他们负责管理通过 NumFOCUS 获得的的项目资金。预计这些资金将以符合 NumFOCUS 的非营利使命和由全体委员会决定的项目方向的方式支出。

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

  • 本小组委员会将有 4 名成员,其中至少 2 名也是指导委员会成员,另有 1 名将是指导委员会以外的外部成员。任何小组委员会成员不得通过受雇或合同工作向小组委员会的任何其他成员汇报。这避免了有效多数集中在一个人身上。

行为准则小组委员会#

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

副项目负责人#

副项目负责人(DPL)被预先授权在其职责范围内做出决策。与 PL 一样,DPL 在行使其权力之前应努力达成共识。DPL 的决定可以向 PL 上诉,但假定 PL 将在特殊情况下除外,否则会尊重 DPL 的决定。DPL 之间的争议将由 PL 解决。

DPL 由指导委员会成员提名,并经指导委员会多数投票,从任命之日起任命为 1 年任期(发布经理除外)。在每个 1 年任期结束时,DPL 可以选择继续一年或辞职。SC 可以通过绝对多数投票罢免 DPL。

经 SC 和 PL 酌情决定,DPL 职位可能不予填补,在这种情况下,责任将回溯到 PL。SC 可以通过多数投票创建新的 DPL 职位,取消未填补的 DPL 职位,或更改职位描述。

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

项目特定负责人#

Matplotlib 旗下有许多特定领域的软件包,并托管在 Matplotlib GitHub 组织中。这些项目将各自拥有自己的项目负责人,他们可以按照与 Matplotlib 行为准则一致的方式管理项目。

如果一个项目希望托管在 GitHub 上的 Matplotlib 组织下,他们可以向 SC 提出申请,并经简单多数投票通过。项目可以随时离开该组织,也可以通过 SC 的三分之二多数投票从组织中移除。

机构合作伙伴与资金#

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

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

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

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

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

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

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

  • 每年为一名或多名 Matplotlib 维护者或常规贡献者提供 6 人月/年的有偿工作时间,用于任何 Matplotlib 团队或活动

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

  • 在 Matplotlib 网站、演讲和 T 恤上注明其自身资金来源。

修改治理文档#

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