项目治理

本文件的官方版本,以及在下面治理部分定义的角色中的人员和机构列表,包含在 pandas 网站的 项目治理 页面中。

项目

pandas 项目(项目)是一个开源软件项目,隶属于 501(c)3 NumFOCUS 基金会。项目的目的是为 Python 编程语言开发用于数据导入、数据准备、数据分析和数据可视化的开源软件。项目开发的软件在 BSD(或类似)开源许可下发布,在 pandas GitHub 组织 下的公共 GitHub 存储库中公开开发和托管。项目软件的示例包括主要的 pandas 代码库和 pandas-stubs 库。

通过与 NumFOCUS 的关联,项目有权在美国接受免税捐赠。

项目由一个分布式开发人员团队开发,称为贡献者。贡献者是指为一个或多个项目存储库贡献代码、文档、设计或其他工作的人员。任何人都可以成为贡献者。贡献者可以隶属于任何法律实体或不隶属于任何法律实体。贡献者通过提交、审查和讨论 GitHub 拉取请求和问题,以及参与 GitHub、邮件列表和其他地方的公开和公开项目讨论来参与项目。项目参与的基础是开放和透明。

以下是当前对主要 pandas 存储库的贡献者列表

https://github.com/pandas-dev/pandas/graphs/contributors

pandas 项目的其他存储库的日志中还列出了许多其他贡献者。

项目社区由所有贡献者和项目用户组成。贡献者代表项目社区工作并对其负责,我们努力将贡献者和用户之间的界限降到最低。

