최근 수정 시각 : 2024-09-17 15:33:31

GNU 일반 공중 사용 허가서

GPL에서 넘어옴

파일:나무위키+유도.png  
GPL은(는) 여기로 연결됩니다.
동남아시아의 前 리그 오브 레전드 리그에 대한 내용은 Garena Premier League 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.
1. 개요2. 주요 조항
2.1. 파생 저작물2.2. GPL 소스 코드 제공2.3. 특허에 대한 무제한 실시권2.4. DRM 관련2.5. 기타 조항
3. GNU의 다른 라이선스 종류
3.1. GNU 약소 일반 공중 사용 허가서 (LGPL)3.2. GNU Affero 일반 공중 사용 허가서 (AGPL)
4. 사례5. GPL 조항 대처 방법6. 관련 문서7. 외부 링크

1. 개요

GNU GPL(General Public License)

자유 소프트웨어 재단(FSF)에서 1989년에 만든 오픈 소스 소프트웨어에 대한 라이선스 계약서라 할 수 있다. 리처드 스톨먼에 의해 제창되었다. 계약서 버전에 따라 계약내용이 다소 다르다. 크리에이티브 커먼즈 라이선스 중 CC BY-SA와 유사하나 CC계약서는 사용의 범위, 특허의 실시 등 프로그램 소스코드와 그를 사용한 컴파일된 바이너리와 같은 세세한 이용허락의 범위가 명확하지 않은 관계로 CC계약서를 채택하는 경우는 거의 없다.

2. 주요 조항

다음은 GPL의 주요 특징이다.
  • 프로그램을 어떠한 목적으로든지 사용할 수 있다. (상업적 이용, 배포, 특허에 이용, 개인적 이용)
  • 프로그램의 소스 코드를 용도에 따라 변경 이용 (개작 가능)
  • 원본 및 변경된 프로그램의 소스 코드 배포 및 동일 라이선스 조건 (원본 및 파생 소스코드 라이선스)
  • 법적 책임을 지지 않음. 보증하지 않음
  • 라이선스 및 저작권 고지 포함

GPL은 배포/유통된(distributed) 소프트웨어에만 적용된다. 따라서 웹서버에 GPL 프로그램이나 소스코드를 이용시 소스코드 배포 의무가 없다.

2.1. 파생 저작물

GPL, 특히 GPLv2의 계약서에는 “파생 저작물”(Derivative Work)이라는 표현이 등장하는데 이는 GPL로 배포되는 소스코드를 사용 또는 개작하는 경우라고 정의하고 있다. GPL소스코드를 사용한 해당 소프트웨어는 GPL로 배포되어야 하며 그에 따라 소스코드의 제공 의무가 있다. GPLv3 부터는 "Covered work"라는 표현을 사용한다.

GPL 프로그램과 통신 하는 것으로는 파생 저작물 조항에 해당되지 않는다. 명시적인 예외가 포함되어 있긴 하지만 Linux처럼 GPL이 적용된 운영체제에서 제공하는 API 를 사용하는 것은 무방하다. 엔비디아의 그래픽 드라이버와 같이 Linux 커널부에서 동작하는 드라이버 소프트웨어 경우에도 모듈 기반을 사용하여 커뮤니케이션하게 만들면 파생 저작물 조항에 해당되지 않는 것이 그 예이다. 다만 이처럼 커널 레벨의 모듈로 제공시 Linux 소스코드 관리자 쪽에서 특정 회사의 드라이버만을 위한 커널의 코드 패치를 거절하므로 커널에 포함시키지 않고 Linux 배포자가 별도 패키지로 제공하고 있다.

GPL 프로그램 소프트웨어의 출력물은 GPL의 영향을 받지 않는다. GCC 컴파일러 프로그램 소스코드에 GPL v3 라이선스가 적용되어 있다고 해서 GCC로 컴파일한 출력파일은 GPL을 따를 필요가 없으며 stdio.h, iostream 등의 GCC 헤더 파일과 GCC 런타임 라이브러리를 사용하는 소프트웨어를 위한 예외가 추가되어 있어 GPL이 적용되지 않는다 (GPL Runtime Library Exception) [1]
이런 라이선스 예외가 적용된 libgcc, libstdc++, libfortran, libgomp, libdecnumber 등도 마찬가지로 런타임을 위해 정적 링크를 하여도 GPL의 파생 저작물 조항을 따르지 않아도 되며, GPL은 어디까지나 소스코드 사용과 관련된 것이므로 GPL을 사용한 프로그램이 생성하는 결과물은 GPL과 관련이 없다.
GPL v3의 Tivoization 방지 조항때문에 GCC 4.2.2 버전부터 BSD 라이선스와 호환이 불가능한 GPL v3가 적용되자 FreeBSD와 애플은 GCC를 버리고 LLVM/Clang으로 컴파일러를 교체하였다. 기업이 관리하는 OpenJDK와 같은 소프트웨어도 Classpath exception이라는 예외 조항으로 GPL의 “파생 저작물”에 해당하지 않도록 한 것들이 있다.

