PEP 609 – Python 打包机构 (PyPA) 治理
- 作者:
- Dustin Ingram <di at python.org>, Pradyun Gedam <pradyunsg at gmail.com>, Sumana Harihareswara <sh at changeset.nyc>
- 发起人:
- Paul Ganssle <paul at ganssle.io>
- 讨论至:
- Discourse 帖子
- 状态:
- 活跃
- 类型:
- 流程
- 主题:
- 治理, 打包
- 创建日期:
- 2019年11月5日
- 发布历史:
- 2019年11月5日
目录
摘要
本文档描述了 Python 打包机构 (PyPA) 的治理模式。该模式严格基于现有的非正式实践,旨在阐明 PyPA 的运作方式并正式化 PyPA 的透明流程。
基本原理
Python 打包机构 (PyPA) 是一个协作社区,维护和推进 Python 打包中的许多相关项目。通过 PyPA 开发的软件和标准用于打包、共享和安装 Python 软件,并与可下载 Python 软件的索引(例如 PyPI,Python 包索引)进行交互。
目前,PyPA 是一个非正式且定义松散的组织,缺乏真正的权威,将特定项目纳入 PyPA 麾下或创建新项目一直是以特设、一次性的方式进行的。同样,PyPA 的个人成员身份也没有明确定义。
虽然这种模式在过去或多或少地适用于 PyPA,但它导致了一个组织缺乏稳定生态系统的某些特征,即清晰透明的决策过程。本 PEP 旨在通过定义 PyPA 的治理模式来纠正这一点。
术语
本 PEP 中使用的与个人贡献者群体相关的术语
- PyPA 成员:
- 在 PyPA 组织中至少有一个项目的分类位或提交位的人。
- PyPA 提交者:
- 在 PyPA 组织中至少有一个项目的提交位的人,这应该对应于 PyPA-Committers 邮件列表上的所有人。
- PyPA 社区:
- 任何对 PyPA 活动感兴趣并希望关注、贡献或提出建议的人。
- 打包工作组 (Packaging-WG) 成员:
- 如 Packaging-WG Wiki 页面中所述。为澄清:Packaging-WG 和 PyPA 之间没有正式关系。此组仅包含在此列表中,以便与 PyPA 区分开来。
目标
以下部分正式阐述了 PyPA 和此治理模式的目标(和非目标)。
PyPA 的目标
这些目标是 PyPA 存在的主要动机。这些目标在很大程度上已经实现,尽管大多数尚未明确定义。
为 PyPA 下的现有项目提供支持
如果给定项目需要额外支持,或者不再有活跃维护者,PyPA 将确保该项目将继续为用户提供必要的支持。
促进 PyPA 项目标准的制定和接受
PyPA 应尽可能通过下述治理流程努力实现 PyPA 项目之间的标准化和协调。PyPA 项目应遵守 PyPA 维护的适用规范。
指导影响多个 PyPA 项目的决策
PyPA 社区(尤其是 PyPA 成员)应在提出生态系统范围的变更时提供意见、见解和经验。
确定哪些项目应在 PyPA 的指导下
例如:接受社区中的新项目,在 PyPA 内部有机地创建项目等。
强制所有项目遵守行为准则
通常这意味着以身作则,但偶尔也可能意味着更明确的节制。
PyPA 的非目标
这些是明确_不_是 PyPA 目标的具体事项。
确定谁是 PyPA 成员,谁不是 PyPA 成员
这由各个项目的成员在向其项目添加新成员时决定。PyPA 组织下项目的维护者自动获得 PyPA 成员资格。
微观管理单个项目
只要项目遵守行为准则并遵循 PyPA 支持的规范,PyPA 就只应关注大型、生态系统范围的变更。
制定和维护独立的行为准则
PyPA 项目遵循 PSF 行为准则。
PyPA 治理模式的目标
这些是治理模式力求实现的新目标。
PyPA 成员透明化
为关于 PyPA 项目成员资格的决策提供透明的流程。
记录 PyPA 对 PEP 的使用
正式记录 PyPA 如何使用 Python 增强提案 (PEP) 来维护 PyPA 定义的互操作性规范。
流程
PyPA 活动的流程概述如下
规范
PyPA 将使用 PEP 来定义和修改 PyPA 维护的互操作性规范。因此,Python 指导委员会对这些互操作性规范的接受拥有最终决定权。
预计(但不要求)Python 指导委员会将授权 PyPA 社区内的个人赞助和/或批准/拒绝与打包互操作性规范相关的 PEP。截至撰写本文时(2020 年 6 月),Python 指导委员会对当前活跃的打包互操作性规范拥有常设授权。
提出和更新互操作性规范的详细流程在 PyPA 规范文档中描述。
治理
PyPA 提交者投票
PyPA 成员可以在 PyPA 公共交流渠道上提出提案并要求投票。当 PyPA 提交者(非提案人)支持提案时,将触发 PyPA 提交者投票。
该提案将在 PyPA-Committers 邮件列表上进行为期 7 天的投票。每个 PyPA 提交者可以投票一次,并可以选择 +1 和 -1 中的一个。如果至少三分之二的记录投票是 +1,则投票成功。
PyPA 提交者投票是以下类型提案所必需的,并且仅限于这些类型:
将项目添加到 PyPA
提议接受项目加入 PyPA 组织。该提案不得遭到项目现有维护者的反对。
在 PyPA 中创建新项目
提议在 PyPA 组织中创建新的工具/项目。
将项目从 PyPA 中移除
提议将项目从 PyPA 组织中移除。
治理/规范流程的更新
提议改变 PyPA 的运作方式,包括但不限于改变其规范和治理流程以及本 PEP。
离开 PyPA
作为 PyPA 组织一部分的项目可以请求离开 PyPA。
此类请求可由项目提交者在 PyPA-Committers 邮件列表上提出,并且必须清楚地说明要将存储库转移到的 GitHub 用户/组织。
如果该请求在 7 天内没有被同一项目的其他提交者反对,该项目将离开 PyPA 并根据请求从 PyPA 组织中转移出去。
行为准则的执行
PyPA 组织中的每个项目都遵循 PSF 行为准则,包括其事件报告指南和执行程序。
PyPA 成员有责任以身作则。PyPA 成员有时可能需要更明确地调节其项目中的行为,PyPA 组织中的每个项目都必须指定至少一名 PyPA 成员作为行为准则事件的联系人。如果得知涉及其项目的任何行为准则事件,PyPA 成员应将这些事件上报给 PSF 行为工作组,以便记录和可能获得协助。
版权
本文档置于公共领域或 CC0-1.0-Universal 许可证下,以更宽松者为准。
来源:https://github.com/python/peps/blob/main/peps/pep-0609.rst