PEP 8016 – 指导委员会模式
- 作者:
- Nathaniel J. Smith, Donald Stufft
- 状态:
- 已接受
- 类型:
- 信息性
- 主题:
- 治理
- 创建日期:
- 2018年11月1日
注意
此PEP保留以供历史参考,但官方治理文档现为PEP 13。
摘要
此PEP提出了一种基于指导委员会的Python治理模式。委员会拥有广泛的权力,他们力求尽可能少地行使这些权力;相反,他们利用这些权力建立标准流程,例如其他801x系列PEP中提出的那些。这遵循了将大更改拆分为一系列可以独立审查的小更改的总体理念:我们不是试图在一个PEP中完成所有事情,而是专注于为进一步的治理决策提供一个最小但坚实的基础。
PEP 接受
基本原理
本提案的主要目标是:
- 无趣:我们不是治理专家,我们不认为Python是尝试新颖且未经考验的治理模式的好地方。因此,本提案尽可能坚持成熟、知名、经过测试的流程。一个大多不干预的委员会的高层次方法可以说是大型成功自由/开源项目中最常见的,而低层次细节则直接源自Django的治理。
- 简单:我们试图将事情简化到使其可行的最低限度:委员会、核心团队(选举委员会)以及更改文档的流程。目标是最小可行治理。
- 全面:但对于我们需要定义的事项,我们努力确保涵盖所有基础,因为我们不想再次经历这种危机。拥有一套清晰明确的规则也有助于最大程度地减少混乱和不满。
- 灵活且轻量级:我们知道,找到最佳协作流程需要时间和实验。通过将此文档保持在最低限度,我们最大限度地保留了以后调整事情的灵活性,同时最大限度地减少了对整个项目投票等繁重且令人焦虑的流程的需求。
此Discourse帖子中讨论了许多细节,然后此帖子有进一步讨论。这些可能对任何试图理解各种次要决策理由的人都有用。
规范
指导委员会
组成
指导委员会是一个5人委员会。
授权
指导委员会应致力于:
- 维护Python语言和CPython解释器的质量和稳定性,
- 使贡献尽可能易于访问、包容和可持续,
- 正式确定并维护核心团队与PSF之间的关系,
- 为PEP建立适当的决策流程,
- 在正式行动之前,寻求贡献者和核心团队之间的共识,
- 在所有其他方法都失败时,充当决策的“最终上诉法院”。
权力
委员会拥有广泛的权力,可以对项目做出决策。例如,他们可以:
- 接受或拒绝PEP
- 执行或更新项目的行为准则
- 与PSF合作管理任何项目资产
- 将其部分权力委托给其他小组委员会或流程
但是,他们不能修改此PEP,也不能影响核心团队的成员资格,除非通过本PEP中指定的机制。
委员会应寻找尽可能少使用这些权力的方法。与其投票,不如寻求共识。与其对个别PEP做出裁决,不如定义一个标准的PEP决策流程(例如,通过接受其他801x系列PEP中的一个)。与其对个别案例做出裁决,不如建立一个行为准则委员会。依此类推。
要行使其权力,委员会投票。每位委员会成员都必须投票或明确弃权。在特定投票中存在利益冲突的成员必须弃权。通过需要获得多数非弃权委员会成员的支持。
在可能的情况下,委员会的审议和投票应公开举行。
选举委员会
委员会选举分为两个阶段
- 第一阶段:候选人宣传他们任职的意愿。候选人必须由核心团队成员提名。允许自荐。
- 第二阶段:每个核心团队成员可以投票给零到五名候选人。投票匿名进行。候选人按其收到的总票数排名。如果出现平局,可以通过候选人之间的相互协议解决,否则将随机选择获胜者。
每个阶段持续一到两周,由即将卸任的委员会酌情决定。首次选举中,两个阶段都将持续两周。
选举过程由即将卸任的指导委员会提名的一名计票官管理。首次选举中,计票官将由PSF执行董事提名。
委员会应理想地反映Python贡献者和用户的多样性,鼓励核心团队成员相应地投票。
任期
在每个功能发布后,都会选出一个新的委员会。每个委员会的任期从其选举结果确定之日起,到下一届委员会任期开始为止。没有任期限制。
空缺
委员会成员可随时辞职。
在委员会任期内出现空缺时,委员会可以通过投票任命一名替补成员来完成剩余任期。
如果委员会成员失去联系并一个月或更长时间无法联系上,则委员会其余成员可以投票替换他们。
利益冲突
虽然我们相信委员会成员会为了Python的最佳利益而非自身或其雇主行事,但任何一家公司主导Python开发的表面现象本身都可能有害并损害信任。为了避免任何利益冲突的表面现象,委员会中最多只能有2名成员为同一雇主工作。
在委员会选举中,如果排名前五的得票者中有三人为同一雇主工作,则其中排名最低者将被取消资格,排名第六的候选人升至第五位;此过程重复进行,直到形成有效的委员会。
在委员会任期内,如果情况变化导致此规则被打破(例如,由于委员会成员更换工作),则一名或多名委员会成员必须辞职以解决问题,然后可以正常填补由此产生的空缺。
罢免核心团队成员
在特殊情况下,可能需要违背某人的意愿将其从核心团队中移除。(例如:严重且持续的行为准则违规。)这可以通过指导委员会投票实现,但与其他指导委员会投票不同,这需要至少三分之二的多数票。对于5名成员投票,这意味着3:2的投票是不够的;4:1赞成是此类投票成功所需的最低限度。此外,这是指导委员会唯一不能委托的权力,并且在不信任投票进行期间不能使用此权力。
如果被罢免的核心团队成员也是指导委员会成员,那么他们也将被从指导委员会中罢免。
不信任投票
在特殊情况下,核心团队可以通过不信任投票罢免现任委员会成员,或整个委员会。
当一名核心团队成员在适当的项目沟通渠道上公开呼吁,并得到另一名核心团队成员附议时,不信任投票就会启动。
投票持续两周。核心团队成员投赞成或反对票。如果至少三分之二的投票者表示不信任,则投票成功。
不信任投票有两种形式:针对单个成员的投票和针对整个委员会的投票。发起不信任投票的最初呼吁必须指明所意图的类型。如果针对单个成员的投票成功,则该成员将被从委员会中移除,由此产生的空缺可以按常规方式处理。如果针对整个委员会的投票成功,则委员会解散,并立即触发新的委员会选举。
核心团队
角色
核心团队是管理Python的值得信赖的志愿者群体。他们承担着实现项目目标所需的许多角色,尤其是那些需要高度信任的角色。他们做出决定,塑造项目的未来。
核心团队成员应作为社区的榜样和项目的守护者,代表社区和所有依赖Python的人。
在极少数情况下,如果出现需要干预的情况,他们将在必要时介入在线讨论或官方Python活动。
他们对Python项目基础设施拥有权限,包括Python项目网站本身、Python GitHub组织和存储库、错误跟踪器、邮件列表、IRC频道等。
特权
核心团队成员可以参与正式投票,通常是提名新团队成员和选举指导委员会。
成员资格
Python核心团队成员表现出:
- 对Python项目理念有很好的理解
- 良好且持续的建设性和乐于助人记录
- 以任何形式对项目目标做出的重大贡献
- 愿意投入时间改进Python
随着项目成熟,贡献超越了代码。以下是不完全的领域列表,按任意顺序,可以在其中考虑加入核心团队的贡献:
- 社区管理和外联工作
- 在邮件列表和IRC上提供支持
- 分类处理工单
- 编写补丁(代码、文档或测试)
- 审查补丁(代码、文档或测试)
- 参与设计决策
- 提供特定领域(安全、国际化等)的专业知识
- 管理持续集成基础设施
- 管理服务器(网站、跟踪器、文档等)
- 维护相关项目(替代解释器、包装等核心基础设施)
- 创建视觉设计
核心团队成员资格认可与Python项目理念和目标高度契合的持续而有价值的努力。
它通过在核心团队投票中获得至少三分之二的赞成票且没有指导委员会的否决而获得。
核心团队成员一直在寻找有潜力的贡献者,教导他们如何管理项目,并在他们准备好时将其姓名提交给核心团队投票。
核心团队成员资格没有时间限制。然而,为了向公众提供关于有多少人维护Python的合理概念,停止贡献的核心团队成员被鼓励声明自己为“非活跃”。两年内没有任何非平凡贡献的人可能会被要求将自己移至此类别,如果他们不回应,则被移至此类别。为了记录和表彰他们的贡献,非活跃团队成员将继续与活跃核心团队成员一起列出;并且,如果他们以后恢复贡献,他们可以随时切换回活跃状态。但是,当某人处于非活跃状态时,他们将失去投票或提名指导委员会等活跃特权以及提交访问权限。
最初的活跃核心团队成员将包括目前列在GitHub上的“Python核心”团队中的所有人,最初的非活跃成员将包括过去所有曾是提交者的人。
更改此文档
对本文件的更改需要核心团队投票中至少三分之二的投票多数。
待办事项
- 许多人提供了有益的建议和反馈;我们应该检查他们是否愿意被添加为共同作者。
- Aymeric Augustin似乎编写了整个Django文档,所以大概拥有版权;也许我们应该问他是否愿意将其发布到公共领域,这样我们的版权声明就可以更简单。
致谢
大量文本无耻地复制自Django项目的治理文档。
版权
从Django复制的文本根据其许可证使用。本文档的其余部分已置于公共领域。
来源:https://github.com/python/peps/blob/main/peps/pep-8016.rst