项目治理
本文档的官方版本,以及下方治理部分定义的角色中的个人和机构列表,载于 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(终身仁慈独裁者),现任 BDFL 是 Wes McKinney。作为独裁者,BDFL 有权对项目做出所有最终决定。作为仁慈的独裁者,BDFL 在实践中选择将该权力委托给社区讨论渠道和核心团队的共识。预期如此,且过去一直是这样,即 BDFL 只会极少行使其最终权力。因为它极少使用,我们将 BDFL 的最终权力称为“特殊”或“否决”票。当发生时,BDFL 否决通常发生在核心团队出现僵局或核心团队请求 BDFL 对特定事项做出决定时。为了确保 BDFL 的仁慈,如果他们不同意 BDFL 的总体方向,项目鼓励其他人分叉项目。BDFL 是核心团队的主席(见下文),并可根据其自行决定,将特定决策或一组决策的权力委托给任何其他核心团队成员。
BDFL 可以指定其继任者,但预期会就此决定咨询核心团队。如果 BDFL 无法指定继任者(例如因死亡或疾病),核心团队将通过投票选出继任者,至少 2/3 的核心团队成员必须投票赞成选定的继任者。至少 80% 的核心团队成员必须参与投票。如果没有 BDFL 候选人获得 2/3 的票数,核心团队成员应向 NumFOCUS 主理事会提名 BDFL 候选人,后者将做出最终决定。
核心团队
项目的核心团队将由项目贡献者组成,他们贡献的质量和数量都非常可观,并持续了至少一年。核心团队的总体作用是,通过与 BDFL 合作并吸取社区意见,确保项目的长期健康发展,包括技术层面和社区层面。
在日常项目活动中,核心团队成员作为与其他所有贡献者和社区成员平等的伙伴,参与所有讨论、代码评审及其他项目活动。在这些日常活动中,核心团队成员不会因其核心团队成员身份而拥有任何特殊权力或特权。然而,由于他们贡献的质量和数量以及对项目软件的专业知识,预期核心团队将对可能经验较少的贡献者提供有益的指导,无论是技术层面还是项目方向上。
核心团队及其成员在某些情况下扮演特殊角色。特别是,核心团队可以:
- 对项目的总体范围、愿景和方向做出决策。
- 对与其他组织或个人的战略合作做出决策。
- 对特定技术问题、功能、错误和拉取请求做出决策。他们是指导代码评审过程和合并拉取请求的主要机制。
- 对项目运行的服务做出决策,并为项目和社区的利益管理这些服务。
- 当常规社区讨论未能在合理时间内就某个问题达成共识时做出决策。
核心团队成员资格
要获得成为核心团队成员的资格,个人必须是项目贡献者,他们贡献的质量和数量都非常可观,并持续了至少一年。潜在的核心团队成员由现有核心团队成员提名,并在询问潜在成员是否有兴趣并愿意担任此职务后,由现有核心团队投票决定。核心团队最初将由截至 2015 年底已获得提交权限的现有贡献者组成。
在考虑潜在成员时,核心团队将全面考察候选人的贡献。这包括但不限于代码、代码评审、基础设施工作、邮件列表和聊天参与、社区帮助/建设、教育和推广、设计工作等。我们故意不设置任意的定量指标(如“此仓库中的 100 次提交”),以避免鼓励以指标为导向的行为,而非项目的整体健康发展。我们希望在团队中鼓励多样化的背景、观点和人才,这就是我们明确不将代码定义为评估核心团队成员资格的唯一衡量标准的原因。
如果核心团队成员在项目活动中持续一年不活跃,他们将被考虑从核心团队中移除。在移除之前,不活跃成员将由 BDFL 接触,了解他们是否计划恢复积极参与。如果不是,将在核心团队投票后立即移除。如果他们计划很快恢复积极参与,将给予一年的宽限期。如果他们在此期间未恢复积极参与,将由核心团队投票移除,不再给予进一步宽限期。所有前核心团队成员未来任何时候都可以再次考虑加入,像任何其他项目贡献者一样。已退休的核心团队成员将在项目网站上列出,以表彰他们活跃于核心团队的时期。
如果现有成员(BDFL 除外)被认为对项目的健康发展有积极的损害作用,且沟通和冲突解决尝试均已失败,核心团队保留驱逐这些成员的权利。
利益冲突
预期 BDFL 和核心团队成员将在各种公司、大学和非营利组织任职。因此,成员可能存在利益冲突。此类利益冲突包括但不限于:
- 项目之外可能影响其项目工作的财务利益,如投资、雇佣或合同工作。
- 接触雇主的专有信息,这些信息可能潜在地泄露到他们在项目中的工作中。
所有核心团队成员,包括 BDFL,应向核心团队其他成员披露其可能存在的任何利益冲突。在特定问题上存在利益冲突的成员可以参与核心团队讨论,但必须回避对该问题进行投票。如果 BDFL 在特定决策上回避,他们将为该决策指定一名代理 BDFL。
核心团队的私人通讯
除非有特定要求,所有核心团队讨论和活动都将是公开的,并与项目贡献者和社区协作并讨论进行。核心团队将有一个私人邮件列表,谨慎使用,且仅在特定事项需要隐私时使用。当需要进行私人通讯和决策时,核心团队将尽最大努力向社区总结这些内容,同时省略不应发布到公共互联网上的个人/私人/敏感信息。
小组委员会
核心团队可以创建小组委员会,为项目的特定方面提供领导和指导。像核心团队整体一样,小组委员会应以开放和公开的方式开展工作,除非有特定隐私需求。小组委员会的私人通讯应在核心团队的主要私人邮件列表上进行,除非有特定要求。
问题:如果 BDFL 不在某个小组委员会中,他们是否仍拥有否决权?
建议:他们有,但应该指定一个代理人来承担这个角色大部分时间,只有当委员会不同意该代理人的决定且团队内部无法达成一致时,才寻求 BDFL 的明确介入。这与为特定决策(或回避情况)指定的 BDFL 代理不同,在那种情况下,BDFL 是将他/她的权力完全让给其他人。这更像 Linus Torvalds 使用的“副手”模式。
NumFOCUS 小组委员会
核心团队将维持一个专注领域狭窄的小组委员会,以管理其与 NumFOCUS 的互动。
- NumFOCUS 小组委员会由至少 5 人组成,负责管理通过 NumFOCUS 获得的项目资金。预期这些资金的使用方式将符合 NumFOCUS 的非营利使命以及由整个核心团队确定的项目方向。
- 本小组委员会不得就项目的方向、范围或技术方向做出决策。
- 本小组委员会将有至少 5 名成员。不得多于 2 名小组委员会成员通过雇佣或合同工作直接或间接向同一个人汇报(包括被汇报者,即被汇报者 + 1 是上限)。这避免了实际多数依赖于一人。
机构合作伙伴与资金
BDFL 和核心团队是项目的主要领导层。除通过作为贡献者和核心团队成员参与项目外,任何外部机构、个人或法律实体均无权拥有、控制、篡夺或影响项目。然而,由于机构是项目的主要资金来源机制,正式认可机构参与项目非常重要。这些机构被称为机构合作伙伴。
机构贡献者是指任何个人项目贡献者,他们作为其在机构合作伙伴处的正式职责一部分为项目做出贡献。同样,机构核心团队成员是指任何核心团队成员,他们作为其在机构合作伙伴处的正式职责一部分为项目做出贡献。
根据这些定义,机构合作伙伴是指在美国或其他地方的任何经认可的法律实体,该实体至少雇佣一名机构贡献者或机构核心团队成员。机构合作伙伴可以是营利性或非营利性实体。
机构通过雇佣积极贡献于项目作为其正式职责一部分的个人,获得成为机构合作伙伴的资格。换句话说,机构合作伙伴影响项目的唯一方式是积极参与项目的开放开发,与社区中任何其他贡献者和核心团队成员享有同等地位。仅仅在机构环境中使用 pandas 软件或服务,不允许实体成为机构合作伙伴。财政捐赠不能使实体成为机构合作伙伴。一旦机构符合机构合作伙伴资格,核心团队必须提名并批准该合作关系。
如果现有机构合作伙伴不再有贡献员工,将给予一年宽限期,以便其他员工开始贡献。
机构合作伙伴可以自由地通过任何合法手段为其在项目上的工作寻求资金。这可能涉及非营利组织从私人基金会和捐赠者处筹集资金,或营利性公司构建利用项目软件和服务的专有产品和服务。机构合作伙伴为项目工作获得的资金称为机构资金。然而,机构合作伙伴获得的任何资金都不能凌驾于项目 BDFL 和核心团队之上。如果合作伙伴有资金做 pandas 相关工作,而核心团队决定不将该工作作为项目进行,合作伙伴可以自由地自行开展。然而在这种情况下,合作伙伴的那部分工作将不属于 pandas 范畴,也不能以暗示正式关系的方式使用项目商标。
为认可机构贡献,机构合作伙伴分为两个级别,并享有相关权益:
第 1 级 = 拥有至少一名机构核心团队成员的机构
- 在 pandas 网站、演讲和 T恤上致谢。
- 能够在 pandas 网站、演讲和 T恤上致谢自己的资金来源。
- 能够通过其核心团队成员的参与来影响项目。
第 2 级 = 拥有至少一名机构贡献者的机构
违规
不遵守治理文件条款的行为应向核心团队报告,可通过公共或私人渠道,视情况而定。
变更治理文件
治理文件的变更通过 GitHub 拉取请求提交至项目的治理页面。拉取请求随后根据公众评论和评审进行完善,目标是在社区达成共识。在此开放期后,一名核心团队成员向核心团队提议批准变更并合并拉取请求(接受提议的变更),或提议关闭拉取请求而不合并(拒绝提议的变更)。该成员应说明提议接受或拒绝的拉取请求的最终提交哈希值,并简要总结拉取请求。至少 80% 的核心团队成员必须参与投票,且至少 2/3 的票数必须是肯定的,才能执行提议的行动(票数分数向上取整到最接近的整数)。由于 BDFL 拥有项目的最终权力,BDFL 有权单独行动,接受或拒绝变更,或否决核心团队的决定。