오픈소스)구성원과 컨트리뷰터_유형 및 절차

Songss·2025년 2월 18일
0

개발지식

목록 보기
6/16

(1) 오픈소스 구성원 역할

  1. 프로젝트 리더 (저작자, Project Leader) :
    • 오픈 소스 프로젝트를 만든 사람 또는 그룹
    • 주요 기술적/전략적 의사결정을 내림
    • 커뮤니티 관리 및 기여자들의 협업을 조율
  2. 메인테이너 (Maintainer) : 프로젝트의 방향을 알고 직접 프로젝트를 관리하는 자
    • 코드 리뷰 및 병합(merge) 결정
    • 버그 수정 및 기능 개선 관리
    • 프로젝트의 품질을 유지하고 버전을 관리함
  3. 컨트리뷰터 (기여자, Contributor) :
    • 코드, 문서, 번역, 디자인 등의 기여를 수행
    • 새로운 기능 추가, 버그 수정, 문서화 개선 등의 역할
    • Pull Request(PR)를 보내 프로젝트에 직접적인 영향을 줌.
  4. 사용자 : 오픈 소스 프로젝트를 사용하는 사람
  5. 커미터 (Committer) : 리뷰하는 컨트리뷰터
  • 컨트리뷰터보다 한 단계 높은 역할로, 직접 코드를 프로젝트에 반영할 권한이 있음.
  • 리뷰어 역할을 수행하며 코드 품질을 관리.

그 외 ..

  1. 이슈 리포터 (Issue Reporter)
  • 프로젝트에서 발견된 버그나 개선 사항을 제안.
  • GitHub Issues, GitLab Issues 등을 활용해 문제를 제기.
  1. 테스터 (Tester)
  • 새로운 기능이나 변경 사항을 테스트하고 피드백 제공.
  • 자동화 테스트를 설정하거나 수동 테스트를 수행.
  1. 문서화 담당자 (Documentation Maintainer)
  • 프로젝트의 문서를 작성하고 업데이트.
  • API 문서, 설치 가이드, 튜토리얼 등의 작성 및 유지.
  1. 디자이너 (Designer)
  • UI/UX 디자인을 담당.
  • 프로젝트의 로고, 웹사이트, 다이어그램 등을 제작.
  1. 커뮤니티 매니저 (Community Manager)
  • 개발자 및 사용자 커뮤니티 관리.
  • 기여자를 유치하고 프로젝트의 인지도를 높이는 활동 수행.
  1. 펀딩 및 후원자 (Sponsor / Backer)
  • 프로젝트를 재정적으로 지원하는 개인 또는 기업.
  • GitHub Sponsors, OpenCollective, Patreon 등을 통해 후원.

Q. 관리자가 없으면 오픈소스라고 할 수 없는건가 ?

Maintainer가 없더라도 오픈소스라고 할 수 있다.

다만 Maintainer 부재가 어떤 의미냐에 따라 상황이 다를 수 있다.

✅ 관리자(Maintainer), 커미터 가 없더라도 오픈소스인 경우

  1. 완전히 자율적인 커뮤니티 운영
  • 관리자가 공식적으로 존재하지 않지만, 여러 기여자들이 공동으로 유지하는 경우.
  1. 초기에 개발된 후 유지보수가 중단된 프로젝트
  • 예전에는 활발히 개발되었으나, 현재는 관리자가 없지만 코드가 공개되어 있고 누구나 사용할 수 있음.

❌ 관리자가 없으면 오픈소스로 보기 어려운 경우

  1. 코드가 공개되지 않거나 라이선스가 명확하지 않음
  • 코드가 공개되지 않거나, 누가 사용/배포할 수 있는지에 대한 규정이 없는 경우.
  1. 실질적으로 기여할 수 없는 상태
  • 저장소에 대한 접근 권한이 사라지고, PR(풀 리퀘스트)이 승인될 방법이 없는 경우.

(2) 컨트리뷰터의 유형 구경하기 (feat.React)

컨트리뷰션의 활동은 오픈 소스 프로젝트에 기여(코드 구현, 수정)하는 걸까 ?

→ 아닙니다.

프로젝트는 소스 코드를 구현 만 다루지 않습니다.

기획, 설계, 분석, 테스트, 배포, 가이드(문서화) 등 여러 단계를 거쳐서 프로젝트가 완성됩니다.

즉, 컨트리뷰터의 활동 범위는 코드 구현외에도 기획, 설계, 테스트 등등 여러 범위에 걸쳐 활동할 수 있습니다.

(3) 컨트리뷰터의 유형 살펴보기

