GNU 일반 공중 사용허가서

From Hidden Wiki
Jump to navigation Jump to search

[include(틀:다른 뜻1, other1=동남아시아의 前 리그 오브 레전드 리그, rd1=Garena Premier League)]

[목차]

개요

GNU General Public License. 줄임말은 GNU GPL 또는 GPL.

자유 소프트웨어 재단([[1]])에서 만든 오픈 소스 소프트웨어를 위한 라이선스다. 리처드 스톨먼이 변호사들과의 협의를 통해서 만들었다고 한다. 현재 버전은 3.0이며, 이와 비슷한 것은 크리에이티브 커먼즈 라이선스가 있다.[* 단, CC에서도 프로그램 소스에는 GPL이나 MIT 허가서/BSD 라이선스 등 다른 오픈 소스 라이선스를 쓰도록 권한다. 법적인 해석이 명확하지 않은 CC보다는 법적 해석이 더 명확하기 때문.] 그러나 사용에 대한 전염성 조항 때문에 CC BY-SA보다 제약이 크다. GPL과 GFDL, CC BY-SA는 서로 전혀 호환되지 않는다.

주요 조항

특히 굵게 표시한 것은 GPL의 주요 특징인 '전염성'에 관한 부분이다.

1. 컴퓨터 프로그램을 어떠한 목적으로든지 사용할 수 있다. 다만 법으로 제한하는 행위는 할 수 없다.
1. 컴퓨터 프로그램의 소스 코드를 용도에 따라 변경할 수 있다.(개작 가능)
1. 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스 코드를 무료로 배포해야 한다.(원본 배포 전염성)
1. 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 반드시 공개 배포해야 한다.(파생물 배포 전염성)
1. 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이선스를 취해야 한다. 즉 GPL 라이선스를 적용해야 한다.(파생물 라이선스 전염성)

전염성

특히 저 전염성 조항이 문제인데, GPL 라이선스를 따르는 소스 코드를 (일부라도)[* '컴파일할 때 GPL 코드가 필요한 경우'라고 정의하고 있다. 즉, 단 한 줄만 베꼈더라도 해당 부분을 지웠을 때 컴파일 에러가 난다면, 그건 GPL을 가져다 쓴 거다.] 가져다 쓰거나 GPL 소프트웨어에 기능을 연결할 경우 무조건 스스로도 GPL을 따라야 하는 무시무시한 조항이다. 마이크로소프트에서는 이건 바이러스나 다름없다며 맹비난한 바 있고, GPL3에 와서는 하드웨어에까지 강제력을 주장[* 개발한 기기의 SW가 GPL의 조항을 모두 따르더라도 만일 이용자가 하드웨어에 개조된 별도 SW를 올려 구동시켰을 때 하드웨어가 실행을 거부(DRM)한다면 위반이라는 조항. 이처럼 수정된 SW의 하드웨어 구동을 막는 것을 Tivoization이라 한다.]하여 리눅스 진영의 리누스 토르발스에게 격한 반발을 사는 등 충돌이 있었다.[* [최고의 리눅스 프로그래머들의 비난을 받다]][* [둘러싼 공방, 누구 말이 맞나]] 이후 의견 조정 과정을 거쳐 갈등은 봉합되었다.[* [소프트웨어 재단, GPL3 공개]]

GPL 소프트웨어에 연결되어 기능을 사용만 해도 전염성이 발생하는 특성상 재미있는 문제가 있었는데, 리눅스 배포판처럼 운영체제 자체가 GPL일 경우, 운영체제가 제공하는 기능(API)를 이용할 수 밖에 없는 리눅스 기반의 모든 소프트웨어는 강제적으로 GPL을 따라야 하는가에 대한 문제이다. 이에 대해 운영체제의 API를 사용하는 경우는 전염성에 해당되지 않는다는 예외가 생겼으나, 아예 커널에 붙어 동작해야 하는 드라이버 같은 경우 문제가 될 수 있다. 리눅스 커널에 정적으로 링크된 소스 코드가 있으면 해당 드라이버에 전염성이 발생할 것이기 때문이다.

