SUZ!E logo

Open Source Project

31 May 2019

오픈소스가 도대체 뭐고 왜 해야되는거냐 라고 묻다가 네이버 오픈소스 가이드라는 오픈소스에 대해 설명해놓은 좋은 문서를 발견했다. 사실은 내가 보려고 네이버 오픈소스 가이드 문서를 축약해놓은 형식의 글이라고 보면 되겠다.

오픈소스 라이선스

우리가 아는 오픈소스의 종류에는 Linux (운영체제), chromium (브라우저), Bootstrap (반응형 웹 프런트엔드 플랫폼), Tomcat (웹 애플리케이션 서버) 등이 있다. 오픈소스에는 저작권이 있을까 없을까? 정답은 바로 '있다'. 오픈소스에서는 저작권자가 소스 코드의 사용 범위와 사용자 의무 사항을 라이선스에 명시해 둔다. 라이선스를 확인하고 사용해야 저작권을 침해하지 않는다. 그렇다면 오픈소스 라이선스의 주요 요구사항에는 무엇이 있는지 알아보자.

  1. 저작권, 개발자 및 컨트리뷰션 정보 표시
  2. 소스 코드를 수정한 정보의 표시
  3. 라이선스 정보의 제공 (해당 라이선스의 사본을 함께 첨부)
  4. 동일한 라이선스로 재배포 (copyleft 조항 포함하는 라이선스)
  5. 소스 코드의 제공 (copyleft 조항 포함하는 라이선스)

오픈소스 라이선스는 어디서 어떻게 확인해야할까? 별도의 홈페이지가 있는 경우에는 LICENS 메뉴, 소프트웨어 설명 내 표기, 소스 코드 내 COPYING 문서, README 문서, 소스 코드 내 주석을 살펴보자. GitHub 저장소가 있는 경우에는 README 문서, 소스 코드 내 COPYING 문서, LICENSE 문서, 소스 코드 내 주석을 살펴보자. 검색으로 찾은 소스코드인 경우(Stack Overflow)에는 소스 코드 내 주석 또는 개발자의 답변을 살펴보면 오픈소스 라이선스를 확인할 수 있을것이다.

컨트리뷰션 시작하기

컨트리뷰션은 오픈소스 프로젝트에 참여하고 기여하는 모든 활동을 말한다. 컨트리뷰션의 유형으로는 소스 코드 수정, 오타 수정, 번역 (예: README 문서를 영어에서 한글로 번역해 Pull request 요청), 가이드 문서(튜토리얼) 작성, 디자인 작업 (로고 제작 등), 의견제시 (예: 이슈 관리 방법에 대한 의견 제시), 기타 (프로젝트의 스타일 가이드 작성, 중복 이슈 처리)등이 있다.

컨트리뷰션 활동을 하면 사용하던 오픈소스에 불편한점 또는 버그가 있어 개선했을 때 사용할 때마다 추가 패치 작업을 해야하는 번거로움을 피할 수 있다. 또 전세계 개발자에게 멘토링 받을 수 있으므로 영어실력과 개발 실력을 향상 시킬 수 있다. 본인의 역량 노출시키고 이력서에 활용하므로 홍보 수단으로 활동이 된다. 모두에게 공개되는 소스 코드 이므로 더 수준 높은 코드 품질을 고민하게 되어 문제에 접근하는 시야가 넓어질 수 있다.

컨트리뷰션 전에 오픈소스 프로젝트의 구조에 대해서 알아보자. 오픈소스 프로젝트 구성원의 역할은 무엇인지, REDME 문서는 무엇인지, 어떻게 커뮤니케이션 하는지 등을 먼저 알아보면 컨트리뷰션 활동을 더 편리하게 할 수 있을것이다.

오픈소스 프로젝트 구성원의 역할