2.2. GPL 소스 코드 제공

인터넷 등의 매체로 GPL 소프트웨어의 바이너리를 배포하는 경우 GPL 계약서, 소스 코드가 제공하여야 하며 사용자가 다시 제3자에게 해당 소프트웨어를 재배포하는 것이 허용된다.

이때 소스 코드는 어떻게든 소프트웨어의 사용자에게 전달만 할 수 있으면 된다. GPL 버전 2의 3조에 따르면 3가지 방법이 있다.
  1. 소프트웨어와 함께 배포한다
  2. 3년 이내에 사용자로부터 요청이 들어오면 인터넷으로 내려받게 하거나 일정 비용을 받고 CDUSB 메모리 등의 물리적 매체에 소스 코드를 담아서 제공한다.
  3. b항의 방법으로 수령한 소스 코드를 제3자에게 전달할 때 b항의 내용을 전달한다.

보통 인터넷에서 무료로 배포되는 GPL 소프트웨어는 a항의 방법으로 다운로드 페이지나 FTP에서 소스 코드도 함께 내려받을 수 있는 방식으로 배포되고 있고, 가장 권장되는 방식이기도 하다. 또한 하드웨어에 임베디드되는 GPL 소프트웨어라면 b항의 방법으로 소스 코드를 꼭 동봉하지 않아도 된다.

소프트웨어의 '사용자'에게만 소스 공개 의무가 발생한다는 점에도 주목할 필요가 있다. 사용자가 아니라면 소스 코드 공개 의무가 없기 때문에 GPL을 채택하고도 얼마든지 소프트웨어를 유료로만 판매할 수 있다. 그런 경우 애초에 돈을 내지 않으면 소프트웨어의 '사용자'가 될 수조차 없기 때문에 소스 코드를 제공받을 권리가 발생하지 않는다. 그 예시로 2023년부터 레드햇은 RHEL의 소스코드 재배포를 실제 사용자들에 한해 제한하고 있다.

프로그램은 무료로 쓰게 하면서 상업적 용도나 클로즈드 소스에 사용시 유료 라이선스를 취하고 있는 경우도 있다. Qt와 GhostScript가 있다. 2015년이후 GPL 진영의 그러한 소프트웨어 라이선스 전략은 시장에서 먹혀들지 않고있다.

2.3. 특허에 대한 무제한 실시권

GPL은 '기여자의 변형물 및 변형물에 포함되는 저작물'에 대해 특허권을 가지는 것은 인정하지만, GPL가 적용되는 한에서 그 특허발명에 대한 제한없는 실시권 허락을 요구한다.[2]

개발자 홍길동이 자신이 작성한 소스 코드 A에 특허를 등록했다고 가정하자. 그런데 몇몇 기능들은 자신이 직접 만들 수 없어서 GPL로 배포되는 소스 코드 B를 가져다 붙이고 최종 프로그램인 A+B를 배포했다. 이럴 경우 GPL 조항에 의해 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에 따라 소스 코드를 사용했더니 특허침해라며 소송당하는 것을 방지하기 위한 조항이라고 한다.

2.4. DRM 관련

2007년에 개정된 GPL v3은 하드웨어가 수정된 GPL 소프트웨어를 거부할 수 없도록 했다. (조항 6번) 하드웨어 기기에 GPL v3 라이선스가 적용된 소프트웨어가 포함되는 경우 이용자가 해당 소프트웨어를 변경하여 구동시켰을 때 하드웨어가 실행을 거부할 수 있는 DRM을 적용한다면 위반이라는 조항이다. LGPL v3도 같은 내용이 추가된 것이다.

이처럼 수정된 GPL 소프트웨어의 하드웨어 구동을 막는 것을 GNU에서는 Tivoization이라 한다. Linux를 사용하는 TiVo라는 DVR 업체가 서드파티의 모디파이된 바이너리 GPL 소프트웨어를 실행하지 못하도록 했던 것이 어원이다. Linux 진영의 리누스 토르발스가 이러한 DRM 금지 라이선스 개정에 대해 반발했다. 이 때문에 Linux 커널은 GPL v2로의 배포만 허용한다.[3]