GPL 소프트웨어의 출력물은 전염성의 영향을 받지 않는다. 대표적으로 GCC에는 GPL3 라이선스가 적용되어 있지만, GPL이 적용된 소스 코드 혹은 라이브러리만 없다면 GCC로 컴파일을 해도 그 결과물은 GPL을 따르지 않으며, GCC 헤더 파일[* stdio.h, iostream 등의 표준 헤더 파일]과 GCC 런타임 라이브러리도 (수정을 가하지 않을 경우) GPL 라이선스가 적용되지 않는다.[* [Runtime Library Exception]][* 이 예외조항을 가진 런타임 라이브러리에는 libgcc, libstdc++, libfortran, libgomp, libdecnumber 등이 있다.] 그리고 어떤 워드 프로세서가 GPL 소프트웨어라고 해서 그걸로 작성한 문서를 공개해야 하는 것은 아니다. GPL은 어디까지나 '소스 코드 사용'에 영향을 주는 것이다. 참고로 GCC 4.2.2 버전부터 BSD 라이선스와 호환이 불가능한 GPL3가 적용되자[* GPL3의 Tivoization 방지 조항이 문제였다.], FreeBSD애플은 빠르게 GCC를 버리고 LLVM/Clang으로 컴파일러를 교체하였다.

GPL 코드는 사용하고 싶지만 내가 작성한 코드에 GPL이 묻는 걸(...) 방지하고 싶다면, 두 코드를 서로 다른 프로세스에서 돌도록 구현하고 두 프로세스가 통신을 통해 값을 주고받는 약간 비효율적인 방법을 사용해야만 한다. 그렇다고 하더라도 GPL 부분에 대한 수정사항을 공개해야 하는 것은 변하지 않는다. 안드로이드가 이런 식으로 구현되어 있는데, 리눅스 커널과 구글이 작성한 안드로이드 프레임워크는 다른 공간에서 동작하며, 안드로이드 쪽은 아파치 라이선스를 따르기 때문에 제조사들이 코드 공개의 위험 없이 안드로이드 기기를 개발할 수 있다. 심지어 커널부 수정이 필요한 경우에도 커널엔 단순히 값을 받아오게만 구현하고 실제 계산은 윗단에서 다 해서 커널로 내려주는 식으로 구현하여 핵심 코드 공개를 피하는 꼼수를 쓰는 기업들도 많다.

GPL 소프트웨어의 소스 코드는 해당 소프트웨어의 사용자에게 배포해야 한다. 배포 방법은 FTP이메일이든 DVD든 딱히 제약이 없으나, 불특정 다수에게 공개한 프로그램이라면 소스 코드 역시 불특정 다수에게 공개해야 한다. 원칙상으로는 사용자가 아닌 대상에겐 배포의 의무가 없고 배포 시기는 '사용자가 요구할 때'이지만, 그 사용자가 제3자에게 해당 소프트웨어를 재배포하는 것은 막을 수 없으며[* 이 경우 제3자도 해당 소프트웨어의 '사용자'가 되어 소스 코드를 제공받을 권리가 생긴다.] 각 사용자마다 일일이 소스 코드를 배포하는 것은 비효율적이다. 또한 '사용자가 요구할 때'라는 것은 요구가 없으면 조용히 입 닫고 있는 수동적 조치가 아니라, 사용자가 원하면 언제든지 소스 코드를 제공받을 수 있도록 별도의 안내문과 연락처를 적어놓는 등의 능동적 조치를 행하라는 말이다. 결과적으로 양쪽 모두에게 편리한 웹사이트 공개 다운로드를 통해 배포하는 것이 일반적이다.[* 주로 GitHub가 사용된다.]

