PEP 755 – PyPI를 위한 암시적 네임스페이스 정책
- Author:
- Ofek Lev <ofekmeister at gmail.com>
- Sponsor:
- Barry Warsaw <barry at python.org>
- PEP-Delegate:
- Dustin Ingram <di at python.org>
- Discussions-To:
- Discourse thread
- Status:
- Draft
- Type:
- Process
- Topic:
- Packaging
- Created:
- 05-Sep-2024
- Post-History:
- 07-Sep-2024
번역·라이선스 안내
이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain or CC0-1.0, whichever is more permissive 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판
초록
동기
네임스페이스를 예약할 수 있게 되면 많은 프로젝트와 커뮤니티가 혜택을 얻을 수 있습니다. PyPI는 Python 커뮤니티에 봉사하기 위해 존재하므로, 모든 사람의 요구가 충족되도록 피드백을 수집하는 것이 매우 중요합니다.
운영 및 정책상의 세부 사항은 각 패키지 저장소가 결정할 문제이므로 별도의 전용 PEP가 필요합니다.
근거
PyPI는 인력이 부족했으며, 2024년 7월에야 첫 전담 전문가를 맞이했습니다. 자원 부족으로 인해 패키지 이름 청구, 조직 요청, 저장 용량 한도 증가, 심지어 계정 복구에 대한 사용자 지원도 부족했습니다.
네임스페이스를 예약할 때 유료 조직에 더 관대한 기본 정책은 다음과 같은 이점을 제공합니다:
- PyPI는 지원 전문가, 인프라 유지보수, 버그 수정 및 새 기능을 위한 상수처럼 꾸준한 자금원을 확보하게 될 것입니다.
- 각 신청은 여전히 개별적으로 검토해야 하지만, 유료 조직을 승인하는 과정에서 이미 어느 정도의 신뢰가 부여되므로 사람이 직접 제공해야 하는 피드백은 줄어듭니다.
용어
- 유료/기업 조직
- 기업 조직은 PyPI에서 특수 기능에 대한 비용을 지불하는 조직입니다. 이 PEP에서는 간결함을 위해, 그리고 비원어민의 이해를 돕기 위해 대부분의 경우 이들을 유료 조직이라고 부릅니다.
- 루트 그랜트
- PEP 752 용어에서 정의한 그랜트입니다.
- 자식 그랜트
- 루트 그랜트로부터 생성된 그랜트로, 연관된 네임스페이스가 PEP 752 용어에서 정의한 자식 네임스페이스인 그랜트입니다.
구현
그랜트 신청
제출
조직 계정(사용자 계정이 아닌 계정)만 그랜트 신청 양식에 접근할 수 있습니다.
유료 조직의 신청은 검토 큐에서 우선권을 받습니다. 이는 유료 조직에 의미 있는 혜택을 제공하는 동시에, 더 많은 검토자를 포함한 PyPI의 운영 비용을 위한 자금을 확보하기 위한 것입니다.
승인 기준
- 네임스페이스는
tool이나apps처럼 흔한 것이어서는 안 됩니다. - 네임스페이스는 세 글자보다 길어야 합니다.
- 네임스페이스는 예약 소유자를 적절하고 명확하게 식별할 수 있어야 합니다.
- 조직은 해당 네임스페이스를 실제로 사용하고 있어야 합니다.
- 네임스페이스를 예약하지 않으면 커뮤니티에 모호함, 혼란 또는 기타 피해가 생길 수 있다는 근거가 있어야 합니다.
유료 조직이 아닌 조직은 다음 중 하나에 해당해야 합니다:
- 많은 패키지를 보유한 대규모의 인기 오픈 소스 프로젝트
- 패키지를 활발히 게시하는 대학
- 패키지를 활발히 게시하는 정부 기관
- Our World in Data와 같이 패키지를 활발히 게시하는 NPO/NGO
일반적으로 심사자는 아직 사용하지 않는 네임스페이스에 대해 그랜트를 신청하는 유료 조직에 더 관대해야 합니다.
예를 들어, 스타트업이나 새로운 제품군을 가진 기존 기업에 네임스페이스를 부여하는 것은 합리적이지만, 사용자가 많지 않은 커뮤니티 프로젝트에 네임스페이스를 부여하는 것은 그만큼 합리적이지 않습니다.
거절
거절된 신청에는 승인 기준에 근거한 명확한 결정 사유가 전달됩니다. 네임스페이스가 너무 흔하다는 이유로 거절된 신청은 향후 심사자가 참고할 수 있도록 내부에 보관되며, 이전에 같은 이유로 거절된 네임스페이스를 예약하려는 새 신청에는 경고가 표시됩니다.
수락
조직 외부의 프로젝트가 사용하는 네임스페이스에 대한 신청이 승인되면, 해당 프로젝트의 소유자에게 새 그랜트를 알리는 이메일이 발송됩니다. 이메일에는 네임스페이스 페이지로 연결되는 링크가 포함됩니다.
그랜트 유형
그랜트에는 두 가지 유형이 있습니다.
루트 그랜트
조직은 승인된 신청마다 루트 그랜트를 하나씩 받습니다. 이 그랜트에서는 하위 그랜트를 개수 제한 없이 만들 수 있습니다.
하위 그랜트
하위 그랜트는 루트 그랜트의 소유자가 승인 없이 언제든지 만들 수 있습니다. 이러한 그랜트에 연결된 네임스페이스는 루트 그랜트 네임스페이스의 하위 네임스페이스여야 합니다.
하위 그랜트는 자신의 하위 그랜트를 가질 수 없습니다.
그랜트 소유권
그랜트의 소유자는 다른 조직이 해당 그랜트를 사용하도록 개수 제한 없이 허용할 수 있습니다. 이 그랜트는 해당 조직이 소유한 것처럼 동작합니다. 즉, 소유자라 하더라도 해당 네임스페이스에 패키지를 업로드할 수 없습니다. 소유자는 이 권한을 언제든지 철회할 수 있습니다.
소유자는 PyPI 관리자의 승인 없이 언제든지 다른 조직에 소유권을 이전할 수 있습니다. 조직이 유료 조직이라면, 이전 대상 역시 유료 조직이어야 합니다. 허용된 조직에 대한 설정도 함께 이전됩니다.
사용자 인터페이스
네임스페이스 페이지
활성 상태인 모든 부여의 네임스페이스에는 전용 페이지가 있습니다. 이 페이지에는 개방 여부, 현재 소유자, 소유권이 부여된 시각, 네임스페이스와 일치하는 프로젝트의 총수 같은 정보가 표시됩니다.
프로젝트 페이지
활성 네임스페이스 부여와 일치하는 모든 프로젝트의 페이지(예시)에는 접두사가 무엇인지 표시되며(NuGet은 현재 이렇게 하지 않습니다), 이 접두사는 필(pill)이나 레이블 형태로 눈에 띄게 표시됩니다. 이 값은 네임스페이스 상세 API의 prefix 키와 일치합니다.
네임스페이스를 클릭하면 해당 페이지로 이동합니다.
시각적 표시
활성 네임스페이스 부여와 일치하는 프로젝트의 경우, 사용자는 다음 중 어느 경우에 해당하는지 빠르게 확인할 수 있습니다:
- 부여 소유자에 연결된 프로젝트에는 시각적 표시가 없으며, 사용자는 항상 표시되는 접두사만으로 판단해야 합니다.
- 부여 소유자에 연결되지 않았고 일치하는 부여가 개방 상태인 프로젝트에는 불신이나 위험을 나타내지 않는 고유한 표시가 붙습니다. Font Awesome의 users 아이콘이나 Google Fonts의 groups 아이콘이 좋은 선택일 수 있습니다.
- 부여 소유자에 연결되지 않았고 일치하는 부여가 제한 상태인 프로젝트에는 고유한 시각적 표시가 붙습니다. 이 상황은 부여가 생성되기 전에 프로젝트가 이미 존재했을 때 발생합니다. 이 표시는 진본이 아니거나 신뢰할 수 없음을 나타냅니다. 경고 표시(⚠)가 좋은 선택일 수 있습니다.
개방형 네임스페이스
하위 부여가 생성되면, 그 개방 여부는 루트 부여에서 상속됩니다. 하위 부여의 소유자는 언제든지 하위 부여를 개방형으로 전환할 수 있습니다. 부여가 개방형이면, 부여의 소유자가 네임스페이스와 일치하는 모든 프로젝트의 소유자인 경우가 아닌 한 제한 상태로 전환할 수 없습니다.
부여 제거
부여가 다른 조직과 공유되어 있다면, 소유자 조직은 조직 삭제의 전제 조건으로 이전을 시작해야 합니다.
부여가 공유되어 있지 않다면, 소유자는 다음 중 어느 한 경우에 네임스페이스에 대한 권리를 해제할 수 있습니다:
- 조직이 직접 자신을 소유자에서 제거하는 경우.
- 조직이 삭제되는 경우.
예약된 네임스페이스의 권리가 해제되면 UI에 이 사실이 반영되어, 일치하는 프로젝트의 페이지에는 더 이상 어떤 표시도 나타나지 않으며 네임스페이스의 전용 페이지도 없어집니다.
교육 방법
조직을 대상으로 네임스페이스를 예약하는 방법, 그 이점, 가격 정책을 문서화할 것입니다.
같은 페이지에 PEP 541도 문서화하여, 조직이 자신의 부여와 일치하는 기존 패키지의 부적절한 사용을 신고하는 주요 수단을 알 수 있도록 할 것입니다.
기각된 아이디어
모든 활성 부여를 조회하는 페이지
출시 예정 제품 같은 비공개 정보가 유출될 수 있으므로, 활성화된 모든 네임스페이스 권한 부여를 볼 수 있는 페이지는 두지 않습니다.
소유 프로젝트의 시각적 표시
권한 부여 소유자에 연결된 프로젝트에는 표시를 두지 않습니다. 이는 주로 화면이 어수선해지지 않도록 하기 위해서이며, 특히 이것이 가장 흔한 경우이기 때문입니다.
표시를 두더라도 NuGet이 채택한 것과 같은 체크 표시나 이와 비슷한 형태는 아닐 것입니다. 이러한 표시는 해당 패키지를 사용하는 것 자체에 관련 보안 보장이 따른다는 잘못된 인상을 줄 수 있기 때문입니다. 또한 일부 소셜 미디어 플랫폼은 인증된 사용자에게 체크 표시를 사용하므로 혼동을 일으킬 수 있습니다.
참고 문헌
Copyright
This document is placed in the public domain or under the CC0-1.0-Universal license, whichever is more permissive.