2.5. 기타 조항

GPL은 이용허락 철회를 금지하고 있다. 따라서 이용허락 시에 몇 판 및 그 이후 버전으로 배포하는 식으로는 이용허락이 가능하지만, "최신판으로만 배포"는 허용되지 않는다. 최신판으로만 배포하게 해버리면 최신판이 공표되는 순간 이전 판의 이용허락이 자동적으로 철회되기 때문이다.

상식적인 것이지만 상표권과 GPL 소프트웨어와는 별개사항이다. 크롬크로뮴으로 이름을 바꾸고 오픈소스화하여 배포되는 것이 그 예다.

3. GNU의 다른 라이선스 종류

GNU의 다른 라이선스 종류로는 GNU 약소 일반 공중 사용 허가서(GNU Lesser General Public License, LGPL)와 더불어 문서에 써먹을 수 있는 GNU 자유 문서 사용 허가서(GNU Free Documentation License, GFDL)가 있다. GFDL은 문서에 대한 GPL로 볼 수 있으며, 위키백과라이선스이기도 하였다.[4] 또한 네트워크를 주로 활용하는 프로그램에 적용할 수 있는 GNU 아페로 일반 공중 사용 허가서(GNU Affero General Public License, AGPL)도 있다.

3.1. GNU 약소 일반 공중 사용 허가서 (LGPL)

GPL과 달리 라이브러리를 어떠한 형태로 사용하여도 파생 저작물 조항이 전염되지 않기 때문에 주로 소프트웨어 공급자의 라이브러리 소스코드에 적용되는 라이선스이며 그렇기에 원 소스가 GPL이 아니라면 소스 코드 공개 의무가 없다. 다만 동적 링크와 달리 소프트웨어를 정적 링크[5]하는 경우 소프트웨어의 오브젝트 파일[6]을 함께 배포하여야 한다.

LGPL은 파생 저작물에 해당되지 않는 라이브러리 소스코드 라이선스로서 많이 채택하고 있다. [7] 애초에 라이브러리를 염두에 두고 만들어진 라이선스라서, 초기 LGPL의 명칭은 GNU Library General Public License였다. 그러나 라이브러리 뿐아니라 해당 라이선스에 대해 보다 허용적 내용이 있어 약자는 그대로이고 Library가 Lesser로 변경되었다.

3.2. GNU Affero 일반 공중 사용 허가서 (AGPL)

기존의 GPL과 LGPL은 네트워크 동작에 대한 규정이 부족하다는 점을 보완하기 위하여 새롭게 만들어졌다.

L/GPL에서 정의하고 있는 "Distribute"나 "Convey"의 경우 “바이너리”가 사용자에게 전달되는 때를 의미하는데 바이너리를 배포하지 않고 SaaS(Software as a Service) 같은 클라우드 서비스 환경처럼 소프트웨어가 실행되는 결과값만 네트워크로 전달하는 방법을 사용해 GPL 소스 코드를 사용하고 개작하였지만 해당 바이너리가 소비자에게 배포되거나 노출되지 않으면 소스 코드를 배포하거나 라이선스 고지 의무가 없다는 약점을 보완하기 위한 라이선스이다.

AGPL이 적용된 소프트웨어 혹은 라이브러리가 다른 소프트웨어와 네트워크로 연결되어 이용된다면 그 소프트웨어 혹은 라이브러리의 소스코드를 공개하여야 한다. 다만, 네트워크로 연결된 상대방 소프트웨어의 소스코드를 공개하여야 할 의무는 없다.(HTTP 통신을 통해 클라이언트와 연결되는 경우 등을 생각해보면 이것이 실현 가능하지도 않다.) 네트워크의 '사용 여부'를 가지고 판별하므로 LGPL과 달리 정적/동적 링킹의 구분은 무의미하다.

4. 사례

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

소프트웨어의 사용자에게만 소스 코드 공개의 의무가 발생하므로, 개인적 용도나 사내에서 사용하는 것은 문제가 없지만 유출되는 경우는 별개다. 이것과 관련해 국내에 이와 같은 사건이 일어나기도 했다. 저작물 유출로 인해 단, 2차적 저작물은 독자적인 저작물로 보호되기 때문에 원저작자라 하더라도 배포를 하라고 강제할 권리는 없다. 이 사건은 차후 GPL에 근거하여 소스 코드 공개가 이루어졌지만, 법원은 GPL이 적용되는지를 별론으로 하고 영업비밀을 유출했기 때문에 피고인이 위법행위를 했다고 판결하였다.