该项目正式隶属于 501(c)3 NumFOCUS 基金会 (https://numfocus.org),该基金会担任其财务赞助商,可能持有项目商标和其他知识产权,帮助管理项目捐赠并充当母体法律实体。NumFOCUS 是唯一与该项目有正式关系的法律实体(见下文“机构合作伙伴”部分)。

治理

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

项目治理的基础是

传统上,项目领导由 BDFL(Wes McKinney)和一组称为核心团队的贡献者提供,他们的积极和持续贡献得到了认可,他们获得了对项目 GitHub 存储库的“提交权限”。一般来说,所有项目决策都是通过核心团队之间达成共识,并征求社区意见做出的。BDFL 可以,但很少选择,推翻核心团队并对某事做出最终决定。

虽然这种方法对我们来说已经很有效,但随着项目的发展,面临更多法律和财务决策,并与其他机构互动,我们看到了对更正式的治理模式的需求。展望未来,项目领导将由 BDFL 和核心团队组成。我们认为这种治理模式是对我们正在做的事情的正式化,而不是方向的改变。

BDFL

该项目将有一个 BDFL(终身仁慈独裁者),目前是 Wes McKinney。作为独裁者,BDFL 有权对该项目做出所有最终决定。作为仁慈者,BDFL 在实践中选择将该权力委托给社区讨论渠道和核心团队的共识。预计,并且过去一直如此,BDFL 很少会行使他的/她的最终权力。由于它很少使用,我们称 BDFL 的最终权力为“特殊”或“优先”投票。当它发生时,BDFL 优先权通常发生在核心团队陷入僵局的情况下,或者核心团队要求 BDFL 对特定事项做出决定。为了确保 BDFL 的仁慈,该项目鼓励其他人如果不同意 BDFL 采取的总体方向,则分叉项目。BDFL 是核心团队的主席(见下文),他/她可以根据自己的判断,将对特定决定或一组决定的权力委托给任何其他核心团队成员。

BDFL 可以任命其继任者,但预计核心团队会对此决定进行协商。如果 BDFL 无法任命继任者(例如,由于死亡或疾病),核心团队将通过投票选出继任者,至少需要 2/3 的核心团队成员投票赞成所选继任者。至少 80% 的核心团队成员必须参与投票。如果没有任何 BDFL 候选人获得核心团队 2/3 的投票,核心团队成员应将 BDFL 候选人提议给 NumFOCUS 主板,由主板做出最终决定。

核心团队

项目的核心团队将由项目贡献者组成,这些贡献者在质量和数量上都做出了重大贡献,并且持续至少一年。核心团队的总体作用是通过与 BDFL 合作并从社区获取意见,确保项目的长期福祉,包括技术和社区方面。

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

核心团队及其成员在某些情况下发挥着特殊作用。特别是,核心团队可以

核心团队成员资格

要成为核心团队成员,个人必须是项目贡献者,并且在至少一年的时间内贡献了质量和数量都相当大的贡献。潜在的核心团队成员由现有核心成员提名,并在征求潜在成员的意愿和意愿后,由现有核心团队投票决定。核心团队将最初由截至 2015 年底获得提交权限的现有贡献者组成。

在考虑潜在成员时,核心团队将全面了解候选人的贡献。这将包括但不限于代码、代码审查、基础设施工作、邮件列表和聊天参与、社区帮助/建设、教育和外展、设计工作等。我们故意不设定任意数量指标(例如“此仓库中的 100 次提交”)以避免鼓励为指标而不是项目的整体福祉而努力的行为。我们希望在团队中鼓励多元化的背景、观点和才能,这就是我们明确不将代码定义为评估核心团队成员资格的唯一指标的原因。

如果核心团队成员在项目中处于非活动状态一年,他们将被考虑从核心团队中移除。在移除之前,非活动成员将由 BDFL 联系,以了解他们是否计划恢复积极参与。如果没有,他们将在核心团队投票后立即被移除。如果他们计划很快恢复积极参与,他们将获得一年的宽限期。如果他们在该期限内没有恢复积极参与,他们将由核心团队投票移除,不再有宽限期。所有前核心团队成员都可以随时再次被考虑成为成员,就像任何其他项目贡献者一样。退休的核心团队成员将在项目网站上列出,以确认他们在核心团队中活跃的时期。

核心团队保留权利,如果认为当前成员(除 BDFL 外)对项目的福祉有害,并且沟通和冲突解决的尝试失败,则可以将其驱逐。

利益冲突

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

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

核心团队的私人通信

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

分委员会

核心团队可以创建分委员会,为项目的特定方面提供领导和指导。与整个核心团队一样,分委员会应以公开和公开的方式开展业务,除非明确要求保密。私人分委员会通信应在核心团队的主要私人邮件列表中进行,除非有特殊要求。

问题:如果 BDFL 不在分委员会中,他们是否仍然拥有否决权?

建议:他们有否决权,但他们应该任命一名代表,该代表在大多数情况下扮演这个角色,只有当委员会不同意该代表的决定并且团队内部无法达成解决方案时,才会寻求明确的 BDFL 干预。这与 BDFL 为特定决定(或回避情况)任命的代表不同,在这种情况下,BDFL 实际上将自己的权力完全交给其他人。这更像是 Linus Torvalds 使用的“副手”模型。

NumFOCUS 分委员会

核心团队将维护一个专注于管理其与 NumFOCUS 互动的一个分委员会。

机构合作伙伴和资金

BDFL 和核心团队是项目的领导核心。除了作为贡献者和核心团队成员参与项目外,任何外部机构、个人或法律实体都没有能力拥有、控制、篡夺或影响项目。然而,由于机构是项目的主要资金来源,因此正式承认机构对项目的参与非常重要。这些机构被称为机构合作伙伴。

机构贡献者是指任何作为机构合作伙伴官方职责的一部分为项目做出贡献的个人项目贡献者。同样,机构核心团队成员是指任何作为机构合作伙伴官方职责的一部分为项目做出贡献的核心团队成员。

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

机构通过雇用积极为项目做出贡献的个人(作为其官方职责的一部分)来获得成为机构合作伙伴的资格。换句话说,机构合作伙伴影响项目的方式是积极参与项目的开放式开发,与社区中的其他贡献者和核心团队成员享有平等的权利。仅仅在机构环境中使用 pandas 软件或服务并不允许实体成为机构合作伙伴。财务捐赠也不允许实体成为机构合作伙伴。一旦机构有资格成为机构合作伙伴,核心团队必须提名并批准该合作伙伴关系。

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

机构合作伙伴可以通过任何合法途径为其在项目上的工作寻求资金。这可能包括非营利组织从私人基金会和捐赠者那里筹集资金,或者营利性公司构建利用项目软件和服务的专有产品和服务。机构合作伙伴为项目工作而获得的资金称为机构资金。但是,机构合作伙伴获得的任何资金都不能凌驾于项目BDFL和核心团队之上。如果合作伙伴有资金做熊猫工作,而核心团队决定不将该工作作为项目进行,则合作伙伴可以自行进行。但是,在这种情况下,合作伙伴工作的那部分将不在熊猫的范围内,并且不能使用项目商标以暗示正式关系。

为了认可机构的贡献,机构合作伙伴分为两个级别,并享有相应的福利。

**一级** = 至少有一名机构核心团队成员的机构

**二级** = 至少有一名机构贡献者的机构

违反

不遵守治理文件条款的行为应通过公开或私人渠道向核心团队报告,具体方式视情况而定。

更改治理

治理变更通过 GitHub 拉取请求提交到项目的 治理页面。拉取请求随后会根据公众评论和审查进行完善,目标是在社区达成共识。在公开期结束后,核心团队成员会向核心团队提议批准变更并合并拉取请求(接受提议的变更),或者提议关闭拉取请求而不合并(拒绝提议的变更)。成员应在提议接受或拒绝的拉取请求中说明最终提交的哈希值,并简要概述拉取请求。至少 80% 的核心团队成员必须投票,并且至少 2/3 的投票必须是正面的才能执行提议的行动(投票分数向上取整到最接近的整数)。由于 BDFL 在项目中拥有最终权限,因此 BDFL 有权单独行动,接受或拒绝变更,或推翻核心团队的决定。