Youngkwang YangEnglish
목차

OSS 26.07

OSS

pypa/pip의 열린 이슈 수 추이 그래프. 2017년 12월부터 2026년 9월까지를 보여 준다. 최근 몇 년은 940에서 980 사이를 오가다가, 2026년 여름에 860 근처까지 가파르게 내려간다. 출처: sichard.ca/ghstats/pip

메인테이너가 공유해준 현재 pip 레포의 오픈된 이슈 개수 추이다. (6월부터 줄고 있다.)

열려 있는 이슈 대부분이 1년 이상 지난 오래된 이슈다. 내 생각엔 pip는 관리자 리소스가 제한적이고, 과거에 열려 있던 이슈를 다시 확인하는 것보다 최근 이슈나 사용자가 직접 겪는 문제가 우선순위가 높을 수밖에 없다. 그러다 보니 이미 해결된 과거 이슈도 오랫동안 열려 있었던 것 같다.

최근에 pip에 기여하기 시작했다. 시작한 동기는 간단한데, 비교적 역사가 오래되고 구조가 복잡한 프로젝트에 기여해 보고 싶었다. pip에는 과거 레거시를 위한 하위 호환 구조 등이 많고, 버그를 이미 기능처럼 쓰고 있는 사용자를 위해 섣불리 수정하지 못하는 코드도 많다. (단순한 텍스트 출력도 누군가는 파싱해서 사용 중일 수 있다.)1

AI 에이전트로 하루에 많은 코드를 작성하는 요즘에, 1~2줄 고치는 데 수많은 논의가 오가는 과정이 느릴 순 있지만 오히려 개발자로서 흥미가 생겼던 것 같다.

한 일 (7월 12일 - 8월 13일)

코드

  • pip
    • zipapp으로 실행했을 때 self version 체크가 실행 중인 pip이 아니라 환경에 설치된 pip의 버전을 읽던 버그 수정. #13084, #14217
    • entry_points.txt에 형식이 어긋난 항목이 있을 때 traceback이 나오던 것 수정. #8573, #14220
    • pip index versions의 (latest) 표시가 한 번도 출력되지 않던 문제. 다만 출력 형식에 의존하는 것들이 깨질 수 있어서 출력은 수정하지 않고 데드코드만 지우는 방향으로 처리했다. #14177, #14178
    • macOS 설정 문서가 실제로 동작하는 XDG_DATA_DIRS, XDG_DATA_HOME 대신 XDG_CONFIG_*를 안내하던 것 수정. #14200, #14207
    • Requires-Python 때문에 건너뛴 사유가 디버그 로깅 없이도 남는지 확인하는 회귀 테스트 추가. #14170
    • 지난달 작업했던 Git partial clone opt-out 환경 변수가 머지됐다. #14163

트리아지

리뷰

  • pip
    • pip <subcommand> --version이 오류 없이 그냥 실행되던 버그. (코드 의도상 pip --version만 가능하다.) #14231
    • pip list --outdated가 --uploaded-prior-to를 무시하던 이슈 재현. #14189, #14190
    • exceptions.py를 각각의 모듈로 분리하는 리팩터링 PR. (좋은 개선 같다.) #14176
    • pip config edit의 shell=True를 걷어내는 PR이었는데, 수정하려는 기존 동작이 의도된 동작으로 보여서 관련 히스토리를 찾아보고 리뷰했다. #14180
  • django-auditlog
    • LogEntry 모델을 swappable로 만드는 PR 확인 후 approve. #805
    • Action.ACCESS가 생긴 뒤 갱신되지 않았던 docstring 수정 approve. #817

다음 목표

pip

  • 디스크가 찼을 때 불완전한 파일이 남는 pip download와 pip install --target 명령어 개선 예정. 같은 패턴이 pip 코드에 더 있어서 재사용 가능한 방식으로 작업 예정. #9964
  • 버전 충돌로 후보에서 제외된 패키지에 “no matching distributions” 힌트가 붙던 버그. 현재 코드 리뷰 대기 중. #14193, #14194
  • 불완전하게 삭제된 패키지에 ~...dist-info 경고를 표시하는 PR. 현재 수정 중. #14047
  • 하위 모듈이 네임스페이스 패키지로 갈라진 뒤 기존 버전 위에 설치하면 import가 깨지는 이슈. 메인테이너가 제안한 이슈인데, 꽤 히스토리가 복잡한 이슈라서 추후에 시간을 내서 볼 예정. #12211

django-auditlog

  • 변경을 감지하는 로직에서 원본 값과 직렬화된 값을 나눠 비교하도록 수정 진행 중. #835
  • PR이 CHANGELOG를 고쳤는지 CI에서 확인하는 워크플로. (자주 놓치는 것 같아서..) #836, #837

Footnotes

  1. xkcd 1172: Workflow ↩