국내 동영상 플레이어 프로그램들의 GPL 위반 의혹이 나기도 한다. 이유는 대부분의 플레이어에서 사용하는 FFmpeg이 GPL와 LGPL 이중 라이선스를 사용하기 때문인데, GPL가 포함된 부분까지 사용하고서는 소스 공개를 하지 않는 것이다.

이 문제에는 KMPlayer, 곰플레이어, 팟플레이어 등이 해당된다. 그냥 FFmpeg를 별 생각없이 프로그램에 내장시켰다가 GPL 위반 의혹이 난 것. GPL 위반 문제가 제기되도 별다른 대응이 없지만 그 중에서 팟플레이어가 소스를 공개하였다. 물론 전체 소스코드는 아니고 LGPL와 함께 수정된 FFmpeg 소스코드를 다운로드 받을 수 있는 링크를 제공하고 본래의 프로그램에서 FFmpeg를 제거하고 따로 코덱 설치 파일을 배포한다.

그밖에도 도널드 트럼프의 SNS인 트루스 소셜이 AGPL-3.0이 적용된 마스토돈(SNS)의 소스를 무단으로 사용했다가 이후 논란이 되자 소스 코드를 공개했다.

5. GPL 조항 대처 방법

GPL Wrapper
GPL Plugins
Mere Aggregation

GNU의 입장은 별도의 프로그램으로 배포되고 별도의 가상 메모리 공간을 할당받은 두 프로세스는 각각의 별도의 독립적인 프로그램으로 분류하므로 이를 exec->argv로 통신하든 Pipe나 Socket으로 통신하든 GPL과는 아무 상관이 없으나, 정적 링크와 같이 코드가 같은 가상 메모리 공간에 연속적인 공간을 점유하지는 않으나 비연속적인 공간을 추가적으로 불러와 사용하게 되는 DLL, so와 같은 경우는 약간 해석의 여지가 존재한다. PE/ELF의 심볼 테이블에 GPL 코드가 링킹되어 GPL 코드 없이 정상적인 동작이 불가능한 프로그램의 경우 GPL의 파생 저작물에 해당되나 플러그인과 같이 GPL코드가 존재하지 않더라도 원 프로그램의 동작에는 문제가 없고 런타임 환경에서 선택적으로 기능의 확장을 위해 사용되는 경우는 해석의 여지가 존재하고 있는 상태다.

이와 더불어 한국과 유럽의 저작권법은 API는 저작권의 행사가 불가능하며 이에 따른 판례가 존재하나 미국의 저작권법은 API또한 저작권의 행사가 가능하다는 판례가 존재하고 있어 어떠한 저작물이 공표되는 순간 각 국가의 법률에 따라 위의 회피 방법이 항상 적용될 수 있는 것은 아니다.

GPL을 역이용시에는 상기 방법들을 이용하면 되며, 그밖의 대처 방법으로는 MIT, BSD, Apache등 소스코드 공개/배포가 필요없는 허용적인 라이선스의 무료 소스코드를 이용하거나 GPL로 배포되는 프로그램들은 유료로 상업용 라이선스를 판매하는 경우가 있으므로 (예: libx264, Ghostscript, Qt 등) 구입하여 이용하면 된다.

6. 관련 문서

7. 외부 링크


[1] GPL RT Exception 전문을 보면 알겠지만 소스코드와 바이너리를 런타임 목적 그 자체로 사용하는 경우에만 적용되는 라이선스이며, 해당 라이브러리등을 개작하는 경우는 GPL을 준수하여야 한다.[2] 즉, GPL에 예외가 추가되어 있는 경우, 예외에 해당하는 부분은 무제한 허용에 대한 의무가 없다.[3] GPLv3, 최고의 Linux 프로그래머들의 비난을 받다 GPLv3를 둘러싼 공방, 누구 말이 맞나 자유 소프트웨어 재단, GPL3 공개[4] GFDL은 GPL와 달리 소프트웨어에 대한 전염성은 없다.[5] 하나의 실행파일에 라이브러리가 포함되는 것.[6] .o 확장자를 가지며, 소스 코드를 미리 컴파일한 파일이다.[7] 원본 그대로 사용하면 원본에 대해 링크를 제공하는 것만으로도 라이선스를 지킬 수 있다. 일부 라이브러리는 GPL로 배포 하기도 하며, 가이드라인 준수 조건 하에 이중 라이선스를 적용하기도 한다.

분류