PEP 13 – Python 语言治理
- 作者:
- Python 核心团队和社区
- 状态:
- 活跃
- 类型:
- 流程
- 主题:
- 治理
- 创建:
- 2018年12月16日
摘要
本 PEP 定义了 Python 的正式治理流程,并记录了其随时间推移的变化。目前,治理基于指导委员会。委员会拥有广泛的权力,但他们尽量少行使这些权力。
当前指导委员会
2024 年任期的指导委员会成员包括
- Barry Warsaw
- Emily Morehouse
- Gregory P. Smith
- Pablo Galindo Salgado
- Thomas Wouters
根据 PEP 8105 中跟踪的投票结果。
核心团队由在私有的 https://github.com/python/voters/ 存储库中列出的成员组成,该存储库通过 https://devguide.pythonlang.cn/developers/ 公开共享。
规范
指导委员会
构成
指导委员会是一个由 5 人组成的委员会。
任务
指导委员会应致力于
- 维护 Python 语言和 CPython 解释器的质量和稳定性,
- 使贡献尽可能地易于访问、包容和可持续,
- 正式化并维护核心团队与 PSF 之间的关系,
- 为 PEP 建立适当的决策流程,
- 在正式采取行动之前,寻求贡献者和核心团队之间的共识,
- 作为其他所有方法都失败的情况下决策的“最终仲裁机构”。
权力
委员会拥有广泛的权力来对项目做出决策。例如,他们可以
- 接受或拒绝 PEP
- 执行或更新项目的行为准则
- 与 PSF 合作管理任何项目资产
- 将其部分权力委托给其他小组委员会或流程
但是,他们不能修改本 PEP,也不能影响核心团队的成员资格,除非通过本 PEP 中规定的机制。
委员会应寻找尽量少使用这些权力的方法。与其投票,不如寻求共识。与其裁决单个 PEP,不如定义 PEP 决策的标准流程(例如,通过接受其他 801x 系列 PEP 中的一个)。与其裁决个别案例,不如建立行为准则委员会。以此类推。
要行使权力,委员会进行投票。每个委员会成员必须投票或明确弃权。对特定投票存在利益冲突的成员必须弃权。通过需要严格过半数的非弃权委员会成员。
在任何可能的情况下,委员会的审议和投票都应公开进行。
选举委员会
委员会选举包括两个阶段
- 阶段 1:候选人宣传其参选意愿。候选人必须由核心团队成员提名。允许自我提名。
- 阶段 2:每个核心团队成员可以投票给零个或多个候选人。投票匿名进行。候选人按他们获得的总票数排名。如果出现平局,可以通过候选人之间的相互协商解决,否则将随机选择获胜者。
每个阶段持续一到两周,由卸任委员会自行决定。对于初次选举,两个阶段都将持续两周。
选举过程由卸任指导委员会提名的计票员管理。对于初次选举,计票员将由 PSF 执行董事提名。
委员会应理想地反映 Python 贡献者和用户的多样性,鼓励核心团队成员相应地投票。
任期
在每次功能版本发布后选举一个新的委员会。每个委员会的任期从其选举结果最终确定之日开始,到下一个委员会任期开始之日结束。没有任期限制。
空缺
委员会成员可以随时辞职。
在正常委员会任期内出现空缺时,委员会可以投票任命一名替补,以完成剩余任期。
如果委员会成员失去联系,一个月或更长时间无法联系,则其余委员会成员可以投票替换他们。
利益冲突
虽然我们相信委员会成员会以 Python 的最大利益而非自身或其雇主的利益行事,但任何一家公司主导 Python 开发的仅仅是表面现象本身也可能是有害的,并会损害信任。为了避免任何利益冲突的表面现象,委员会成员中最多只能有 2 人为同一家雇主工作。
在委员会选举中,如果前 5 名得票者中有 3 人为同一家雇主工作,则其中排名最低的人将被取消资格,排名第 6 的候选人升至第 5 位;重复此操作,直到形成一个有效的委员会。
在委员会任期内,如果由于情况变化导致此规则被违反(例如,由于委员会成员更换雇主),则必须有一名或多名委员会成员辞职以解决此问题,然后可以照常填补由此产生的空缺。
开除核心团队成员
在特殊情况下,可能需要违背其意愿将某人从核心团队中移除。(例如:严重且持续的行为准则违规。)这可以通过指导委员会投票来实现,但与其他指导委员会投票不同,这需要至少三分之二的多数票。在 5 名成员投票的情况下,这意味着 3:2 的投票是不够的;至少需要 4:1 的赞成票才能使此类投票成功。此外,这是指导委员会唯一一项不可委托的权力,并且在不信任投票进行期间不得使用此权力。
如果被开除的核心团队成员也是指导委员会的成员,则他们也将被从指导委员会中移除。
不信任投票
在特殊情况下,核心团队可以通过不信任投票罢免现任委员会成员或整个委员会。
当核心团队成员在适当的项目沟通渠道上公开呼吁进行不信任投票,并且另一名核心团队成员附议该提案时,将触发不信任投票。
投票持续两周。核心团队成员投票赞成或反对。如果至少三分之二的投票者表示不信任,则投票成功。
不信任投票有两种形式:针对单个成员的投票和针对整个委员会的投票。最初呼吁进行不信任投票必须指定目标类型。如果针对单个成员的投票成功,则该成员将被从委员会中移除,产生的空缺将按常规方式处理。如果针对整个委员会的投票成功,则委员会将解散,并立即触发新的委员会选举。
核心团队
角色
核心团队是一组值得信赖的志愿者,他们管理着 Python。他们承担实现项目目标所需的许多角色,尤其是那些需要高度信任的角色。他们做出塑造项目未来的决定。
核心团队成员应代表社区以及所有依赖 Python 的人,充当社区的楷模和项目的守护者。
在极少数情况下出现需要干预的情况时,他们将在必要时干预在线讨论或官方 Python 活动。
他们拥有 Python 项目基础设施的权限,包括 Python 项目网站本身、Python GitHub 组织和存储库、错误跟踪器、邮件列表、IRC 频道等。
特权
核心团队成员可以参与正式投票,通常是提名新团队成员和选举指导委员会。
成员资格
Python 核心团队成员展示
- 对 Python 项目理念的良好理解
- 具有建设性和乐于助人的良好往绩
- 以任何形式对项目目标做出的重大贡献
- 愿意投入一些时间来改进 Python
随着项目的成熟,贡献超出了代码的范畴。以下是不完整列表,列出了可能被考虑加入核心团队的贡献领域,没有特定的顺序
- 参与社区管理和外联
- 在邮件列表和 IRC 上提供支持
- 对工单进行分类
- 编写补丁(代码、文档或测试)
- 审查补丁(代码、文档或测试)
- 参与设计决策
- 提供特定领域的专业知识(安全性、i18n 等)
- 管理持续集成基础设施
- 管理服务器(网站、跟踪器、文档等)
- 维护相关项目(替代解释器、核心基础设施如打包等)
- 创建视觉设计
核心团队成员资格认可与 Python 项目的理念和目标高度一致的持续且有价值的努力。
它通过在为期一周的开放给核心团队成员的投票中获得至少三分之二的肯定票,并且没有被指导委员会否决而授予。
核心团队成员始终在寻找有前途的贡献者,教他们如何管理项目,并在他们准备好时将他们的姓名提交给核心团队的投票。
核心团队成员资格没有时间限制。但是,为了向公众提供关于有多少人在维护 Python 的合理认识,鼓励停止贡献的核心团队成员宣布自己为“非活跃”状态。那些两年内没有做出任何非微不足道的贡献的人可能会被要求将自己转移到此类别,如果他们没有回应,则会将其转移到此类别。为了记录和表彰他们的贡献,非活跃团队成员将继续与活跃的核心团队成员一起列出;并且,如果他们后来恢复贡献,他们可以随意切换回活跃状态。但是,当某人处于非活跃状态时,他们将失去投票或提名指导委员会以及提交访问权限等活跃权限。
最初的活跃核心团队成员将包括目前在 “Python 核心”GitHub 团队 中列出的所有人(仅限核心成员访问),最初的非活跃成员将包括过去曾是提交者的其他所有人。
修改本文档
对本文档的更改需要在为期两周的开放给核心团队成员的投票中获得至少三分之二的多数票。
历史
本文档的创建
Python 项目由 Guido van Rossum 发起,他从项目开始到 2018 年 7 月一直担任其终身仁慈独裁者 (BDFL),当时他 辞职。
经过讨论,提出了若干关于新的治理模型的提案,核心开发者对这些提案进行了投票以选择其中之一。整个过程在PEP 8000和PEP 8001中进行了描述,对其他项目的审查在PEP 8002中进行了执行,提案本身则以 PEP 的 801x 系列的形式撰写。最终,PEP 8016中的提案被选中作为新的治理模型,并被用于创建本 PEP 的初始版本。8000 系列 PEP 保留以供历史参考(特别是,PEP 8016包含其他理由以及与当时讨论的链接),但本 PEP 现在是官方参考,并将根据本文档中描述的规则进行演变。
委员会选举历史
修订历史
2019-04-17:添加了核心开发者的投票时长以及对本文档的更改。
致谢
本 PEP 最初是PEP 8016,由 Nathaniel J. Smith 和 Donald Stufft 编写,基于 Aymeric Augustin 编写的 Django 治理文档,并融合了众多其他人的反馈和协助。
版权
本文件已置于公有领域。
来源:https://github.com/python/peps/blob/main/peps/pep-0013.rst