[CS] 프로젝트에 어떤 라이선스를 적용해야 될까?
이번에 새롭게 프로젝트를 시작하게 되었다. 초반 프로젝트 구성을 위해서 이런저런 얘기를 하다가 라이선스에 대한 부분을 언급하게 됐는데, 사실 뭔가 라이선스 = 저작권? 이라는 정도로만 가볍게 이해하고 있었는데 조금 찾다보니 생각과는 다르게 적용이 되는것 같아 지난 학기 오픈소스 수업때 들었던 내용과, 이번에 찾아보는 내용들을 잘 정리해서 포스팅을 해보려 한다.
저작권과 라이선스
우리가 프로젝트에 적용할 라이선스를 정하기 위해서는 우선 헷갈리는 개념인 저작권과 라이선스에 대해 생각해볼 필요가 있다.
저작권
- 창작물을 만든 사람에게 부여되는 권리
- 창작물이 만들어지는 순간 자동으로 발생
라이선스
- 저작권자가 자신의 저작물을 타인에게 사용할 수 있도록 허락하는 계약
- 라이선스에는 저작권자가 허락하는 이용 범위, 조건, 기간 등이 명시되어 있음
- 라이선스는 저작권을 넘겨주는 것이 아니라, 저작물을 이용할 수 있는 권한을 허락하는 것
즉, 저작권은 창작물을 만든 사람에게 부여되는 권리이고, 라이선스는 저작권자가 자신의 저작물을 타인에게 사용할 수 있도록 허락하는 계약이라 할 수 있다.
참고로 라이선스를 선택하지 않더라고 저작권에 대한 부분은 저작권에 정리에 언급되었듯이 창작물이 만들어지는 순간 자동으로 발생하기 때문에 아무런 라이선스가 없다고 막 갖다쓰고 해도 된다고 볼 수는 없다.
라이선스의 종류
아마 다들 GitHub에서 프로젝트 레포를 생성할 때 기본적으로 라이선스를 선택할 수 있는 이러한 리스트를 본적이 있을것이다.
각각이 파생된 상위 라이선스 라인에 대해 알아보고, 주의점에 대해서도 알아보자.
MIT
MIT License는 MIT에서 해당 대학의 SW 공학도들을 돕기 위해 개발한 라이선스다.
라이선스와 저작권 관련 명시만 지켜주면 되는 라이선스로 가장 느슨한 조건을 가진 라이선스 중 하나기 때문에 인기가 많다.
특징
- 상업적 이용 가능
- 소스 코드 공개 불필요
- 저작권 표시 유지
- 파생물 배포 가능
- 저작권자는 저작물에 대한 책임을 지지 않음
추천 대상
- 빠르고 간단하게 프로젝트를 공개하고 싶을 때
- 소스 코드를 공개하지 않고 싶을 때
- 상업적 이용을 목표로 할 때
MIT License를 사용하는 대표적인 오픈 소스로는 React가 있다.
Apache
Apache License는 아파치 SW 재단 자체적으로 만든 라이선스이다. 소스코드에 대한 공개 의무 등의 의무사항은 없지만 아파치 라이선스의 소스코드를 수정하여 배포하는 경우 아파치 라이선스, 버전 2.0을 꼭 포함시켜야 하며 아파치 재단에서 만든 소프트웨어임을 밝혀야 한다.
특징
- 상업적 이용 가능
- 소스 코드 공개 불필요
- 저작권 표시 유지
- 파생물 배포 가능
- 특허권 침해 금지
- 저작권자는 저작물에 대한 책임을 지지 않음
추천 대상
- MIT 라이선스의 자유도를 유지하면서 특허권 침해를 방지하고 싶을 때
- 기업과의 협업이 예상될 때
Apache License를 사용하는 대표적인 오픈 소스로는 Swift가 있다.
GPL
아마 프로젝트를 진행하면서 여러 오픈 소스를 끌어다 쓸 경우 가장 유의깊게 봐야되는 라이선스가 되지 않을까 싶다.
Free Software Foundation(FSF)에서 만든 라이선스로 GNU 프로젝트로 배포하는 SW에 적용하기 위하여 Richard Stallman이 만든 라이선스이다.
가장 큰 특징은 FSF 답게 가장 강한 제약 조건을 포함하고 있는 Copyleft 조항. GPL 프로그램은 어떤 목적으로, 어떤 형태로든 사용할 수 있지만 사용하거나 변경된 프로그램을 배포하는 경우 무조건 동일한 라이선스 즉, GPL로 공개해야 한다는 강력한 조항이 담겨있다.
그렇기에 만약 프로젝트를 진행하면서 GPL 라이선스를 가진 오픈 소스를 사용하게 된다면 적용에 유의해야 된다 생각한다.
특징
- 상업적 이용 가능
- 소스 코드 공개 필수
- 저작권 표시 유지
- 파생물 배포 가능
- 저작물을 자유롭게 이용(복제, 배포, 수정…)할 수 있음.
- 저작권 침해 금지
- 저작권자는 저작물에 대한 책임을 지지 않음
추천 대상
- 저작물의 자유로운 이용과 배포를 확보하고 싶을 때
무엇을 적용해야 될까?
우리가 라이선스의 개념을 보면서 느꼈겠지만 라이선스를 적용할때는 저작자가 라이선스로 얻고 싶은 특징을 생각해야 되며, 또한 오픈 소스를 끌어다 쓸때는 파생자의 입장에서 해당 오픈 소스에 적용된 라이선스의 특징을 잘 이해하여 끌어다 써야 된다.
이번에 진행하게 되는 프로젝트는 아직 상업적 목표에 대한 부분은 자세히 파악하지 못했지만 본격적인 서비스를 진행하려는 프로젝트이다. 그렇기에 코드 공개가 강요되는 GPL보단 MIT와 Apache 중에 고민을 해봐야 된다 생각한다.
이 둘의 큰 차이점은
- MIT
- 파생물을 배포할 때, 라이선스 조건을 따른다면 어떤 라이선스를 적용해도 됨
- 특허 관련 조항이 없음
- Apache
- 파생물을 배포할 때, Apache 라이선스와 동일하거나 호환되는 라이선스를 적용해야 됨
- 특허 관련 조항이 있음
프로젝트를 진행하며 여러 오픈 소스를 끌어다 쓴다는 것이 중요하다면 라이선스 호환도가 높은 MIT 라이선스를, 저작물에 대한 특허 침해를 중시한다면 Apache를 적용하는 것이 좋을 것 같다. (그리고 GPL을 끌어오지 않았는지 유의하자)
참고 자료