3,135명 회원, 84개 프로젝트, 월 1억 5천만+ PyPI 다운로드, 1,312회 릴리스. 무엇이 효과가 있었고, 무엇이 그렇지 않았는지, 숫자 뒤에서 실제로 무슨 일이 있었는지.
TL;DR
지난 수년간 총 3,135명의 회원, 84개 프로젝트, 월 1억 5천만+ PyPI 다운로드, 1,312회 릴리스. 무엇이 효과가 있었고, 무엇이 그렇지 않았는지, 그리고 숫자 뒤에서 실제로 무슨 일이 있었는지 계속 읽어보세요.
Jazzband는 일몰합니다. 다음으로 넘어가기 전에, 협동 코딩 10년이 실제로 어떤 모습이었는지 돌아봅니다.
5년이 되었을 때 우리는 약 1,350명의 회원과 55개의 프로젝트가 있었습니다. 지금은 다음과 같습니다:
위의 숫자는 이야기의 일부만 보여줍니다. 더 흥미로운 지점은 다음입니다.
활성 프로젝트 20개는 그 파이프라인으로 단 한 번도 릴리스를 내지 않았습니다. Watson(2,515 스타)과 django-admin2(1,187)처럼 Jazzband에 있는 동안 아예 릴리스를 하지 않은 프로젝트도 있었습니다. 또 django-rest-knox, django-fsm-log, django-recurrence처럼 자체적으로 PyPI에 직접 배포해 파이프라인을 완전히 우회한 경우도 있었습니다. 이런 프로젝트에서 Jazzband는 릴리스 도구가 아니라, 공유 접근 권한과 유지보수를 위한 협업의 집이었습니다.
django-avatar의 저장소는 2008년에 만들어졌고 2026년 1월에 가장 최근의 Jazzband 릴리스를 배포했습니다. 17년 된 저장소가 여전히 릴리스를 내고 있었던 것입니다. django-axes(2009), sorl-thumbnail(2010), django-constance(2010), 그리고 2015년 이전에 만들어진 20개가 넘는 다른 프로젝트들도 2025년이나 2026년에 릴리스를 내고 있었습니다. Jazzband는 원저자가 떠난 뒤에도 오래된 프로젝트를 살아 있게 했습니다. 그게 바로 전부였죠.
django-axes는 가장 활발한 릴리스 주기를 보였습니다: 129개 버전에 걸쳐 258개의 릴리스 파일이 있었고, 2019년에는 28개 버전으로 정점 – 대략 13일에 한 번 꼴이었습니다. pip-tools가 146개 릴리스 / 73개 버전으로 그다음이었습니다.
한편 활성 프로젝트 7개는 팀 멤버가 아예 없었습니다 – django-permission, django-mongonaut, 그리고 다른 5개. 누구도 적극적으로 작업하진 않았지만, 머물 곳이 있었고 설치 가능한 상태로 남아 있었습니다.
팀 멤버 69명으로 다른 모든 프로젝트를 압도했습니다(그다음으로 큰 djangorestframework-simplejwt는 24명). 사실상 Jazzband 내부의 하위 조직에 가까웠습니다. 그리고 2024년에도 django-tagging, django-summernote 두 프로젝트가 한 자릿수 스타와 0회 릴리스 상태로 합류했습니다. 끝에 이르기까지도 사람들은 이 모델에서 가치를 찾고 있었습니다.
django-newsletter가 이전될 때, 작성자 @dokterbob은 800명의 멤버에게 쓰기 권한을 주는 것이 “책임을 너무 희석시켜 오히려 참여를 줄일 수 있다”고 우려했습니다. 나는 오픈 모델을 옹호하는 긴 답변을 썼습니다.
더 이른 프로젝트인 Collectfast는, 한 멤버가 리뷰 없이 master에 직접 푸시하여 작성자가 보류하던 커밋을 병합해버린 뒤 실제로 Jazzband를 떠났습니다. 이 사건은 코드 리뷰 프로세스, 브랜치 보호, 그리고 “오픈 액세스”가 실제로 무엇을 의미해야 하는지에 대한 진지한 논의로 이어졌습니다. 개방성과 통제 사이의 긴장은 끝내 완전히 해소되지 않았습니다.
여러 해에 걸쳐 GitHub 조직에서 10개 계정을 차단해야 했습니다 – 처음에는 조직에만 들어오려는 암호화폐 스패머들, 그다음에는 실제 운영 판단이 필요했던 커뮤니티 갈등, 마지막으로는 오픈 모델을 지속 불가능하게 만든 AI 기반 스팸이었습니다. 이 규모의 조직에서 전혀 드문 일은 아니지만, 모든 것이 한 사람을 거쳤습니다.
이전된 모든 프로젝트에는 온보딩 체크리스트가 붙었습니다 – 웹훅이 자동으로 “Implement Jazzband guidelines” 이슈를 열고, 링크 수정, 배지 추가, CI 설정, PyPI에 jazzband 추가, 프로젝트 리드 결정 같은 TODO를 나열했습니다. 41개 프로젝트가 이를 받았고, 28개가 완료했습니다. 13개는 아직 열려 있습니다.
그 13개에서 반복되는 패턴은 시사하는 바가 큽니다: 기여자들은 할 수 있는 항목은 모두 처리한 다음, 관리자 권한이 필요한 일들 – 웹훅 설정, CI 체크 수정, 릴리스 파이프라인 설정 – 에서 막혀 나를 기다렸습니다. 때로는 몇 달씩.
django-user-sessions의 원 작성자는 관리자만 고칠 수 있는 깨진 CI 체크 때문에 두 달 동안 다섯 번이나 나를 멘션했습니다. Watson의 리드는 PR 병합을 막는 레거시 CI 도구를 제거해 달라고 두 번 요청했습니다. 체크리스트는 좋았습니다. 병목은 나였습니다.
가장 초기이자 가장 눈에 띄는 Jazzband 프로젝트 중 하나는 2016년에 이전된 django-debug-toolbar였습니다. Jazzband 아래에서 스타 8,000개를 넘게 모은 뒤, 2024년에 Django Commons로 이동했습니다.
django-simple-history, django-oauth-toolkit, PrettyTable, tablib도 비슷한 이유로 모두 떠났습니다 – Jazzband의 구조로는 제공할 수 없는 더 큰 자율성이 필요했기 때문입니다.
이 프로젝트들이 얼마나 널리 쓰이는지에 대한 맥락으로, PyPI의 수치를 몇 가지 소개합니다. Jazzband에 한때라도 속했던 모든 프로젝트를 합치면 월 1억 5천만 다운로드가 넘습니다. 현재 프로젝트만 해도 약 9천5백만입니다.
월간 다운로드 기준 상위 15개:
| Project | Downloads/month | Note |
|---|---|---|
| prettytable | 42.4M | left Jazzband |
| pip-tools | 23.3M | |
| contextlib2 | 10.7M | |
| django-redis | 9.6M | |
| django-debug-toolbar | 7.3M | left, now Django Commons |
| djangorestframework-simplejwt | 6.1M | |
| dj-database-url | 5.5M | |
| pathlib2 | 4.9M | |
| django-model-utils | 4.8M | |
| geojson | 4.6M | |
| tablib | 4.1M | |
| django-oauth-toolkit | 3.7M | left |
| django-simple-history | 3.1M | left, now Django Commons |
| django-silk | 2.7M | |
| django-formtools | 2.1M |
한 가지 놀라웠던 점: prettytable 하나만으로 월 4천2백만 다운로드를 차지하는데, 그것은 Django 패키지조차 아닙니다. contextlib2, pathlib2, geojson도 마찬가지입니다. Jazzband는 출발점이었던 Django 생태계를 넘어 더 넓은 영역이 되었습니다.
django-debug-toolbar는 Django Developers Survey에서 가장 많이 사용되는 서드파티 패키지 상위 3개 안에 들었고, 공식 Django 튜토리얼에도 소개됩니다. Jazzband에서 8년을 보낸 뒤 Django Commons로 옮겼습니다.
이전에 Jazzband 프로젝트를 접해본 적이 있다면, 아마 Django News 뉴스레터, Python Weekly, 또는 Opensource.com의 2020년 기사(‘Jazzband가 어떻게 작동했는가’)를 통해서였을 가능성이 큽니다.
| Project | Stars |
|---|---|
| pip-tools | 7,997 |
| django-silk | 4,939 |
| tablib | 4,752 |
| djangorestframework-simplejwt | 4,310 |
| django-taggit | 3,429 |
| django-redis | 3,059 |
| django-model-utils | 2,759 |
| Watson | 2,515 |
| django-push-notifications | 2,384 |
| django-widget-tweaks | 2,165 |
2026년 3월 14일 12:02:00 PM, Jannis Leidel 작성