MIT 허가서아파치 라이선스 같은 기타 많은 오픈 소스 라이선스들은 이와 같은 전염성 조항을 제거하였으며, 현재는 이러한 라이선스의 비중이 GPL 계열보다 많아지고 있다. 하지만 오래되고 강력한 소프트웨어들이 처음 개발될 당시 GPL로 개발된 것이 많아 아직 그 영향력은 막강하다.

자매품

자매품으론 GNU 약소 일반 공중 사용 허가서(GNU Lesser General Public License, LGPL. 예전엔 GNU Library General Public License라는 이름이었다.)와 더불어 문서에 써먹을 수 있는 GNU 자유 문서 사용 허가서(GNU Free Documentation License, GFDL)가 있다. GFDL은 문서에 대한 GPL로 볼 수 있으며, 위키백과라이선스이기도 하였다.

LGPL은 GPL과는 달리 사용에 대한 전염성 강제 조항은 없으므로 GPL보다 CC BY-SA에 더 가깝다 할 수 있다. 해당 소스를 사용할 때는 프로그램을 재배포할 의무가 없지만 소스를 수정하는 경우에는 재배포 의무가 전염된다는 뜻. 때문에 LGPL은 원형 그대로 사용할 수 있는 라이브러리에서 많이 사용한다.[* 원본 그대로 사용하면 원본에 대해 링크를 제공하는 것 만으로도 라이선스를 지킬 수 있으나, 수정이나 파생 작업이 이루어지면 수정한 소스까지 모두 배포해야 하므로 GPL과 다를 바가 없어진다. 때문에 파생 프로그램은 보통 GPL로 배포한다. 또한 일부 라이브러리는 GPL로만 배포하기도 하며, 가이드라인 준수 조건 하에 이중 라이선스를 적용하기도 한다.] 애초에 라이브러리를 염두에 두고 만들어진 라이선스라서, 초기 LGPL 라이선스의 명칭은 GNU Library General Public License였다. 단, LGPL 라이브러리를 동적 링크가 아닌 정적 링크로 연결시켰을 경우, 해당 라이브러리의 소스 코드와 전체 프로그램의 목적 코드를 공개해야 한다.

또 다른 자매품으로 GNU 아페로 일반 공중 사용 허가서(GNU Affero General Public License, AGPL)가 있다. 인터넷의 발전에 비해 기존의 GPL과 LGPL은 네트워크 동작에 대한 규정이 부족하다는 점을 보완하기 위하여 새롭게 만들어졌다. AGPL이 적용된 소프트웨어 혹은 라이브러리와 단 한 번이라도 네트워크 통신을 주고받는다면 해당 프로그램에 AGPL이 전염되며 모든 소스 코드의 공개 의무가 발생한다. '네트워크'의 사용 여부를 가지고 판별하므로 LGPL과 달리 정적/동적 링킹의 구분은 무의미하다.

기타

참고해야 할 점이, GPL도 엄연히 법적 효력이 있는 저작물 라이선스다! 라이선스를 어기는 경우엔 저작권자로부터 고소당하고, 해당 프로그램을 사용하지 못하게 될 수 있다. 한 예로 한글과컴퓨터 측은 AGPL+상용 라이선스가 적용된 Artifex 사의 PDF 인터프리터 고스트스크립트(Ghostscript)를 한컴오피스에 무단으로 적용했다가 소송을 당했다. 이렇게 듀얼 라이선스를 가진 라이브러리를 사용하려면 저작권자에게 비용을 내거나, 해당 모듈이 적용된 전체 프로그램의 소스 코드를 공개해야 하는데 한컴은 어떤 조치도 하지 않았던 것. 결국 2017년 5월, 미 연방법원으로부터 GPL은 법적 계약과 동일한 효력이 있다는 판결을 받았고, [[2]] 한컴은 한컴오피스에서 고스트스크립트를 삭제하였다.

