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-05-23, 2024-06-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 的最佳策略是什麼?
動機
儘管在核心開發者衝刺會議(sprints)和語言高峰會(Language Summits)中進行了多次討論與面對面會議,並對 C API 的問題與利害關係人進行了詳盡盤點,但在許多具爭議性的議題上仍未達成共識,這些議題包括但不限於:
- 設計新 API 函式的規範;
- 如何處理相容性問題;
- 處理錯誤的最佳策略;
- 穩定 ABI(Stable ABI)與有限 API(Limited API)的未來;
- 是否要轉換為基於控制代碼(handle-based)的 API 慣例(以及該如何實作)。
普遍的感受是,由於利害關係人、提案、需求、限制與慣例太多,若沒有一個小型且受信任的決策小組,將難以取得進展。
在鹽湖城舉行的 2023 年語言高峰會上,決定開始編製一份問題清單。在布爾諾舉行的 2023 年核心開發者衝刺會議上,這項工作已大致完成;經過討論後,顯然下一步是成立一個工作小組,以確保我們不會陷入永遠無法突破的僵局。
指導委員會已表示希望將 C API 相關決策委託給此類工作小組,並預期其正式成立。
規範
我們提議成立一個新的小組:C API 工作小組。該小組將負責監督與協調 Python C API 的開發與維護。其做法是確立支撐這項工作的原則,並發布可供核心開發者參考的指南。
下方的「運作與流程」章節說明了工作小組的運作與治理方式。
成員
工作小組成員如下:
- Erlend Aasland
- Petr Viktorin
- Serhiy Storchaka
- Steve Dower
- Victor Stinner
授權範圍
工作小組的任務是確保 Python C API 適用於所有使用者與貢獻者,且不會不適當地偏袒任何群體。工作小組將識別典範利害關係人、其需求與偏好,並擬定公平且永續的滿足需求計畫。該小組將監督計畫的執行。
運作與流程
工作小組至少由三名成員組成,成員皆為傑出的 Python 核心開發者。成員應審慎考量各利害關係人的需求。
由指導委員會任命初始工作小組成員。工作小組成員無任期限制。成員可隨時基於任何理由辭職。預期成員名單將隨時間更迭。
若需替換成員,將從核心開發者社群收集提名。允許自我提名。隨後由既有工作小組從被提名人中決定替換人選。預期此過程將透過指令(fiat)完成,但工作小組也可選擇任何其認為合適的方式(包括投票)來選出替換成員。
工作小組仍須對指導委員會負責。指導委員會可隨時基於任何理由(公開或私下)對工作小組的組成做出特定變更或要求非特定變更。
我們承認這並非一個特別民主的架構,且對工作小組寄予厚望。然而,Python 社群在非完全民主的架構下已有悠久的成功歷史!我們相信自我治理、成員輪替以及對指導委員會負責,將足以確保 C API 工作小組能滿足社群需求。
工作小組主要可透過審查 GitHub Issue 與 PR 來運作。通常不需要定期會議,但工作小組可視需要自行決定是否召開視訊會議、使用私人聊天室或任何其他溝通機制。
工作小組應追求透明化,將所有決策公開發布至 discuss.python.org,並儘可能提供理由。在做出決定前,工作小組應給予所有感興趣的社群成員(作為不同類型利害關係人的代表)發表意見的機會。從開始討論到工作小組做出決定,應至少間隔一週。
與指導委員會的關係
與現行機制相同,Python 指導委員會仍負責 Python C API 的整體方向,並持續負責對相關 PEP 做出最終決定,採取標準的 PEP 審查流程(社群討論等)。C API 工作小組則針對相關 PEP 向指導委員會提供書面意見與建議。
不過,工作小組可直接做出較小的 C API 變更。指導委員會也可選擇將部分 PEP 的決策權委託給工作小組(與其他任何 PEP 委託方式相同)。
修訂
本 PEP 作為工作小組的章程。若要變更運作方式,可透過新的 PEP 或修改本 PEP 來達成。無論何種方式,變更皆須由指導委員會在社群討論後決定。
聯絡方式
社群成員若需請求 C API 工作小組做出決策,可於 capi-workgroup/decisions 儲存庫開啟一個 issue。
版權
本文件已進入公有領域或遵循 CC0-1.0-Universal 授權,以較寬鬆者為準。
原始碼:https://github.com/python/peps/blob/main/peps/pep-0731.rst