공개 SW 라이센스 GPL, LGPL, BSD

알아두면 좋은 것들 2013.08.05 16:29

인터넷에 공개된 코드나 라이브러리 등을 보면 대부분 GPL 또는 LGPL 라이센스를 가지고 있는데, 개인적으로도 어떤 것인지 알아둬야 할 것 같아서 정리해 봅니다.



관련 링크


- GPL 전문(한국어 번역본): http://korea.gnu.org/documents/copyleft/gpl.ko.html

- GPL FAQ(한국어 번역본): http://www.gnu.org/licenses/gpl-faq.ko.htm

- LGPL 전문(한국어 번역본): http://korea.gnu.org/people/chsong/copyleft/lgpl.ko.html

- KLDP 오픈소스 SW 라이센스 가이드: http://wiki.kldp.org/wiki.php/OpenSourceLicenseGuide


GLP/LGPL 전문은 읽어봐도 내용이 어려워서 무슨 말인지 알기가 쉽지 않네요. 하지만 KLDP 가이드를 보면 여러 오픈소스 SW 라이센스(GPL/LGPL/BSD 등)들이 잘 비교 정리되어 있습니다.



GNU GPL(General Public License)


GPL은 Free Software Foundation(FSF)에서 만든 Free 소프트웨어 라이센스로 1989년 1차 버전, 1991년 2차 버전, 2007년 3차 버전까지 발표되었습니다.


기본적으로 어떤 프로그램을 개발할 때, GPL 코드를 일부라도 사용하게 되면 그 프로그램은 GPL이 됩니다. GPL을 가진 프로그램을 유료로 판매하는 것은 가능하지만, 반드시 전체 소스코드는 무료로 공개해야 합니다.


GPL 코드를 사용한 SW를 내부적인(개인, 기관, 단체 등) 목적으로만 사용할 때에는 소스코드를 공개할 필요가 없지만 어떤 형태로든(유료든 무료든) 외부에 공표/배포할 때에는 전체 소스코드를 공개해야 합니다.


예를 들어, GPL 코드를 수정하거나 일부 사용하여 프로그램을 개발했습니다. 이제 개발된 프로그램을 개인적으로 혹은 기관, 단쳬 내부적으로만 사용하자고 하면 코드를 공개할 의무는 없으며 그냥 사용하면 됩니다. 그런데 이 프로그램을 외부에 공개하거나 판매하고자 할 경우에는 반드시 GPL 규정에 따라서 프로그램의 전체 소스코드를 무료로 공개해야 합니다.


전체 소스코드를 무료로 공개하면서 프로그램을 유료로 판매하는 것이 얼핏 이해가 안가지만, 개발자가 아닌 일반 소비자 입장에서는 충분히 구매할 수 있다고 생각됩니다. 그리고 기관 등에 프로그램을 판매할 때에는 단순한 소스코드가 아닌 시스템 구축, 관리, 유지보수 등 토탈 솔루션을 판매한다고 생각할 수 있습니다. 이러한 것들은 아무리 소스가 공개되어 있어도 비전문가가 하기 힘든 일이기 때문입니다.


그런데, 코드를 공개하면 다른 개발자가 이를 기반으로 좀더 개선된 버전의 제품을 개발하여 판매할 수도 있을 것입니다. 일견 억울할 수도 있겠네요..


GPL 관련하여 한가지 햇갈리기 쉬운 점이 있는데, 그건 자신이 개발한 SW에서 GPL 코드를 일부만 사용한 경우입니다.


GPL 전문에 보면, '만일 배포하고자 하는 프로그램의 특정 부분이 GPL 코드로부터 파생된 것이 아닌 독립적인 저작물일 경우에는 독립 저작물 모듈의 개별적인 배포에는 GPL이 적용되지 아니한다 (즉, 코드를 공개할 필요가 없다). 하지만 프로그램을 전체(GPL코드에서 파생된 모듈 + 독립 저작물 모듈)적으로 배포할 때에는 GLP을 따라야 한다.' 고 되어 있습니다.


결론적으로, 'GPL과 관련되지 아니한 부분만 독립적으로 팔거나 배포하는 경우는 관계가 없다. 하지만 GPL 코드를 일부라도 사용한 프로그램 전체를 배포할 때에는 GPL을 적용(즉, 프로그램의 전체 소스코드 공개)해야 한다'는 말이겠네요.. 상당히 강도가 세군요..


기타 세부적인 내용에 대해서는 GPL 전문과 GPL FAQ를 참조하시면 좋습니다. 특히 GPL FAQ를 읽어보면 GPL을 이해하는데 도움이 많이 됩니다.


GPL 전문에 있는 '보통의 소프트웨어 라이센스들이 SW에 대한 공유와 수정의 자유를 제한하려는 목적을 가진 반면에 GPL은 공유와 수정의 자유를 보장하기 위한 규정이다'라는 말이 꽤나 인상적이네요..



GNU LGPL(Lesser General Public License)


LGPL은 GPL보다는 훨씬 완화된(lesser) 조건의 공개 소프트웨어 라이센스입니다.