위 표는 오픈소스 프로젝트에서 기여자들이 어떤 방식으로 기여하는지를 통계적으로 정리한 표이다.

  1. 버그 수정 (Bug Fix) : 30.20% , 116회
  2. 문서화 (Documentation) : 28.64% , 110회
  3. 새로운 기능 추가 (Add New Feature) : 18.75% , 72회
  4. 리팩토링 (Refactoring) : 8.85% , 34회
  5. 버전/의존성 업데이트 (Update Version/Dependencies) : 6.51% , 25회
  6. 오류 메시지 개선 (Improve Error/Help Messages) : 3.64% , 14회
  7. 리소스 사용 최적화 (Improve Resource Usage) : 2.08% , 8회
  8. 테스트 케이스 추가 (Add Test Cases) : 1.30% , 5회

또한 제안을 하는 것 또한 컨트리뷰션이라고 할 수 있다.

(4) 컨트리뷰터 활동 이유

<오픈 소스 저작자> 기준

  • 컨트리뷰터들이 버그를 찾아 줄 수 있다.
  • 사용하면서 불편했던 점, 개선할 코드 등등
    • 혼자서 찾을 수 없는 부분을 다양한 사람들이 개선해 줄 수 있다.

<오픈 소스 사용자/컨트리뷰터> 기준

  • 학습과 기술 성장
    • 최신 기술을 접할 수 있다.
    • 실무와 유사한 경험을 쌓을 수 있다.
  • 포트폴리오와 커리어 기회
    • 이력서에 추가 할 수 있고, 유명 프로젝트에 기여하는 경험을 얻을 수 있다.
  • 개발자 커뮤니티와 네트워킹
    • 글로벌 개발자들과 협업
    • 멘토와 멘티 관계 형성
  • 코드 퀄리티를 높일 수 있다 → 코드를 보는 시선/관점/시야 Up
  • 진짜 진짜 운이 좋으면 오픈소스 컨퍼런스 참여하는 기회까지도 얻을 수 있다는 소문이..?

(5) 우리나라는 컨트리뷰션에 진심입니다.

OSS (Open Source Software)

OSS는 “오픈 소스 소프트웨어(Open Source Software)” 의 약자로, 소스 코드가 공개되어 누구나 자유롭게 사용, 수정, 배포할 수 있는 소프트웨어

🔹 OSS의 특징

  1. 소스 코드 공개
  • 누구나 코드를 보고, 수정하고, 개선할 수 있음.
  1. 자유로운 사용 및 배포
  • 특정 라이선스(예: MIT, GPL, Apache 등)에 따라 누구나 무료로 사용 가능.
  • 개조한 후 재배포도 가능.
  1. 커뮤니티 중심 개발
  • 기업이나 개인이 아닌 전 세계 개발자들이 협력하여 발전시킴.
  • GitHub, GitLab, Bitbucket 같은 플랫폼을 통해 기여 가능.
  1. 보안성과 투명성
  • 코드가 공개되어 있어 보안 취약점을 쉽게 발견하고 개선 가능.
  • 숨겨진 백도어나 악성 코드가 있을 가능성이 낮음.

🔹 OSS의 장점

비용 절감 → 무료로 사용 가능, 기업에서도 비용 절감 효과.

유연성 → 원하는 기능을 추가하거나 커스터마이징 가능.

빠른 버그 수정 → 전 세계 개발자들이 기여하여 빠르게 개선됨.

오픈 생태계 → 여러 개발자가 기여하면서 지속적으로 발전.

🔹 OSS의 단점

기술 지원 부족 → 일부 프로젝트는 공식적인 기술 지원이 없음.

보안 이슈 → 코드가 공개되어 있어 해커가 취약점을 악용할 수도 있음.

복잡한 라이선스 → 오픈소스 라이선스에 따라 사용 및 배포 제한이 있을 수 있음.

🔹 대표적인 OSS 예시

  1. 운영체제: Linux, Ubuntu, FreeBSD
  2. 웹 브라우저: Mozilla Firefox, Chromium
  3. 프로그래밍 언어 및 런타임: Python, PHP, Node.js, Ruby
  4. 데이터베이스: MySQL, PostgreSQL, MongoDB
  5. 웹 서버: Apache, Nginx
  6. 개발 도구: Git, VS Code, Eclipse

🎯 OSS가 중요한 이유?

  • 기업과 개인 모두에게 비용 절감과 유연성을 제공함.
  • 개발자들이 학습하고 성장할 수 있는 환경을 제공.
  • 오픈소스 프로젝트를 통해 커리어 기회를 얻을 수 있음.
  • 많은 상용 소프트웨어도 OSS를 기반으로 개발됨 (예: Android, macOS의 일부 구성 요소).

(6) 컨트리뷰터 주의 사항

