
Image generated by Gemini, edited in Figma
오픈소스 기여라는 게, 한 번만 해보면 쉬워진다더라
그래서 하고 왔다.
개발자라면 한 번쯤 해볼 만하지 않은가? 일주일이면 익숙해질 수 있다.
일주일 만 투자하고, 이력서 한 줄을 추가하자
PR보러가기 - https://github.com/clauderic/dnd-kit/pull/2020
이 글에서 소개할 내용은 3가지이다.
이번 글에서는 오픈소스를 고르는 방법까지만 소개한다.
적절한 오픈소스만 잘 고르면 절반은 성공이다.
나머지 내용 (문제 상황 재현하기 + 수정하고 PR하기 + merge기다리기)은 다음 글에서 소개할지도?
시작하쟙!
이제부터 몸통박치기 실력을 보여주겠다!
!!!
우리는 깃허브에서 기여할 예정이다. (깃허브가 아니어도 된다)
React를 보자. - https://github.com/facebook
facebook(=Meta)이 운영하는 organization 에는
react를 비롯해, react-native, docusaurus… 여러 종류의 레포지토리가 있다.
전부 별개의 패키지이자, 별개의 레포지토리이다.
오픈소스 기여는 레포지토리 단위로 가능하다.
패키지와레포지토리를 구분하자.
facebook/react 레포지토리에 방문해서 소스코드를 확인해 보면, packages 폴더가 있다.
내부에는 모노레포구조로 react, react-dom, react-devtools 등등 여러 종류의 패키지가 존재한다.
때문에,
“나는 react-dom 을 공부해서 react-dom에 기여할거야!” = facebook/react 레포지토리에서 하면됨.
“나는 react-devtools에 기여할거야!” = facebook/react 레포지토리에서 하면됨.
“나는 react 기여할거야!” = facebook/react 레포지토리에서 하면됨.
그래서 우리는, 기여할 오픈소스(레포지토리)를 골라야 한다.
기여하는 단계를 확인해보자. (이 글에서는 3단계까지 소개한다)
- 나의 패키지 분류하기
- 오픈소스 체크리스트 (오픈소스 고르기)
- 이슈 고르기
- 문제 상황을 나의 로컬에서 재현하기
- 원인 찾아서 수정하기
- CONTRIBUTING에 따라 commit + PR하기
- 관리자의 merge 기다리기
- 관리자의 댓글 보고 대응하기
우선 내가 했던 프로젝트 속 package.json 취합해서 사용한 패키지들을 모으자
Pipfile, pom.xml, build.gradle 뭐 그런거 아무튼 의존성파일 확인해봐라취합한 패키지들을 레포지토리 단위로 구분해서 정리하자
// claude code prompt
// 폴더 속 package.json파일들에 포함된 모든 패키지를 GitHub 레포지토리 기준으로 묶어서 package정리.md 로 정리해줘.
정리 결과 예시
facebook/reactfacebook/react-nativeexpo/exporeact, react-native, expo 레포지토리 깃허브를 확인하면 된다.각각의 레포지토리의 깃허브 링크에 방문하여, 기여할만한 오픈소스를 고르자
체크리스트 요약
언어: 내가 사용하는 언어의 소스코드인지 확인하기업데이트: 최근까지 업데이트 중인지 확인하기기여 규칙: 규칙 문서인 CONTRIBUTING.md가 있으면 좋고 없으면 말고PR: 나의 PR이 merge되어야 성공이다.이슈: 우리는 이슈 중 하나를 골라서 기여할 것이다.
Level 2-1. 언어: 내가 사용하는 언어의 소스코드인지 확인하기⭐레포지토리 오른쪽 아래에서 확인 가능.
Level 2-2. 업데이트: 최근까지 업데이트 중인지 확인하기⭐마지막 commit 이 최근이며, 이슈와 PR이 존재하긴 해야 함.
- 업데이트가 종료된 패키지도 있다.
- 이슈와 PR을 허용하지 않는 경우도 있다.
- 이런 오픈소스에는 기여할 수 없다.
Level 2-3. 기여 규칙: 규칙 문서인 CONTRIBUTING.md가 있으면 좋고 없으면 말고⭐CONTRIBUTING.md 를 제공하거나, CONTRIBUTING 링크를 제공한다. (필수x)
- 해당 오픈소스에 기여를 원하는 기여자들을 위해 제공하는 기여 가이드라인이다.
- README에서 링크로 제공하는 경우도 있다.
- CODE_OF_CONDUCT.md 파일도 있다면 참고하자.
- 없다면? 다른 오픈소스의 CONTRIBUTING과, 해당 오픈소스의 merge된 PR들의 방식을 비교해본 뒤, 적당히 컨벤션 맞춰서 하자.
Level 2-4. PR: 나의 PR이 merge되어야 성공이다.open된 PR과 closed된 PR 모두를 확인해야 한다. PR의 개수가 중요한 게 아니다. detail을 확인하자
open PR

