데브코스

[13주차 - DAY4] 오픈 소스(3)

미안하다 강림이 좀 늦었다 2024. 5. 23. 13:58

 

 

오픈 소스 구성원 역할

  • 저작자: 오픈 소스 프로젝트를 만든 사람 또는 조직
  • 사용자: 오픈 소스 프로젝트를 사용하는 사람
  • 메인테이너: 프로젝트의 방향을 알고 있고, 직접 설정한 프로젝트를 관리하는 사람
  • 컨트리뷰터: 오픈 소스 프로젝트에 컨트리뷰션(기여) 활동을 하는 모든 사람
  • 커미터: 컨트리뷰터가 컨트리뷰션을 하면 리뷰를 하는 사람으로, 프로젝트에 반영할지에 대한 결정 권한도 가지고 있음

 

 

컨트리뷰션

컨트리뷰션을 하는 이유

  • 오픈 소스 저작자 입장에서는 컨트리뷰터들이 버그를 찾아줄 수 있고, 사용하면서 불편했던 점을 발견하고 코드를 개선할 수 있다.
  • 오픈 소스 사용자/컨트리뷰터 입장에서는 코드 리뷰를 받을 수 있고, 내가 원하는 기능을 추가해 볼 수 있다. 또한, 오픈 소스 코드 분석 능력을 기를 수 있다.

 

활동 유형

  • 버그 수정
  • 문서 작업
  • 기능 추가/수정/삭제
  • 리팩토링
  • 버전, 외부 모듈(의존성) 변경
  • 에러 메시지 수정
  • 테스트 케이스 추가

 

주의 사항

  • 커뮤니케이션할 때의 태도, 자세, 말투는 겸손해야 한다.
  • 기여하고 싶은 내용을 이미 구현하고 있지 않은지, 구현하지 않기로 결정한 것은 아닌지 먼저 확인해야 한다.
  • 시작하기 전에 내가 이 작업을 시작할 것이라고 이슈 오픈이나 디스커션 탭에서 알리는 것이 좋다.
  • 너무 오래된 open 이슈는 디스커션이나 커뮤니티에 문의한다.
  • Pull Request를 던질 때는 템플릿이나 문서를 확인하여 준수할 내용을 체크해야 한다.

 

절차

  1. 오픈 소스 프로젝트를 내 계정의 레포지토리에 fork 한다.
  2. 내 계정에 있는 레포지토리를 클론 해서 로컬에 받아온다.
  3. 코드 컨벤션, 커밋 메시지 규칙 등을 코드 구현 전에 확인한다.
  4. 코드를 구현하고, 수정한다.
  5. 내 계정의 깃허브 레포지토리로 push 한다.
  6. 깃허브의 내 레포지토리에서 오픈 소스 레포지토리로 Pull Request 요청을 보낸다.
  7. 컨트리뷰터 라이선스에 동의한다.
  8. 리뷰어, 커미터, 메인테이너, 저작자 등이 검토한다. 검토를 생략하고 바로 merge 되는 경우도 있다.
  9. merge 완료 (Pull Request closed 알림이 온다)
  10. 컨트리뷰터 리스트에 내 계정이 추가된다.

 

라이선스 제안

  • 어떤 프레임워크 위에서 동작하는지, 어떤 모듈이랑 같이 쓰이는지 확인하여 라이선스를 제안한다.
  • 딱히 고려할 것이 없으면 MIT 라이선스로 제안한다.
  • Apache는 특허 관련 내용이 포함되어 있기 때문에 기업이 사용하기를 원하면 Apache(웹 관련)로 제안한다.
  • 오픈 소스 커뮤니티/프로젝트 구성원/컨트리뷰터 등의 히스토리를 모두 공개하길 원하면 GNU (L/A/)GPL v3로 제안한다.

 

 

배운 점

  • 오픈 소스 구성원에는 어떤 것이 있고, 각자 무슨 역할을 하는지에 대해 알게 되었다.
  • 컨트리뷰션은 프로젝트가 더 나은 방향으로 갈 수 있도록 해준다. 
  • 컨트리뷰션을 하기 전에 이슈와 디스커션을 먼저 확인해야 한다.
  • 컨트리뷰션을 할 때는 해당 오픈 소스 프로젝트를 내 레포지토리에 fork 한 후에 로컬에서 작업하고 내 레포지토리에 push 한다. 그리고 Pull Request를 요청한다.
  • 라이선스 제안 방법과 각 라이선스가 어떤 의미를 가지고 있는지 배웠다.