Logo

오픈 소스 라이선스 가이드

혹시 오픈 소스 프로젝트를 시작하시면서 어떤 라이선스를 선택할지 몰라서 고민해본 적이 있으신가요? 깃허브에서는 코드 저장소를 생성할 때 항상 어떤 라이선스를 사용하지 물어보죠.

이번 포스팅에서는 MIT, Apache, GPL 등 널리 사용되는 오픈 소스 라이선스를 소개해드리고, 각 라이선스를 언제 선택하면 좋은지 알아보겠습니다.

오픈 소스 라이선스란?

오픈 소스 라이선스는 오픈 소스 소프트웨어가 어떻게 사용될 수 있는지 명시해주는 문서입니다. 개발자는 오픈 소스 라이선스를 통해서 소프트웨어의 소스 코드를 사용, 수정, 배포할 수 있도록 허용하면서도 제한 조건을 걸 수가 있습니다. 오픈 소스 라이선스는 소프트웨어 저작권을 법적으로 보호해줄 뿐만 아니라 소프트웨어 사용자의 법적 위험도 낮춰주는 효과가 있습니다.

라이선스는 크게 두 가지 유형으로 나뉩니다:

  1. Permissive (관대한) 라이선스
  • 사용자가 소스를 자유롭게 사용하고, 변경하고, 배포할 수 있음
  • 보통 저작권 고지만 유지하면 됨
  • 예: MIT, Apache, BSD
  1. Copyleft (카피레프트) 라이선스
  • 소스를 변경한 후 배포할 경우, 동일한 라이선스를 유지해야 함
  • 오픈 소스 생태계를 보호하는 역할
  • 예: GPL, LGPL

라이선스를 선택하지 않는다면?

많은 분들이 라이선스 선택이 어려우시다고 아예 라이선스를 선택을 포기하시는데요. 이럴 경우, 암묵적으로 소프트웨어 작성자에게 100% 독점적인 저작권이 주어집니다.

다시 말해서, 라이선스가 없는 소프트웨어는 법적으로 다른 누구도 사용, 복사, 수정, 배포를 할 수 없습니다. 이는 애초에 깃허브와 같은 플랫폼에 코드를 공개해놓고 오픈 소스 프로젝트를 하려는 목적과 완전히 상반되는 것이죠.

라이선스가 명시되지 않은 소프트웨어는 개인이든 회사든 사용을 기피합니다. 굳이 불필요한 법적 위험을 감수하면서 라이선스가 없는 소프트웨어를 쓸 이유가 없기 때문이죠.

MIT 라이선스

MIT 라이선스는 매사추세츠공과대학(MIT)에서 학생들을 위해 개발한 라이선스입니다. 가장 간단하고 관대한 오픈 소스 라이선스라서 특별한 제한 없이 소스 코드를 공유하고 싶은 경우 많이 사용합니다.

  • 자유롭게 사용, 수정, 배포 가능
  • 상업적으로 활용 가능
  • 변경 후 소스코드를 비공개로 유지 가능
  • 저작권 고지를 유지해야 함

MIT 라이선스 수준으로 관대한 오픈 소스 라이선스 중에 BSD(Berkeley Software Distribution)와 ISC(Internet Systems Consortium)도 있습니다.

특히 MIT와 ISC는 모든 프로그래밍 언어를 통털어 가장 활발한 오픈 소스 생태계를 자랑하는 JavaScript의 패키지에서 유독 많이 볼 수 있습니다.

Apache 2.0 라이선스

Apache 라이선스는 아파치 소프트웨어 재단에서 자체 소프트웨어에 적용하기 위해 만든 라이선스입니다. MIT 라이선스와 유사하지만 특허 보호 조항이 포함되어 있어서, 특허 보호가 중요한 기업 프로젝트에서 선호합니다.

  • 자유롭게 사용, 수정, 배포 가능
  • 상업적으로 활용 가능
  • 변경한 내용이 있을 경우 명시해야 함
  • 특허 보호 기능 포함 (기업용 프로젝트에 적합)

GPL 라이선스 (v2, v3)

GPL(General Public License)은 카피레프트(Copyleft) 성격을 가지며, 변경 후에도 반드시 오픈 소스로 공개해야 합니다. 따라서 폐쇄형 소프트웨어와 결합이 불가능하며 순수한 오픈 소스 프로젝트에 적합합니다. 많은 사용자를 확보하기 보다는 오픈 소스 프로젝트 보호가 중요한 경우에 사용합니다.

  • 자유롭게 사용, 수정 가능
  • 상업적 사용 가능
  • 변경 후에도 동일한 GPL 라이선스로 배포해야 함
  • GPL 소프트웨어를 사용하면 프로젝트 전체를 공개해야 함

GPL과 유사한 오픈 소스 라이선스로 LGPL이 있는데요. GPL은 프로젝트 전체를 오픈 소스로 유지해야 하지만, LGPL은 라이브러리 형태로 사용하거나 링크 시에는 프로젝트를 비공개할 수 있다는 차이가 있습니다.

어떤 라이선스를 선택해야 할까?

오픈 소스 프로젝트를 막 시작하는 입문자들에게는 MIT 라이선스가 가장 무난한 선택이 될 것입니다. 제약 사항을 두기 보다는 최대한 자유로운 사용을 허락하는 편이 빠르게 사용자를 늘리는데 유리하기 때문입니다.

만약에 특허 보호가 필요한 상업 프로젝트나 오픈 소스에 기여하면서도 법적 보호가 필요한 경우에는 Apache 2.0을 추천드립니다.

오픈 소스의 본연의 가치를 중요시하는 프로젝트에서는 GPL이나 LGPL과 같은 카피레프트 라이선스 적합할 것입니다.

회사에서 진행하는 오픈 소스 프로젝트의 경우에는 반드시 사내 법무 팀과 상의하여 라이선스를 선택해야할 것입니다.

오픈 소스 라이선스 적용 방법

오픈 소스 라이선스는 코드 저장소의 LICENSE 또는 COPYING 파일에 명시하는 것이 가장 일반적입니다. 라이선스가 명시된 파일은 반드시 프로젝트 최상위 경로에 위치시켜 쉽게 접근할 수 있도록 합니다.

패키지 저장소에 발행되는 라이브러리나 프레임워크의 경우 메데데이터에 라이선스 정보를 포함시킵니다. 예를 들어, 자바스크립트 패키지의 경우 package.json 파일에 license 항목에 라이선스를 명시해야 합니다.

package.json
{
  "name": "my-project",
  "license": "MIT"
}

마치며

지금까지 오픈 소스 라이선스가 무엇이고 어떤 라이선스를 선택해야하는지 안내해드렸습니다. 적절한 라이선스를 선택하는 것은 오픈 소스 프로젝트의 방향과 성패를 좌우한느 중요한 과정입니다.

꼭 오픈 소스에 직접 기여 활동을 하지 않으시더라도 현대 소프트웨어 개발에서 오픈 소스를 쓰지 않는 프로젝트는 상상하기 힘들죠? 개발자로서 오픈 소스 라이선스에 대한 기본적인 지식을 갖추시면 라이브러리나 프레임워크를 선택하실 때도 도움이 될 거라 생각합니다.