컨트리뷰션(Contribution)
오픈 소스 구성원 역할
- 저작자
: 오픈 소스 프로젝트를 만든 사람 또는 조직
- 메인테이너
: 프로젝트의 방향을 알고 있는 / 직접 설정한 프로젝트를 관리하는 사람
- 커미터
: 컨트리뷰터가 컨트리뷰션을 하면 리뷰를 하는 사람
: 프로젝트에 반영할지 말지 결정 권한을 가지고 있는 컨트리뷰터
- 컨트리뷰터
: 오픈 소스 프로젝트에 컨트리뷰션(기여) 활동을 하는 모든 사람
- 사용자
: 오픈 소스 프로젝트를 사용하는 사람
컨트리뷰션 활동 유형
- 오타 수정 ( ex. README.md rect => react)
- 번역 ( 내가 직접? 제안만 해도 컨트리뷰션)
- 문서 설명 덧붙임
- 배너 문구 수정 제안
- UI / UX 제안
✨제안 ✨
- 버그 픽스
- 문서 작업
- 기능 추가, 수정, 삭제
- 리팩토링
- 버전, 외부 모듈 바꾸기
- 에러 메시지 구체화
- 리소스
- 테스트 케이스 추가
컨트리뷰션을 하는 이유?
< 오픈 소스 저작자>
: 컨트리뷰터들이 버그를 찾아준다.
: 사용하면서 불편했던 점, 개선할 코드 등등 혼자는 찾을 수 없느 사항들을 찾아준다.
< 오픈 소스 사용자 / 컨트리뷰터 >
: 다른 개발자들에게 리뷰를 받을 수 있다.
: 내가 원하는 기능을 추가할 수 있고, 사용자 입장에서 코드 사용하는 데도 편리하다.
: 코드 퀄리티를 높일 수 있다. 코드를 보는 시선, 관점, 시야
: 오픈 소스 코드 분석( = 코드 문해력) 이 길러진다.
: 협업, 성취감
컨트리뷰션 주의 사항
✔️ 커뮤니케이션
: 태도, 자세, 말투➡️"겸손"
✔️ 소스 코드 충돌
: Contribute 하고 싶은 내용을 이미 구현하고 있지는 않은지, 구현하지 않기로 결정한 건 아닌지
: 너무 오래된 open 이슈 ( ex. hubot: translate korean 2018 ) ➡️ 디스커션이나 커뮤니티 문의
: 오래된 이슈, 작업하지 않는 이슈, 정리되지 않은 이슈.. 정리! 일종의 컨트리뷰션
: 시작하기 전에 내가 작업을 시작할 것을 알리는 것이 좋음 ( = 이슈 오픈, discussion, .. )
✔️ 새롭고, 큰 중요한 기능을 추가하고 싶을 때
: 나 이런 기능 추가해보고 싶은데 생각 어때?
: 내부적으로 팀원 모집도 추천
✔️ Pull Request 던질 때
: 템플릿(틀) 이나 문서를 확인하면서 준수할 내용(테스트 유무, 컨벤션 등등 체크)
컨트리뷰트 절차
1. 오픈 소스 프로젝트를 fork ( 저작자 계정 => 내 레포지토리로 복제 )
2. clone ( 내 컴퓨터, 로컬로 받아 옴)
3. 코드 컨벤션 확인하기 ( 코드 구현 전에 "규칙" 확인하기 )
4. 코드 구현, 수정 👉🏻 커밋 (✨주석 수정 ✨)
5. 내 계정 깃허브 레포지토리(Clone 했던) 로 push
6. 깃허브 내 레포지토리 ➡️ 오픈 소스 레포지토리 Pull Request
7. Contributor License Agreement
8. 리뷰어, 커미터, 메인테이너, 저작자 ... 검토해줄 사람
- 검토 생략하고 바로 머지되는 경우도 있다!
9. merge 되었다 = Pull Request closed 알림
10. 컨트리뷰터 리스트에 내 계정이 추가될 것! 🎉