16-1 Contribution
커미터 : 컨트리뷰터가 컨트리뷰션(ex. pull request)하면 리뷰를 하는 사람. 프로젝트에 반영할지 말지 결정 권한도 가지고 있는.컨트리뷰터.
메인테이너 ─── 커미터 ─── 컨트리뷰터
프로젝트(요구사항을 결과물로 만드는)과정에서의 기여 활동에 해당하는 모든 작업.
소스코드(기능개발, 리팩토링, 버그수정)나 테스트외에도 기획, 설계, 분석, 배포, 가이드(문서화) 등의 작업 활동.
✅ 간단한 수정도 기여에 해당합니다. rect → react
✅ 직접 무언가를 해야만 해당하는것이 아니라, 제안만 해도 기여에 해당합니다. 한글화 하면 어떨까요? (직접 번역작업은 하지않음)
✅ 설명을 추가, 수정 제안, 에러메세지, 테스트케이스 추가, UI/UX 디자인 변경 제안 등
저작자 : 개인으로서의 한계를 보완 가능합니다.
컨트리뷰터 :
✅ 커뮤니케이션 : 태도, 자세, 말투 등
✅ 소스 코드 충돌 : Contribute 하려는 애용이 구현되고 있는 중인지 or 구현하지 않기로 결정 되었는지 논의(Discussion)하여서 작업 시작전에 알리는 것을 권장.
e.g. OOO 프로젝트를 한글화 하려고하는데 작업이 20xx년에 멈춰있는 경우
-> 디스커션이나 커뮤니티(슬랙, 디스코드 등) 문의 등으로 이슈 정리가 가능
-> 오래된 이슈, 작업하지 않는 이슈, 정리되지 않은 이슈 등 같은 이슈정리도 일종의 기여에 해당.
✅ 새로운 or 큰/중요한 기능 추가
✅ Pull Request를 할 때
=> 모든 것은 협업에 해당 = 커뮤니케이션의 중요 = 공유
1️⃣
컨트리뷰트 절차 가이드 확인 링크 : 컨트리뷰션 절차 설명 예
2️⃣
오픈 소스 프로젝트를 Fork → Clone
Fork : 오픈 소스 프로젝트의 레포지토리를 내 계정의 레포지토리에 복제하여 가져오는 것.
┌───────────────┐ Fork ┌───────────────┐
│ 저작자 계정 │ -> │ 내 계정(복제) │
└───────────────┘ └───────────────┘
// 복제되면서 연결됨
Clone : 깃허브 레포지토리를 로컬 레포지토리(내 컴퓨터)에 복제하여 가져오는 것.
┌───────────────┐ Clone ┌───────────────┐
│ 내 계정(복제) │ -> │ 작업컴퓨터 │
└───────────────┘ └───────────────┘
3️⃣
코드 컨벤션 체크, 커밋 메세지 등 코드 구현 전에 확인해야하는 규칙 확인
e.g. 다른사람들이 커밋한 내용들 확인해서 참고
4️⃣
코드 구현, 코드 수정, 주석 수정 등 작업
5️⃣
Push : 로컬에서 작업한 내용을 깃 허브(내 레포지토리)에 반영
┌───────────────┐ Push ┌───────────────┐
│ 내 계정(복제) │ <- │ 작업컴퓨터 │
└───────────────┘ └───────────────┘
Pull Request : 오픈 소스 레포지토리에 PR 요청. // 내 작업을 확인(Review) & 반영(Merge)해주세요.
┌───────────────┐ PR ┌───────────────┐
│ 저작자 계정 │ <- │ 내 계정(복제) │
└───────────────┘ └───────────────┘
(6️⃣)
Contributor License Agreement 서명 확인
Chat GPT 설명추가
📌 CLA란?
Contributor License Agreement는 기여자가 오픈소스 프로젝트에 코드를 제공할 때
해당 코드에 대한 사용 권한을 프로젝트 측(보통 저작권자 또는 메인테이너)에게 부여한다는 내용의 법적 문서입니다.
🔍 왜 필요할까?
지적재산권 분쟁 예방
나중에 기여자가 “저 코드 내 거니까 빼!”라고 하지 못하게 하기 위해.
라이선스 일관성 유지
모든 기여물이 오픈소스 라이선스 하에 안전하게 배포될 수 있도록.
회사 소속 개발자 기여 보호
회사 코드인지, 개인 코드인지 명확히 하기 위해 종종 회사 측 서명도 필요.
📝 CLA의 주요 내용
기여자는 자신이 제공한 코드의 저작권을 보유하고 있다는 보장 (또는 소속 회사가 동의했음).
프로젝트가 그 코드를 재배포·수정·라이선스화할 수 있는 권리를 가진다는 것.
기여자는 코드에 대한 책임(예: 특허 침해 등)을 어느 정도 부담함.
✅ 예시: GitHub 기반 CLA 플로우
Pull Request를 올리면 봇이 댓글로 "CLA에 서명해 주세요" 링크를 남김.
기여자는 GitHub 계정으로 로그인해 전자서명(체크박스 + Submit).
CLA 확인되면 PR에 “✔ CLA signed” 표시.
💡 참고 사례
Google, Facebook, Microsoft 등 대형 프로젝트는 대부분 CLA를 요구합니다.
일부 프로젝트는 개인용(Individual CLA)과 기업용(Corporate CLA)을 나누어 받기도 합니다.
요약하면:
CLA는 “이 코드 기여하는 데 동의하고, 프로젝트가 자유롭게 쓸 수 있도록 법적으로 허용합니다”라는 동의서입니다.
(7️⃣)
코드 검토 진행 : 저작자, 리뷰어, 커미터, 메인테이너 등을 통해 검토가 진행되거나
크리티컬하지 않은 경우나, 별다른 제약이 없는경우 검토를 생략하고 바로 반영(Merge)되는 경우도 있습니다.
8️⃣
Merge된 경우 Pull Request Closed 되었다고 알림이 옵니다.
+ Contributors 명단에 본인의 계정이 추가됨
<기타>
OSS (Open Source Software) 링크 : 공개SW포털 (OSS)
공개된 소스코드 + 라이선스 => (오픈소스) 소프트웨어
c.f. 우리나라(대한민국) 공공기관에서는 '공개 소프트웨어'라고 부릅니다.