Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 731 – C API 작업 그룹 헌장

Author:
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>
Discussions-To:
Discourse thread
Status:
Active
Type:
Process
Topic:
Governance
Created:
11-Oct-2023
Post-History:
13-Oct-2023, 23-May-2024, 19-Jun-2024
Resolution:
Discourse message

Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain or CC0-1.0, whichever is more permissive 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

초록

이 PEP는 C API 작업 그룹의 설립을 제안합니다. C API 작업 그룹은 Python C API의 개발과 유지 보수를 감독하고 조율하는 책임을 맡는 Python 코어 개발자들의 소규모 위원회입니다.

작업 그룹은 Python C API와 관련된 문서, 테스트 스위트, 도구를 유지 관리합니다. 운영 위원회(Steering Council)의 위임에 따라, 작업 그룹은 개별 API 함수, 타입 등의 추가나 제거부터 다소 급진적인 성격의 새로운 설계 채택에 이르기까지 C API 변경을 결정하는 기구입니다.

이 워킹 그룹의 임무는 모든 Python 사용자의 이익을 대변하는 것이며, 특히 CPython 환경이든, 다른 Python 구현을 사용하는 경우든, 다른 프로그래밍 언어(C++나 Rust 등)를 위한 바인딩 프레임워크를 사용하는 경우든 Python의 C API를 사용하는 코드의 모든 유지 관리자의 이익을 대변하는 것입니다.

작업 그룹은 Python 운영 위원회의 뜻에 따라 존속합니다. 이 문서는 작업 그룹의 헌장 역할을 합니다.

제사(題詞)

KEEPER
Stop! 죽음의 다리를 건너려는 자는 저편을 보기 전에 나의 세 가지 질문에 답해야 합니다.
  1. Python의 이름은 무엇에서 따왔습니까?
  2. Python 2의 지원 종료(EOL)는 언제였습니까?
  3. CPython C API를 발전시키기 위한 최적의 전략은 무엇입니까?
LANCELOT
Auuuuuuuugh!

동기

코어 개발자 스프린트와 언어 서밋(Language Summit)에서 수많은 논의와 대면 회의가 있었고 C API의 문제점과 이해관계자를 철저히 정리했음에도 불구하고, 다음을 포함하되 이에 국한되지 않는 여러 논쟁적인 사안에 대해 합의에 이르지 못했습니다.

  • 새로운 API 함수를 설계하기 위한 규칙;
  • 호환성을 다루는 방법;
  • 오류 처리를 위한 최선의 전략;
  • 안정 ABI(Stable ABI)와 제한된 API(Limited 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 이슈와 PR 리뷰를 통해 운영될 수 있습니다. 정기 회의는 필요하지 않을 가능성이 높지만, 작업 그룹은 화상 통화, 비공개 채팅 또는 내부적으로 결정한 다른 어떤 방식이든 마련할 수 있습니다.

작업 그룹은 투명성을 지향해야 하며, 모든 결정을 가능하면 근거와 함께 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 저장소에 이슈를 열 수 있습니다.