PEP 731 – C API 工作组章程
- 作者:
- Guido van Rossum <guido at python.org>,Petr Viktorin <encukou at gmail.com>,Victor Stinner <vstinner at python.org>,Steve Dower <steve.dower at python.org>,Irit Katriel <irit at python.org>
- 讨论至:
- Discourse 帖子
- 状态:
- 活跃
- 类型:
- 流程
- 主题:
- 治理
- 创建日期:
- 2023年10月11日
- 发布历史:
- 2023年10月13日,2024年5月23日,2024年6月19日
- 决议:
- Discourse 消息
摘要
本PEP提议成立C API工作组:一个由少数Python核心开发者组成的委员会,负责监督和协调Python C API的开发和维护。
该工作组将维护与Python C API相关的文档、测试套件和工具。经指导委员会授权,它是C API变更的决策机构,从添加或删除单个API函数、类型等,到接受或多或少激进的新设计。
工作组的职责是代表所有Python用户的利益,尤其是所有使用Python C API的代码维护者的利益,无论是在CPython环境中,使用替代Python实现,还是使用其他编程语言(如C++和Rust)的绑定框架。
工作组在Python指导委员会的许可下运作。本文档作为工作组的章程。
题词
- Python以什么命名?
- Python 2的EOL是什么时候?
- 演进CPython C API的最佳策略是什么?
动机
尽管在核心开发者冲刺和语言峰会期间进行了多次讨论和面对面会议,并对C API的问题和利益相关者进行了彻底盘点,但对于许多有争议的问题仍未达成共识,其中包括但不限于:
- 设计新API函数的约定;
- 如何处理兼容性;
- 处理错误的最佳策略是什么;
- 稳定ABI和有限API的未来;
- 是否切换到基于句柄的API约定(以及如何切换)。
普遍的感觉是,利益相关者、提案、要求、约束和约定太多,如果没有一个值得信赖的小型决策小组,就无法取得进展。
在盐湖城举行的2023年语言峰会上,决定开始着手问题清单的工作。在布尔诺举行的2023年核心开发者冲刺中,这项工作或多或少已经完成,经过讨论,似乎下一步是成立一个工作组,以确保我们不会永远受阻。
指导委员会已表示希望将C API的决策权委托给这样的工作组,以期其正式成立。
规范
我们提议创建一个新小组,即C API工作组。该小组将负责监督和协调Python C API的开发和维护。它将通过建立支撑工作的原则并发布核心开发者可以参考的指南来做到这一点。
下面的“运作和流程”部分描述了工作组如何运作以及如何进行治理。
成员
工作组成员包括
- Erlend Aasland
- Petr Viktorin
- Serhiy Storchaka
- Steve Dower
- Victor Stinner
授权
工作组的职责是确保Python C API适用于所有API用户和贡献者,而不会不公平地偏袒任何一方。工作组将确定模范利益相关者、他们的需求和偏好,并制定一个公平和可持续地满足这些需求的计划。它将监督计划的执行。
运作和流程
工作组至少有三名成员,由杰出的Python核心开发者组成。成员应仔细考虑各种利益相关者的需求。
指导委员会任命初始工作组。工作组成员没有任期限制。工作组成员可以随时以任何理由辞职。预计成员构成会随着时间而变化。
为了确定替代成员,将从核心开发者社区收集提名。允许自荐。现有工作组将从被提名者中决定替代成员。预计这将通过命令完成,但工作组可以根据他们认为合适的方式选择替代成员,包括投票。
工作组继续向指导委员会负责。指导委员会可以随时出于任何原因(公开或私下)对工作组的构成进行特定更改或要求非特定更改。
我们承认这并不是一个特别民主的结构,并且对工作组寄予了厚望。然而,Python社区在非完全民主的结构方面有着悠久的成功历史!我们相信,自治、成员轮换以及对指导委员会的问责制将足以确保C API工作组满足社区的需求。
工作组可以主要通过审查GitHub问题和PRs来运作。定期会议可能不是必需的,但工作组可以设置视频通话、私人聊天或他们内部决定的任何其他机制。
工作组应力求透明,将所有决定公开发布在discuss.python.org上,如果可能,附上理由。在做出决定之前,工作组应给所有感兴趣的社区成员(作为不同类别利益相关者的例子)一个发表意见的机会。从讨论开始到工作组做出决定之间应至少间隔一周。
与指导委员会的关系
就像今天一样,Python指导委员会仍然负责Python C API的总体方向,并继续使用标准PEP审查流程(社区讨论等)决定与C API相关的PEP。C API工作组就与C API相关的PEP向指导委员会提供书面意见和建议。
然而,工作组可以直接进行较小的C API更改。指导委员会也可以选择将某些PEP的决策权委托给工作组(就像任何其他PEP委托一样)。
修订
本PEP作为工作组的章程。其运作方式的更改可以通过新的PEP或修改本PEP来完成。在这两种情况下,更改将在社区讨论后由指导委员会决定。
联系
要向C API工作组请求决定,社区成员可以在capi-workgroup/decisions存储库中提出问题。
版权
本文档置于公共领域或 CC0-1.0-Universal 许可证下,以更宽松者为准。
来源:https://github.com/python/peps/blob/main/peps/pep-0731.rst