16-1 Contribution

오픈소스 구성원


  • 저작자 : 오픈 소스 프로젝트를 만든 사람.
  • 메인테이너 : 프로젝트의 방향을 알고있고, 직접 설정한 프로젝트를 관리하는 사람(컨트리뷰터). ( 저작자 ⊃ 메인테이너 )
  • 사용자 : 오픈 소스 프로젝트를 사용하는 사람.
  • 컨트리뷰터 : 오픈 소스 프로젝트에 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


OSS (Open Source Software) 링크 : 공개SW포털 (OSS)
공개된 소스코드 + 라이선스 => (오픈소스) 소프트웨어

c.f. 우리나라(대한민국) 공공기관에서는 '공개 소프트웨어'라고 부릅니다.

0개의 댓글