사용자: 프로젝트를 사용하는 사람 컨트리뷰터: 프로젝트에 컨트리뷰션 활동을 하는 모든 사람 커미터: 다른 사람의 컨트리뷰션 내용을 리뷰하고 프로젝트에 반영할 권한을 가진 컨트리뷰터 메인테이너: 프로젝트의 방향을 설정하고 프로젝트를 관리하는 책임이 있는 컨트리뷰터 저작자: 프로젝트를 만든 사람 또는 조직

오픈소스 프로젝트의 기본 문서

README 문서: 프로젝트의 목적과 사용 방법을 설명하는 문서 LICENSE 문서: 오픈소스 라이선스를 명시한 문서 CONTRIBUTING 문서: 프로젝트에 어떻게 컨트리뷰션 활동을 할 수 있는지 설명한 문서

오픈소스 프로젝트에서 커뮤니케이션 방식

이슈 트래커 Slack 또는 IRC 같은 실시간 채팅 채널 사용 Github - Pull request 메일링 리스트 등 여러가지 방식이 있으니 미리 확인해보자.

오픈소스 찾기

GitHub의 Explore 메뉴: 유형별 오픈소스 및 최신 경향 오픈소스 확인 가능 Your First PR: 첫 컨트리뷰션으로 시도하기 좋은 이슈 등을 볼 수 있다. CodeTriage: 처리할 이슈가 있는 오픈소스를 언어에 따라 찾아 볼 수 있다.

오픈소스를 찾을 때 하면 좋은 질문

오픈소스 라이선스 하에 배포된 프로젝트인가 커뮤니티가 적극적으로 컨트리뷰션을 수용하는가 커뮤니티가 새로운 사람들에게 우호적인가

컨트리뷰션 시 주의 사항

작업하려는 내용이 이미 진행된 적이 있는지 확인하기 기존에 있는 이슈를 수정하고자 할 때는 다른 사람들이 알 수 있게 이슈에 의견 달기 규모가 큰 중요 기능을 개발할 때는 개발 시작 전에 공유하기 작업한 결과물을 프로젝트에 적용해달라고 요청할 때는 프로젝트의 컨트리뷰션 가이드를 준수하고 있는지 확인하기 커뮤니티에서 커뮤니케이션을 할 때는 예의를 지켜 본인 의사 전달을 공개적으로 명확히 하기

오픈소스 프로젝트 공개하기

오픈소스로 프로젝트를 공개하는 이유는 무엇일까? 오픈소스 라이선스 의무를 지키기 위해 (라이선스 조항에 따라 산출물로 나온 소프트웨어의 소스 코드를 공개해야하므로), 더 나은 소프트웨어로 성장하기 위해 (외부 개발자들과 함께 문제를 공유하고 해결하므로써 소프트웨어의 품질을 높인다), 사회 공헌을 위해서 같은 이유들이 있겠다.

소스 코드의 완성도와 관계없이 오픈소스 프로젝트를 공개할 때에는 README 문서와 LICENSE문서를 갖추어야한다.

Github에서 README 문서를 만드는 방법은 Commit your first change에서, 라이선스를 선택하고 적용하는 방법은 Licensing a repository에서 확인할 수 있다.

README 문서는 사람들이 프로젝트를 발견했을 때 처음 접하는 문서인만큼 프로젝트의 목적 및 용도, 프로젝트를 시작하는 방법, 저작권, 라이선스 정보, 외부 리소스 정보, 컨트리뷰션 진행 방법등을 담는것이 좋다.

README 문서를 갖추었으면 프로젝트에 적합한 라이선스를 고르자. 오픈소스가 다른 프로젝트에서 사용되기를 바란다면 오픈소스가 가장 많이 사용하는 라이선스를 채택하는것이 좋다. 오픈소스를 기업이 사용하기 바란다면 특허에 관한 내용이 포함되어 있는 라이선스를 채택하는 것이 좋다. 만약 아무 고려할 내용이 없다면 MIT 라이선스로 시작하는 것이 가장 간단하다.