CLA Signed 라벨을 달아준다.closed PR

Owner, Collaborator, Member 는 관리자라서 볼 필요 없다.Contributor 붙어있는 사람들이 외부인이다. 즉, 우리 같은 사람들Level 2-5. issues: 우리는 이슈 중 하나를 골라서 기여할 것이다.⭐open 이슈에 최신 이슈가 충분히 있어야 한다.
- 이슈란, 레포지토리에 버그, 기능 요청, 질문 등을 남기는 게시글이다.
- 이슈 중, 버그를 찾았다는 이슈를 우리가 고치면 된다.
- 내가 직접 버그를 찾았다면? 이슈부터 작성한 뒤, 고치면 된다.
클로드나 GPT에게 오픈소스 기여하는 방법 물어보면,
이슈 중 하나 고른 뒤, “제가 할게요!” 라는 식의 댓글을 남겨야만 한다고 알려줄거다.
근데, 나는 “제가 할게요!” 댓글을 본 적 없다.
그냥 빠르게 PR 갈기면 된다.

라벨를 확인할건데, 오픈소스마다 사용하는 라벨의 이름이 조금씩 다르다.triage 라벨: 관리자가 아직 확인 안 한 이슈라서 PR해도 승인될지 안될지 미지수triage 가 달려있는 경우도 있다.feature request 라벨: 기능 추가 제안 이슈 = 새로운 기능 개발이 가능하다면 시도해봐라bug 라벨 (우리가 고를 이슈) : 제시한 이슈 내용 잘 읽고 bug 고치면 된다. docs 라벨: 문서만 수정하면 된다. 가장 쉽다. 쉬우니까 하지 말자.good first issue 라벨: 클로드나 GPT가 이 라벨 찾으라는데, 나는 본 적 없다. 이슈에 실제 작성된 내용을 확인하자.
재현 코드가 있다면? very very good댓글 확인AI를 활용해라link된 PR이 있다면, 늦은거다. 이미 다른 분이 PR을 올려둔 거니까 시도하지 말자언어의 소스코드 필수commit 이 최근이며, 이슈와 PR이 존재함 필수CONTRIBUTING.md 있으면 goodopenPR: 최신 PR 5개쯤 + 그 외 PR은 전부 한 달 넘는 상태면 bestopenPR: 댓글이 2개 이상인 PR이 꽤 있으면 goodclosedPR: 한 달 내의 외부인(Contributor) merge 기록이 존재한다. 필수이슈: 최신 이슈가 충분히 있다.이슈: bug 라벨이며, link된 PR이 없는 이슈가 하나라도 존재한다. 필수:)
별거 아닌 것처럼 써뒀지만,
사실 오픈소스 기여가 쉽지는 않다.
그럼에도, 한 번만 해봐도 쉬워지긴 하더라.
배운 점도 상당히 많다. 낯선 코드베이스를 받아들이는 경험, 천재들의 설계 의도를 느껴보는 경험을 할 수 있다.
뭔가. 한 줄 한 줄의 코드들을 읽다 보면, 코드 한 줄에서도 깊은 고심의 흔적이 느껴지는 순간이 온다.
아무튼 그렇다.
그러니, 다 읽은 김에 오늘 바로 시작해 보는 건 어떨까?
도움이 필요하다면 내 손을 잡아!