하지만 프로그램(의 원본)을 사용해서 만들었거나 프로그램과는 무관하게 만들 수 있는 2차 창작물에는 (프로그램의 일부가 포함되지 않는 한) GPL이 전염되지 않는다. 투하트 2가 대표적인 경우로, 핵심 부분인 XviD의 소스 코드는 공개됐지만 이미지 등의 리소스는 공개할 의무가 없었다. 또한 외부로 배포되지 않은 프로그램은 GPL의 적용 대상이 아니며, 따라서 개인적 용도 혹은 사내에서만 사용할 경우에는 GPL 저작물을 수정하더라도 소스 코드를 공개할 필요가 없다. 물론 배포되는 순간 GPL이 전염되는 건 마찬가지라서, 원하지 않는다면 배포 이전에 GPL을 모두 끊어야 한다. 이 전염에는 유출도 포함되는지라, 저작물 유출로 인해 [전염되는 사건]이 일어나기도 했다.

그리고 GPL3의 조항에는 DRM과 관련하여 각국의 법률에 의해 보호되는 이익을 포기해야 한다는 내용이 명시되어 있다. 따라서 GPL 소프트웨어에는 DRM을 적용할 수 없으며, 적용할 경우 이는 라이선스 위반이 된다.

특허 문제는 더 복잡하다. GPL은 '기여자의 변형물 및 변형물에 포함되는 저작물'에 대해 특허 인정은 하되 그것을 독점하거나 수익을 올리는 행위는 차단하고 있다. 개발자 홍길동이 자신이 작성한 소스 코드 A에 특허를 등록했다고 가정하자. 그런데 몇몇 기능들은 자신이 직접 만들 수 없어서 GPL로 배포되는 소스 코드 B를 가져다 붙이고 최종 프로그램인 A+B를 배포했다. 이럴 경우 라이선스 전염성 조항에 의해 A+B 전체가 GPL로 변한다. B의 라이선스가 GPL이 아니라면 A+B를 만든 홍길동은 '기여자'이고, 소스 코드 B에다 특허 출원된 A를 붙여 A+B라는 '변형물'을 기여한 것이므로 A와 A+B 모두에 대해 특허가 인정될 것이다. 그런데, GPL은 '비배타적이고 비상업적인' 경우에 한해서만 특허를 인정한다. 따라서 홍길동이 자신의 프로그램 A+B에 대해 특허를 인정받고 싶다면, A+B라는 '변형물'은 물론 그 변형물에 '포함되는' 소스 코드 A도 제약 없이 무료로 공개해야 한다. 이는 사실상 특허를 무력화시키는 것이라고 할 수 있다. 단, GPL이 적용되는 A+B에 포함되지 않는 저작물, 예를 들어 A+C의 경우에는 이러한 조항이 적용되지 않는다. 그리고 GPL이 적용된 프로그램이 제3자의 특허를 침해했을 경우, 그 날로 GPL의 효력은 종료된다.

이용허락 시에 몇 판 및 그 이후 버전으로 배포하는 식으로는 이용허락이 가능하지만, "최신판으로만 배포"는 허용되지 않는다. 이는 GPL이 이용허락 철회를 금지하고 있기 때문인데, 최신판으로만 배포하게 해버리면 최신판이 공표되는 순간 이전 판의 이용허락이 자동적으로 철회되기 때문이다. 또한 GPL이 적용되었다고 해도 상표권의 배포 의무는 발생하지 않는다. 이 때문에 레드햇 엔터프라이즈 리눅스의 클론판인 CentOS레드햇의 상표를 모두 제거한 후 배포 중이다.

관련 문서

* BSD 라이선스
* 아파치 라이선스
* MIT 허가서

바깥 고리

* [General Public License v3.0] - GPL v3.0 영어 원문
* [일반 공중 사용 허가서 v2.0] - GPL v2.0 한국어 번역본

분류:라이선스