컨트리뷰터의 주의 사항 === 협업의 주의 사항

  1. 커뮤니케이션 :
    1. 컨트리뷰션은 협업이고, 협업은 소통이고, 소통은 개발자의 태도,자세를 볼 수 있다는 것이다.
  2. 소스 코드 충돌 :
    1. Contribute 하고 싶은 내용을 이미 구현하고 있진 않는지, 구현하지 않기로 결정한 건 아닌지 체크
      1. 그래서 시작하기 전에 내가 작업을 시작할 것을 알리는 것이 좋다.
      2. 오래되거나 작업하지 않은 이슈는 Discussion, 커뮤니티에 문의하고 작업하는 것이 좋음
  3. 새롭고, 큰 중요한 기능 추가 하고 싶을때 ?
    1. 이런 기능 추가해보고 싶은데 어떤지 [이슈, Discussion]에 먼저 제안해본다.
      1. 규모가 크다면 팀원들을 모집해 보는 것이 중요하다.
  4. Pull Request 하기 전
    1. 템플릿(틀)이나 문서를 확인하면서 준수할 내용 체크 !
      1. 테스트를 했는지 EsLint를 맞춰봤는지
      2. 유효성 검사를 맞춰 봤는지 등등

(7) 쿠키 영상 - 언어 장벽

개발자라면 피할 수 없는 공부 → 바로 영어

그렇다고 겁 먹을 필요는 없다고 생각한다.

이미 나는 제2외국어를 자연스럽게 습득해 본 경험도 있기 때문에 무서워하면 안된다.

물론 내가 배운 중국어는 사실상 생존하기 위한 언어였고

이제 배울 영어는 그와 다른 생존 언어이다. 문법보다는 핵심 단어를 찾아 해석하고

이를 조합해서 해석해도 충분할 수 있다고 본다.

겁먹지말자

(8) 컨트리뷰트 절차

Contributing 문서/가이드

  1. 프로젝트를 찾기
    1. 기여하고 싶은 오픈소스 프로젝트 찾는다.

      🔹 GitHub 탐색

      GitHub Explore에서 인기 있는 프로젝트 탐색.

      • good first issue, help wanted 태그가 있는 이슈 검색.

      • 자신이 자주 사용하는 라이브러리나 프레임워크 프로젝트 찾기.

      🔹 기타 추천 사이트

      Awesome First PR → 초보자용 기여 가능한 프로젝트 리스트.

      Open Source Friday → 오픈소스 기여 장려 사이트.

    2. 프로젝트 레포지토리 확인

      1. GitHub 페이지에서 README.md , CONTRIBUTING.md , ISSUE 목록확인
      2. License를 확인하여 사용 및 기여 가능 여부 확인
      3. 기술 스택과 코딩 스타일 파악
  2. 오픈 소스 프로젝트를 Fork (내 GitHub 계정으로 복사)
    1. 브랜치 생성 (원본 Main을 수정하지 않고 새로운 브랜치로 작업)
  3. 1번 단계를 완료되면 Clone해서 내 컴퓨터(로컬)로 가져온다.
  4. 코드 컨벤션이 있는지 체크할 것 , how to use the commit message “규칙”
    1. haven’t find it , then you click anther commit message
  5. 내 로컬에서 코드 구현, 수정
    1. 주석 수정 또한 “컨트리뷰트” 이다.
  6. 내 레포지토리(clone한 곳)에 push
  7. 오픈 소스 프로젝트 레포지토리에 PR(Pull Request) 요청
  8. Contributor License Agreement
    1. 오픈소스 프로젝트에서는 다양한 개발자가 코드, 문서, 번역 등을 기여하기 때문에 저작권 및 라이선스 문제가 발생할 수 있다.
    2. 그래서 기여자의 코드가 라이선스 문제 없이 프로젝트에 포함될 수 있도록 법적 보호를 제공하는 역할을 함
  9. 리뷰어, 커미터, 메인테이너, 저작자 등… 검토해줄 사람이 등장
    1. 검토 없이 Merge되는 경우가 있다.
  10. Merge가 되었다 = Pull Request closed 알림이 옮
  11. 컨트리뷰터(Contributor) 리스트에 등재됨

그럼 요약 해보자

1️⃣ 기여할 프로젝트 찾기

2️⃣ 프로젝트 가이드 및 라이선스 확인

3️⃣ 리포지토리 Fork & Clone

4️⃣ 새 브랜치 생성

5️⃣ 코드 수정 및 기능 추가

6️⃣ Commit & Push

7️⃣ Pull Request(PR) 생성

8️⃣ 코드 리뷰 및 피드백 반영

9️⃣ PR 승인 및 Merge 완료

🔟 원본 리포지토리 동기화 후 다음 기여 준비

(9) 컨트리뷰트 할 만한 프로젝트 찾기 !

🔹 GitHub 탐색

  • GitHub Explore에서 인기 있는 프로젝트 탐색.
  • good first issue, help wanted 태그가 있는 이슈 검색.
  • 자신이 자주 사용하는 라이브러리나 프레임워크 프로젝트 찾기.

🔹 기타 추천 사이트

0개의 댓글