Jazzband가 종료(윈드다운) 절차에 들어가며 신규 가입이 중단되었습니다. 프로젝트 리드는 PyCon US 2026 이전에 이전을 조율하기 위해 연락을 받게 됩니다.
TL;DR
Jazzband는 종료 절차에 들어갑니다. 신규 가입은 비활성화되었습니다. 프로젝트 리드는 프로젝트 이전을 조율하기 위해 PyCon US 2026 이전에 연락을 받게 됩니다. 윈드다운 계획에는 타임라인이, 회고에는 전체 이야기가 담겨 있습니다.
10년이 훌쩍 넘는 과거에 Jazzband는 오픈 소스 소프트웨어 프로젝트를 유지보수하는 스트레스를 줄이기 위한 협동조합적 실험으로 시작했습니다. 아이디어는 단순했습니다. 참여하는 모든 사람에게 코드 푸시, 이슈 트리아주, 풀 리퀘스트 머지 권한을 준다는 것이죠. “우리 모두는 이 일의 일부입니다.”
잘 굴러갔습니다. 사실 10년이 넘게요.
하지만 이제는 정리할 때가 됐습니다.
GitHub의 슬롭칼립스 — AI가 생성한 스팸 PR과 이슈의 홍수 — 는 개방형 멤버십과 공유 푸시 권한이라는 Jazzband의 모델을 더 이상 유지할 수 없게 만들었습니다.
Jazzband는 최악의 경우가 ‘누군가 실수로 잘못된 PR을 머지하는 것’인 세상을 전제로 설계되었습니다. 하지만 AI가 생성한 PR 중 프로젝트 기준을 충족하는 것은 10개 중 1개뿐인 세상에서, curl이 확인(confirmation) 비율이 5% 아래로 떨어져 버그 바운티를 중단해야 했던 세상에서, 그리고 GitHub의 대응이 풀 리퀘스트를 완전히 비활성화하는 킬 스위치였던 세상에서 — 가입하는 모두에게 푸시 권한을 주는 조직은 이제 안전하게 운영될 수 없습니다.
하지만 솔직히 말하면, 균열은 그보다 훨씬 이전부터 드러나고 있었습니다.
Jazzband는 늘 ‘로디 한 명’이 굴리는 운영이었습니다. 사람들은 여러 해 동안 더 많은 로디를 요청했고 도움을 자원하기도 했습니다. 저도 여러 번 어떻게든 굴려보려 했지만 — 결국 정착되지 않았습니다. 제가 제대로 구조화하고 조직화하는 일을 놓쳤고, 자원봉사자들이 실제로 나서 주어도 시간이 지나면 조용히 발을 빼곤 했습니다. 그분들을 비판하려는 게 아니라, 이를 지탱할 구조가 없을 때 자원봉사가 어떻게 흘러가는지에 대한 이야기입니다.
결국 결과는 같았습니다. 프로젝트 이전, 리드 지정, PyPI 권한 변경, 인프라 결정 — 전부 저를 거쳤습니다.
지속가능성 문제는 2017년부터 제기되었습니다. 저는 5년 차였던 DjangoCon Europe 2021에서 이 주제로 기조연설을 했습니다. 그 발표에서 저는 “사회적 코딩(social coding)” 실험이 공정한 커뮤니티를 만들어내지 못했고, 실질적인 재정 지원 없이는 지속가능한 해법이 존재하지 않는다고 공개적으로 말했습니다.
제가 제시했던 로드맵 — 인프라 개편, 운영팀 확장, 가이드라인 공식화, 자금 지원 확보를 위한 아웃리치 — 는 어느 것도 실현되지 않았습니다. 실제로 이루어진 것은 PSF 재정 후원(fiscal sponsorship) 하나뿐이었습니다.
그 이후 저는 PSF 이사회에서 활동했고(그곳도 자체적인 위기를 겪었습니다), 지금은 PSF 의장을 맡고 있습니다. 그 일은 중요하며 우선순위를 두었던 것을 후회하지는 않지만, 그만큼 Jazzband에 쓸 시간이 더 줄었습니다.
한편 GitHub는 정반대 방향으로 움직였습니다. Copilot은 2022년에 출시되었고, 유지보수자들이 무료로 유지보수하느라 번아웃을 겪던 오픈 소스 코드로 학습했습니다. 유지보수자의 60%는 여전히 무급입니다.
2024년의 XZ Utils 백도어는 홀로 유지보수하던 사람이 번아웃되었을 때, 그 공백을 악의적인 누군가가 메우면 어떤 일이 벌어지는지 보여주었습니다. 그리고 Jazzband의 인프라도, 도움을 주려던 프로젝트들에게 오히려 방해가 되기 시작했습니다. 릴리스 파이프라인은 신뢰할 수 있는 퍼블리싱(trusted publishing)을 지원하지 못했고, 관리자 권한이 필요했던 프로젝트들은 발이 묶였습니다.
그래서 프로젝트들이 떠나기 시작했습니다. 그리고 그건 괜찮습니다 — 원래도 그게 계약의 일부였습니다.
Jazzband가 부족했던 부분을 메워 준 Django Commons와 Tim Schilling에게 특히 감사드리고 싶습니다. 그들은 관리자 5명, 활성 프로젝트 15개(여기에는 Jazzband에서 옮겨간 django-debug-toolbar, django-simple-history, django-cookie-consent 포함)를 보유하고 있으며, django-polymorphic도 지금 이 순간 옮겨가는 중입니다. 그들은 첫날부터 거버넌스 문제를 해결했습니다. Django 프로젝트를 위한 새 보금자리를 찾는 Jazzband 프로젝트 리드라면, 먼저 그곳을 살펴보세요.
pip-tools, contextlib2, geojson, tablib 같은 비(非) Django 프로젝트에 대해서는 — 그에 상응하는 곳을 저는 알지 못합니다. 더 넓은 Python 툴링 생태계를 위한 그런 조직을 누군가 만든다면, 꼭 보고 싶습니다.
10년 동안 Jazzband는 남극을 제외한 모든 대륙에서 3,135명의 멤버로 성장했고, GitHub 스타 약 93,000개를 받은 84개 프로젝트를 유지보수했으며, PyPI에 1,312번의 릴리스를 배포했습니다.
Jazzband를 거쳐 간 프로젝트들은 한 달에 1억 5천만 회 이상 다운로드됩니다 — pip-tools는 2,300만, prettytable은 4,200만입니다. django-debug-toolbar는 8년 동안 Jazzband 아래에 있었고, 결국 공식 Django 튜토리얼에 포함되었습니다. 2008년의 리포지토리인 django-avatar는 2026년에도 여전히 릴리스가 나가고 있었습니다. 그리고 django-axes는 129개 버전을 배포했는데 — 최전성기였던 해에는 13일마다 한 번씩 릴리스가 나갔습니다.
10년 전체 회고에는 모든 수치와 이야기, 그리고 실제로 무슨 일이 있었는지가 담겨 있습니다.
저는 하룻밤 사이에 플러그를 뽑지 않습니다. 타임라인을 포함한 상세한 윈드다운 계획이 있지만, 요약하면 다음과 같습니다.
Timeline
프로젝트 리드라면, 곧 이메일을 받게 될 것입니다.
이 모든 것은 함께해 준 사람들 — 인터넷의 낯선 이들이 ‘무언가를 함께 유지보수하자’고 결정해 준 덕분에 가능했습니다. 제가 만들어낸 병목에도 불구하고 운영을 이어가 준 81명의 프로젝트 리드와, 그동안 참여하고 기여하고 이슈를 올리고 릴리스를 배포해 준 모든 분들께 감사드립니다.
저는 오픈 소스를 혼자 유지보수하는 일이 너무 지쳐서 Jazzband를 시작했습니다. 그러고 나서 71개 프로젝트의 단일 장애점(single point of failure)이 되어버렸다는 아이러니를 저도 잘 알고 있습니다. 하지만 이 실험은 중요한 면에서 성공했습니다 — 프로젝트는 유지보수되었고, 릴리스는 배포되었고, 사람들은 협업했습니다.
어쨌든 프로젝트들은 새 보금자리로 옮겨갈 것이고, 그걸로 괜찮습니다. 원래도 그게 핵심이었습니다.
우리 모두는 이 일의 일부입니다.
작성: Jannis Leidel — 2026년 3월 14일 12:00:00 PM