가장 큰 차이점은 LGPL 코드를 정적(static) 또는 동적(dynamic) 라이브러리로 사용한 프로그램을 개발하여 판매/배포할 경우에 프로그램의 소스코드를 공개하지 않아도 된다는 점입니다. LGPL 코드를 사용했음을 명시만 하면 됩니다.


단, LGPL 코드를 단순히 이용하는 것이 아니라 이를 수정한 또는 이로부터 파생된 라이브러리를 개발하여 배포하는 경우에는 전체 코드를 공개해야 합니다.



BSD (Berkeley Software Distribution) 라이센스


소스코드 공개의 의무가 없으며 상용(상업적) 소프트웨어에서도 무제한 사용 가능한 라이센스라고 하는데.. 그렇다면 아무런 제한이 없는 라이센스라는 의미겠네요.


참고로 OpenCV는 BSD 라이센스를 따릅니다. GPL 정신에는 맞지 않겠지만 쓰는 사람 입장에서는 정말 편하네요..



GNU


문득 GNU는 무엇의 약자일까? 하는 궁금증이 생겨서 같이 찾아보았습니다.


"GNU's Not Unix"의 약자라는군요. gnu는 unix가 아니다.. ㅡ.ㅡ

이런 것을 재귀약자라고 한다네요.

참고로 아프리카 영양중에 gnu(누~ 라고 발음)라는 것이 있는데, 이것과 구분하여 GNU는 '그누~'라고 발음한답니다. 그리고 GNU 홈페이지(http://www.gnu.org/)에 가보면 이 영양 머리모양을 마크로 하고 있음을 알 수 있습니다.


by 다크 프로그래머


저작자 표시 비영리 변경 금지
신고

'알아두면 좋은 것들' 카테고리의 다른 글

Visual Studio 버전  (6) 2014.03.17
참고 자료들  (3) 2014.03.11
여러 장의 이미지를 pdf로 만드는 간편한 방법  (18) 2013.09.26
공개 SW 라이센스 GPL, LGPL, BSD  (13) 2013.08.05
  • 수제자 2013.09.26 12:56 신고 ADDR 수정/삭제 답글

    항상 헷갈렸던 부분인데.. 좋은 정보 감사합니다. ^^

    • BlogIcon 다크pgmr 2013.09.26 14:17 신고 수정/삭제

      저도 애매했던 부분인데 한번 글로 정리하고 나니 이제는 안 햇갈리네요.

  • BlogIcon 정현 2014.12.02 21:42 신고 ADDR 수정/삭제 답글

    GPL 규정에서 공개된 소스코드를 사용하지 않고 그 개념을 직접 코딩해서 구현해도 오픈소스로 공개를 해야 하나요?

    • BlogIcon 다크pgmr 2014.12.04 16:15 신고 수정/삭제

      저도 정확한 것은 모릅니다. 하지만 일종의 포팅이기 때문에 동일하게 적용될 것 같습니다.

    • 김우현 2014.12.18 17:57 신고 수정/삭제

      직접 개발한 드라이버들은 kernel에 넣으면 이 또한 GPL에 의해 공개를 해야 합니다. GPL 규정상 공개된 소스코드를 사용하냐 안하냐와는 별개로 말이죠. 그래서 보통 공개를 꺼려하는 내용은 HAL에서 작업합니다. HAL을 통해 Hardware를 직접 Control 하면서 GPL 규정에는 포함되지 않기 때문에 공개할 의무가 없기 때문이죠.

  • 송영숙 2015.08.04 20:32 신고 ADDR 수정/삭제 답글

    안녕하세요

    커널 함수나 베이지안, 그리고 오늘은 GPL 등 많은 도움 받아서 글 남깁니다. 깔끔한 정리 감사합니다.

  • 라이센스 어려워 2015.08.10 17:32 신고 ADDR 수정/삭제 답글

    GPL/BSD 개념도 어렵지만,
    해당 코드가 어떤 라이센스가 적용있는지, 혹은 아예 안적용되어있는지를 찾는것도 만만치 않네요..

  • 제로스 2016.03.17 16:03 신고 ADDR 수정/삭제 답글

    음.. 한가지 헷갈리는 게 있는데요. LGPL은 전문에 따르면 자유도를 GPL보다 경감시켰기 때문에 약소(Lesser)가 붙는다고 되어있는데 작성자님이 작성한 글에는 자유도가 완화되었기 때문에 LGPL이라는 이름이 붙었다고 되어있네요.. 완화라는 말을 제가 잘 이해 못하고 있는건가요..

    • BlogIcon 다크pgmr 2016.03.17 19:56 신고 수정/삭제

      좀더 이해하기 쉽게 의역한 것이라 보시면 됩니다. 그리고 제 글에서는 자유도가 아니라 조건을 완화시킨 것이라 표현했습니다..

  • 모모 2017.01.03 14:35 신고 ADDR 수정/삭제 답글

    안녕하세요, GPL 검색하다 이 포스트 보고 가요.
    궁금했는데 GPL에 대해 이해하기 쉽게 풀어 써주셨네요. 감사합니다.



티스토리 툴바