📍오픈 소스 프로젝트
open source 오픈 소스
- 공개되어 있는 소스 코드
- 검사(리뷰), 수정 등 개선 사항을 펼칠 수 있는 소스 코드
- e.g. react, node.js, APache, Bootstrap
오픈소스 라이선스
- 오픈 소스로 배포, 준비, 공개된 소스 코드를 사용할 때 지켜야 하는 규칙 등을 명시하는 것
- 하나의 오픈 소스에 여러개의 라이선스가 적용될 수 있음
오픈 소스 라이선스 종류
- GPL
- 어떤 목적, 형태로든 사용할 수 있지만, 사용/배포하는 경우에는 무조건 공개
- FireFox, Linux, Git, MariaDB, WordPress
- MIT
- 라이센스 이름 명시
- e.g. bootstrap, react, angular, jQuery
- Apache
- license.txt
- 소스 코드에 대한 공개 의무 사항 없음
- BSD
오픈 소스 라이선스 표기 방법
- 오픈 소스명
- 공식 홈페이지 주소
- 라이센스 종류, 이름
- 라이센스 전문(공식문서, 문서)
오픈 소스 라이선스 적용 방법
- 프로젝트 사용 시 → 깃허브 레포 Readme 또는 License.txt에 기재
오픈 소스 문서구조
- 기본 문서
- LICENSE.md/.txt - 오픈 소스 라이선스 전문 명시 문서
- 추가 문서
- README.md - 프로젝트 코드의 목적, 사용 방법 설명 문서
- COPYRIGHT.txt - 저작권
- NOTICE.txt - 오픈 소스 라이선스 개요
- Contributing.md - 해당 프로젝트 기여 절차 안내
- code of conduct - 오픈 소스 프로젝트에 참여하는 방법에 대한 표준
오픈 소스 구성원 역할
- 저작자
- 메인테이너
- 커미터
- 컨트리뷰터의 컨트리뷰션을 리뷰하는 컨트리뷰터
- 프로젝트에 반영 여부 결정 권한
- 컨트리뷰터
- 오픈 소스 프로젝트에 기여 활동을 하는 모든 사람
- 사용자
- 오픈 소스를 사용
컨트리뷰션 활동 유형
- 버그 fix
- 기능 추가, 수정, 삭제
- 리팩토링
- 테스트 케이스 추가
- 오타 수정
- 문서 작업
- 배너 문구 수정 제안
- UI/UX 제안
→ 코드를 수정하는 작업이 아니어도 컨트리뷰션이 될 수 있음
컨트리뷰션 주의 사항
- 커뮤니케이션
- 기능 추가 전 이슈 오픈이나 디스커션으로 작업을 알리고 시작해야 함
- PR을 던질 때 템플릿이나 문서를 확인하며 준수할 내용 체크
컨트리뷰트 절차
- 오픈 소스 프로젝트를 Fork
- Fork해온 레포지토리를 로컬로 Clone
- 코드 컨벤션 확인
- 코드 구현, 수정 → 커밋
- 내 계정 깃허브 레포로 push
- 오픈 소스 프로젝트로 PR 요청
- Contributor License Agreement
- 검토
- merge
오픈소스 기여 장점
- 협업 능력
- 프로젝트 문해력
- 기획, 설계, 구현~테스트, 유지보수, 리팩토리, 운영
- 코드 분석
- 개발 문화 속 성장 경험
오픈 소스
- 사용 중인 오픈 소스 프로젝트에 추가 기능을 구현하여 PR 했을 때 반려 당한 경우
- 오픈 소스 fork해서 별도의 프로젝트로 직접 운영
- 기존 프로젝트 라이선스 지키기
오픈 소스 저작자 체크리스트
- Readme
- 프로젝트 만든 목적, 사용 용도
- 코드 사용 방법, 설치 방법
- Contributing
- LICENSE
- 중복되지 않는 명확한 프로젝트 이름
- 코드
- 클린 코드, 주석, 데드 코드 정리, 민감 정보 제외
오픈 소스 사용 시 체크리스트
-
오픈 소스 사용 전
- 오픈 소스에 대한 사전 기능 및 보안성 테스트
- 기능, 보안성, 이슈 현황 파악
- 취약점 확인, 기관에 검토 요청
- 라이선스 검토
-
오픈 소스 사용 중
- 취약점 최소화
- 대체 수단 확보
- 자체 대응 및 추가 개발 역량 확보
-
개발 후
- 모니터링
- 오픈 소스 보안 패치 적용
- 오픈 소스 종속성 검사
- 기능 및 보안성 테스트