All Contributors로 오픈소스 기여자를 멋지게 인정해주기
오픈소스 프로젝트를 운영하다 보면 코드 기여자에게만 공을 돌리기 쉽습니다. 하지만 문서 작성, 번역, 버그 리포트, 디자인, 아이디어 제안 등 다양한 방식으로 프로젝트에 기여하는 분들도 많죠. 이런 다양한 기여자들을 빠짐없이 인정해주고 싶은데, 어떻게 해야 할까요? 🤔
이번 포스팅에서는 All Contributors라는 도구를 소개해드리려고 합니다. All Contributors는 코드 기여뿐만 아니라 모든 형태의 기여를 인정하자는 철학을 담은 명세(specification)이자, 이를 자동화해주는 봇과 CLI 도구입니다.
All Contributors란?
All Contributors는 오픈소스 프로젝트에서 “모든 기여는 가치 있다”는 철학을 실천할 수 있도록 도와주는 도구입니다. 기존에는 GitHub의 Contributors 목록이 코드 커밋을 기준으로만 표시되기 때문에, 문서 수정이나 이슈 등록, 디자인 제안 같은 기여는 눈에 잘 띄지 않았습니다.
All Contributors를 사용하면 README 파일에 아래와 같은 기여자 테이블을 자동으로 생성할 수 있습니다.
| DaleSeo |
| 💻 📖 🤔 |
각 기여자 아래에 이모지로 기여 유형이 표시되어, 누가 어떤 방식으로 프로젝트에 기여했는지 한눈에 알 수 있습니다.
기여 유형 (Emoji Key)
All Contributors는 다양한 기여 유형을 이모지로 구분합니다. 주요 기여 유형은 다음과 같습니다.
| 이모지 | 키워드 | 의미 |
|---|---|---|
| 💻 | code | 코드 작성 |
| 📖 | doc | 문서 작성 |
| 🐛 | bug | 버그 리포트 |
| 🤔 | ideas | 아이디어 제안 |
| 👀 | review | PR 리뷰 |
| 🌍 | translation | 번역 |
| 🎨 | design | 디자인 |
| 🚇 | infra | 인프라(CI/CD, 빌드 등) |
| ⚠️ | test | 테스트 작성 |
| 📢 | talk | 발표, 강연 |
| 💵 | financial | 재정 지원 |
| 🔧 | tool | 도구 및 유틸리티 |
이 외에도 a11y(접근성), audio, video, tutorial, mentoring 등 다양한 기여 유형이 있습니다.
전체 목록은 Emoji Key 문서에서 확인할 수 있습니다.
초기 설정
All Contributors를 사용하려면 먼저 프로젝트에 설정 파일과 README 플레이스홀더를 추가해야 합니다. CLI 도구를 사용하면 이 과정을 자동화할 수 있습니다.
먼저 npm을 통해 CLI를 설치합니다.
$ npm install -D all-contributors-cli
그 다음 init 명령어를 실행합니다.
$ npx all-contributors init
몇 가지 질문에 답하면 .all-contributorsrc 설정 파일과 README의 기여자 섹션이 자동으로 생성됩니다.
.all-contributorsrc 파일은 다음과 같은 형태로 생성됩니다.
{
"projectName": "저장소-이름",
"projectOwner": "소유자-또는-조직",
"contributors": []
}
README.md에는 기여자 목록이 들어갈 플레이스홀더가 추가됩니다.
## Contributors
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
기여자 추가 방법
기여자 추가는 CLI 도구를 사용하거나, 깃허브 봇을 사용할 수 있는데요. CLI 도구는 최초에 여러 명의 기여자를 한 번에 추가할 때 유용합니다.
터미널에서 add 명령어를 통해서 기여자를 차례대로 추가합니다.
그러면 .all-contributorsrc 파일의 contributors 배열에 추가됩니다.
$ npx all-contributors add username1 doc
$ npx all-contributors add username2 code
$ npx all-contributors add username3 code,doc
그 다음 generate 명령어를 실행하여 README.md 파일의 플레이스홀더 부분을 업데이트할 수 있습니다.
$ npx all-contributors generate
깃허브 봇 활용
기여자 일괄 추가한 이후에는 깃허브 봇을 사용하는 것이 좋습니다. 봇을 사용하면 이슈나 PR에 댓글만 남기면 자동으로 기여자를 추가해줍니다.
All Contributors GitHub App에서 앱을 설치하고, 기여자를 관리할 저장소를 선택하면 됩니다.
이슈나 PR에 다음과 같이 댓글을 남기면 봇이 자동으로 기여자를 추가하는 PR을 생성해줍니다.
@all-contributors please add @username for code, doc
이 방법은 .all-contributorsrc 파일과 README.md 파일을 동시에 수정해주기 때문에 더 빠르고 편리합니다.
설정 파일
.all-contributorsrc 파일에는 다양한 설정을 할 수 있습니다.
{
"projectName": "my-awesome-project",
"projectOwner": "my-org",
"files": ["README.md"],
"imageSize": 100,
"contributorsPerLine": 7,
"contributorsSortAlphabetically": false,
"contributors": [
{
"login": "username",
"name": "사용자 이름",
"avatar_url": "https://avatars.githubusercontent.com/...",
"profile": "https://github.com/username",
"contributions": ["code", "doc"]
}
]
}
주요 옵션들을 살펴보면:
files: 기여자 테이블이 들어갈 파일 목록 (기본값:README.md) 기여자가 많아지면 별도의CONTRIBUTORS.md파일로 분리하는 것도 좋은 방법입니다.imageSize: 아바타 이미지 크기 (픽셀)contributorsPerLine: 한 줄에 표시할 기여자 수contributorsSortAlphabetically: 알파벳 순 정렬 여부
마치며
지금까지 All Contributors 봇과 CLI를 사용해서 오픈소스 프로젝트의 기여자를 관리하는 방법을 알아봤습니다. 코드뿐만 아니라 문서, 번역, 디자인, 아이디어 등 다양한 기여를 인정받으면 기여자들의 동기 부여에도 큰 도움이 됩니다. 💪
특히 오픈소스 프로젝트를 운영하고 계신다면, All Contributors 봇을 설치해서 기여자분들께 감사를 표현해보는 건 어떨까요? 기여자 입장에서도 자신의 이름과 기여 내역이 README에 멋지게 표시되면 뿌듯하지 않을까요? 😊
재정적으로 후원해주시는 분들도 멋지게 표현하고 싶다면 SponsorKit으로 오픈소스 후원자 이미지 자동 생성하기도 함께 살펴보세요!
더 자세한 내용은 All Contributors 공식 문서를 참고해보세요!
This work is licensed under
CC BY 4.0