Github license의 종류와 나에게 맞는 라이선스 선택하기
Github Docs — Licensing a repository를 읽으며 쓴 글입니다.
남들은 잘 아는 것 같지만, 사실 저는 저 많은 라이센스가 어떤 뜻을 의미하는 지 잘 모릅니다. 주말을 이용해서 간단히 무언가 만들어보려했는데, 레포를 생성하려고 보니 라이센스 선택하는 항목이 눈에 띄었습니다.
뭔가 MIT를 선택하면 있어보일 것 같기도 합니다. 유료서비스(회사)를 개발하는 곳에서는 라이브러리 쓸 때 오픈소스의 라이센스를 잘 확인해야한다는 이야기는 종종 들었던 것 같습니다. 오픈소스의 라이센스에 따라서 회사의 소스를 공개해야할 수도 있다고 들었거든요!
마침 github에서 라이센스 선택과 관련되 글이 있길래 간단하게 정리해보려고 합니다 ✍️
라이선스는 ‘해야할 것’과 ‘하지 말아야할 것’에 대한 약속
LICENSE.txt, LICENSE.md, README.md 파일에 라이선스의 종류와 내용을 적게 된다.
Github 문서에 의하면, 라이센서가 없으면 기본 저작권법이 적용되지만, 라이센스를 선택하게 됨으로써 코드의 모든 권리는 내가 가지고 다른 사람이 내 코드를 복제, 배포, 재생산을 할 수 없으니 오픈소스 프로젝트는 오픈소스 라이센스를 선택하라고 권장하고 있습니다.
오픈소스의 라이선스는 레포의 root에서 LICENSE.txt, LICENSE.md 같은 파일에 기술합니다. 예시 파일은 이 곳에 있더라고요!
또는 README.md 파일에서 “This project is licensed under the terms of the MIT license.”
이런 식으로 기술함으로서 라이선스를 명시합니다.
라이선스를 선택하지 않으면 어떻게 될까?
이 문서를 살펴보면 도움이 될 것 같습니다.
기본적으로 GitHub에 public 레포로 공개된 오픈소스라면 fork가 가능합니다. GitHub 이용약관에 fork가 가능하도록 한다는 약관에 동의하긴 한거니까요. 하지만 fork가 기능적으로 가능하다고 해서 유저들이 그 소스를 어떤 목적으로든 사용, 수정, 공유할 수 있다는 뜻은 아닙니다.
무조건 사용을 못하게 되는 경우가 좋은 것일까요? 아닐 겁니다. 내가 만든 오픈소스가 널리 널리 사용되고, 또는 누군가 수정을 할 수도 있고, 내 코드를 기반으로 훨씬 좋은 코드가 새로 태어나길 원한다면 라이선스를 명시해서 이용자에게 좀 더 정확한 정보를 전달하는 것이 필요합니다. 반대로 내 코드를 어느 정도의 사용/공유는 허용하되, 특정한 경우에는 사용을 제한하고 싶다면 그에 맞는 라이선스 명시가 필요합니다.
라이선스를 선택하지 않는다고해서 저작권을 보호받지 못하는 것은 아니지만, 오픈소스라는 특징을 생각해볼 때 적합한 라이선스를 고르는 것은 중요합니다.
알아두면 좋은 라이선스들
정말 상세하게 알고 싶다면 이 사이트를 참고하면 도움이 됩니다.
BSD
소스코드를 공개하지 않아도 되는 라이선스, 저작권을 명시해야합니다. Nginx의 라이선스가 BSD입니다.
🔥 GPL
사용하고 싶은 오픈소스의 라이선스가 GPL이라면 주의를 기울여야합니다. 내가 코드를 작성할 때 GPL코드를 일부라도 사용하면 내 프로그램은 GPL 라이선스를 적용받고, 프로그램은 유료로 판매할 수 있지만 전체 소스코드는 무료로 공개를 해야합니다.
예를 들면, Github star 31k에 빛나는 fullPage.js 같은 경우에는 라이선스가 GPL이기 때문에 fullPage를 회사에서 작업할 때 사용하고자 한다면 그 레포의 전체를 공개해야합니다. 😨
상업적인 용도로 사용은 할 수 있지만 코드를 공개해야하기 때문에 회사에서 라이브러리를 채택할 때는 반드시 어떤 라이선스가 있는지 미리 체크해야합니다.
MIT
React가 MIT 라이선스입니다. 라이선스 및 저작권을 명시해야하고, 상업적, 사적으로도 이용이 가능하고, 수정/배포/특허 신청이 가능합니다. 제약조건이 상당히 느슨한 편이어서 많은 오픈소스들이 MIT라이선스를 선택했습니다.
프론트엔드 3대장인 React, Angular, Vue 모두 MIT 라이선스입니다. 떠오르는 라이징스타인 Svelt 역시 MIT 라이선스입니다.
내가 오픈소스를 만들었지만, 이걸로 다른 사람들이 상업적 이용을 하길 원하지 않는다면 MIT 라이선스를 선택하면 안되는 것이죠!
Apache
아파치 재단에서 만든 라이선스입니다. 구글이 안드로이드 오픈소스프로젝트의 기본라이선스를 Apache 2.0으로 선택했기 때문에, 대부분의 안드로이드 소프트웨어는 Apache 2.0 라이선스가 적용됩니다. 궁금해서 찾아보니 Kotlin도 Apache 2.0 라이선스라고 적혀있는데 license 파일에 각 사항마다 어떤 라이선스가 적용되는지 적혀있었고, BSD 라이선스도 있었습니다.