GNU 일반 공중 사용 허가서

  동남아시아의 前 리그 오브 레전드 리그에 대한 내용은 Garena Premier League 문서를 참조하십시오.

1. 개요
2. 주요 조항
2.1. 전염성
2.2. 소스 코드 공개 의무
2.2.1. 여담
2.3. 특허의 무제한 허용
2.4. 기타 조항
3. 자매품
3.2. GNU 아페로 일반 공중 사용 허가서
4. 사례
5. 기타
6. 관련 문서
7. 바깥 고리

1. 개요

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

자유 소프트웨어 재단(FSF)에서 만든 오픈 소스 소프트웨어를 위한 라이선스다. 리처드 스톨먼이 변호사들과의 협의를 통해서 만들었다고 한다. 현재 버전은 3.0이며, 이와 비슷한 것은 크리에이티브 커먼즈 라이선스 중 CC BY-SA가 있다.[1] 그러나 사용에 대한 전염성 조항 때문에 CC BY-SA보다 제약이 크다. GPL과 GFDL, CC BY-SA는 서로 전혀 호환되지 않는다.

2. 주요 조항

특히 굵게 표시한 것은 GPL의 주요 특징이다.

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

위 사항과는 별도로, 저작자의 사정에 따라 소스 코드에 예외를 추가할 수 있다. 소프트웨어에 포함되는 저작물(소스 코드) 중 예외에 해당하는 부분이 저작권 문제가 발생하지 않는다면, 사용자가 예외를 임의로 제거할 수 있다.

2.1. 전염성

GPL 라이선스를 따르는 소스 코드를 (일부라도)[2] 가져다 쓰거나 GPL 소프트웨어에 링크한 경우 동일한 의무가 발생한다. 즉, GPL 소프트웨어를 포함하는 소프트웨어의 전체 부분은 GPL 라이선스가 적용되며 소스 코드 공개 의무도 발생한다. 다만, GPL도 여타 다른 라이선스와 마찬가지로 저작자의 (법적) 권리에 종속되기 때문에, 소스 코드의 저작자는 언제든지 다른 라이선스로도 배포할 수 있다. 과거 마이크로소프트2001년에 GNU의 이러한 라이선스에 대해 바이러스라고 맹비난한 바 있다.[3] 2007년에 개정된 GPL v3은 하드웨어가 변경된 소프트웨어를 거부[4]할 수 없도록 했는데, 리눅스 진영의 리누스 토르발스가 이에 대해 반발했다. 이 때문에 리눅스는 GPL v2로의 배포만 허용한다.[5] 기업이 관리하는 OpenJDK와 같은 소프트웨어도 마찬가지다.

GPL 소프트웨어와 통신한다고 해서 무조건 전염성의 영향을 받는 것은 아니다. 별도의 프로그램으로 동작하여 서로 통신하는 경우는 해당하지 않는다. 그리고, 리눅스처럼 GPL이 적용된 운영체제에서 제공하는 기능(API)은 대부분 예외가 추가되어 있어 전염성에 해당하지 않는다. 그러나 예외가 인정되는 API를 사용하지 않고, 커널 단에서 동작하도록 설계되는 드라이버 같은 경우 문제의 여지가 있다.[6] 컴파일러나 커널 등과 같이 프로그램이 실행될 운영체제의 주요 구성 요소는, 배포할 GPL 소프트웨어에 포함되지 않는 한 배포의 의무가 발생하지 않는다.#

GPL 소프트웨어의 출력물은 전염성의 영향을 받지 않는다. 대표적으로 GCC에는 GPL v3 라이선스가 적용되어 있지만, GCC로 컴파일을 해도 그 결과물은 (코드 자체가 GPL이 아니라면) GPL을 따르지 않으며, GCC 헤더 파일[7]과 GCC 런타임 라이브러리를 사용하는 소프트웨어에 대해서도 예외가 추가되어 있어 GPL이 적용되지 않는다.[8] 그리고 어떤 워드 프로세서가 GPL 소프트웨어라고 해서 그걸로 작성한 문서를 공개해야 하는 것은 아니다. GPL은 어디까지나 소프트웨어 사용에 영향을 주는 것이다. 참고로 GCC 4.2.2 버전부터 BSD 라이선스와 호환이 불가능한 GPL v3가 적용되자[9] FreeBSD애플은 GCC를 버리고 LLVM/Clang으로 컴파일러를 교체하였다.

2.2. 소스 코드 공개 의무

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

GPL에는 오브젝트 코드에 대한 소스 코드를 어떻게 배포하는지 그 방법도 적혀 있는데, 이 부분이 버전2와 버전3에 따라 달라진다. 버전2는 인터넷이 대중화되지 않던 1991년에 처음 나왔기 때문에 소스 배포 방법 중에 인터넷을 통한 소스 코드 배포는 허용하지 않는다. 지금 기준으로 생각하면 이상하게 생각될 수도 있는데 당시에는 "인터넷으로 다운로드하세요"라고 말하는 건 곧 연구소와 대학에 있는 소수 특권층에게만 공개한다는 뜻이므로 바람직하지 않은 것이다. GPL 버전 2의 3조에 따르면 3가지 방법이 있는데, a항은 같이 배포하는 것, b항은 최소 3년 동안 연락하면 무료 또는 최소한의 물리적인 미디어[11] 비용만으로 소스 코드를 준다고 문서로 보장해 주는 것, c항은 b항을 통해 전달받은 코드를 제3자에게 전달할 때 b항의 문서를 전달해 주는 것. 이것이 전부다. 애초에 소프트웨어를 인터넷으로 배포하는 경우 소스 코드를 인터넷으로 같이 배포하면 a의 방법을 충족할 수 있으니까 문제가 없지만, 임베디드 제품에 들어 있는 소프트웨어의 경우는 소스 코드를 함께 배포하지 않는 한 b항을 택할 수밖에 없다. GPL v3의 경우에는 무료로 인터넷 서버에서 다운로드하도록 하는 방법 또는 P2P 다운로드도 허용한다.

그래서 가끔 전자제품에 포함된 GPL 소프트웨어에 대한 소스 코드를 연락하면 보내 준다고 보장해 주는 보증 문구를 종종 볼 수 있는데, 위와 같은 GPL 버전2의 소스 코드 배포 방법에 대한 제약 때문이다. 만약 이 조항을 확대 해석해서 물리적인 미디어 비용을 넘어서 소스 코드를 준비하는 부대비용까지 청구하거나, 일부러 비싼 배송 방법을 기준으로 비용을 요구한다면 GPL 위반이라고 볼 수 있을 것이다.

불특정 다수에게 배포된 프로그램이 GPL코드를 포함하고 개정된 것이라면 당연히 개정된 것도 GPL을 따라야만 한다. 그런데 국내 몇몇 개발자는 커뮤니티에 업로드한 것을 배포나 공표가 아니라 개인과 사내의 내부 용도와 마찬가지라고 GPL을 따를 필요가 없다고 우기기도 한다. 이런 식이라면 네이버에 올린 프로그램도 GPL을 어겨도 상관없다는 이야기가 된다. 개발자들은 GPL조항을 맘대로 생각하지 말고 제발 법무담당자에게 확인해야 한다. 한 바보의 행동이 회사의 지적재산권을 GPL로 바꿔버릴 수 있다.

2.2.1. 여담

이 부분을 악용하는 예를 보면, "GPL 코드가 포함되어 있습니다. 소스 코드 받으시고 싶은 분은 다음의 (아주 복잡한) 절차를 따라 "소스 공개 청구서"를 한글로 작성해서 대한민국 서울특별시 XX구 OO동 NNNN의 AA소프트웨어 본사 BB부서로 저장 매체를 지참하여 방문하십시오~"와 같이 절차를 복잡하게 하는데 우리나라 기업들이 꽤 쓰는 수법이다. 이러면 일단 외국인 개발자들은 상당수 봉쇄할 수 있기 때문이다. 물론 비행기 타고 와서 한두달, 심하면 1~2년 동안 절차 다 밟아 소스 코드를 받아내면 되겠지만, 그렇게까지 할 사람이 많지는 않을 것이다. 여기서 "사용자가 원할 때" 조건에 걸린다고 하는 경우도 있는데, 저런 꼼수를 쓰는 기업에서는, "사용자가 소스 공개 청구절차를 시작한 순간, 소스 공개를 하는 과정이 시작되므로 사용자가 원할 때 언제든지 소스 공개가 되는 것은 맞다"라거나 "시디로 구워서 우편으로 보내는 경우에 우편으로 소스 코드가 배송되는 데 시간이 걸리는 것과, 인터넷으로 배포시에 내려받는 시간이 걸리는 것과 동일하다."라고 주장하기도 한다.

다만 이는 도의적으로는 욕먹는다. 일단 딱 거짓말은 하지 않았다 수준으로 준수하는 것이기는 하지만 법적으론 GPL 라이선스를 어겼다고 보기 애매하기 때문이다. 방법이 아주 복잡할 뿐, 그 청구방법대로 다 따르면 결국 소스공개 청구자가 누가 되든 간에(불특정 다수) 소스를 뱉어주기 때문이다.

아무튼 이러한 방법은 일부분에 GPL 코드를 갖다 쓰는 국내 상용 소프트웨어 기업들이 많이 쓰는 꼼수이다. 일단 형식적으로 불특정 다수에게 소스 공개를 하기는 하되 실제로는 소스공개 청구 절차를 굉장히 복잡하게 만들어 두고 부대비용으로 몇백~몇천만원이 깨지게 만들어서, 웬만한 개발자들이나 이용자들이 소스 공개를 청구할 엄두를 못 내게 만드는 것이다.

물론 몇년간 씨름해서 소스 받아내는 용자들도 존재하고, 저따구로 써 놨다가 어떤 미국인 개발자가 진짜 비행기 타고 서울로 날아와서 본사 사무실로 쳐들어왔다...라는 소문도 있다. 소스 내놔

2.3. 특허의 무제한 허용

GPL은 '기여자의 변형물 및 변형물에 포함되는 저작물'에 대해 특허 인정은 하지만, GPL 라이선스가 적용되는 한에서 무제한 허용을 요구한다.[12]

개발자 홍길동이 자신이 작성한 소스 코드 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의 효력은 종료된다.

2.4. 기타 조항

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

상표권에는 영향을 주지 않는다.

3. 자매품

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

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

GPL과 달리 단순히 API나 라이브러리를 가져다 사용하는 것에는 전염성이 없기 때문에 비교적 자유롭다. 단, LGPL 소스 코드를 공유하는 모든 소스 코드는 전염성이 적용되므로, 조금이라도 이러한 부분을 포함한다면 공개 의무가 발생한다. 그리고 라이브러리를 동적 링크가 아닌 정적 링크[14]로 연결시켰을 경우, 사용자가 라이브러리 부분을 임의로 수정할 수 있도록 소프트웨어의 오브젝트 파일을 공급[15]하거나 소스 코드를 공개해야 한다.

LGPL은 GPL과는 달리 사용에 대한 전염성은 예외로 인정되므로 LGPL은 원형 그대로 사용할 수 있는 라이브러리에서 많이 사용한다.[16] 애초에 라이브러리를 염두에 두고 만들어진 라이선스라서, 초기 LGPL 라이선스의 명칭은 GNU Library General Public License였다. 그러나 해당 라이선스에 대해 오해와 편견이 발생할 수 있다고 하여 약자는 그대로이고 이름만 변경되었다.

3.2. GNU 아페로 일반 공중 사용 허가서

기존의 GPL과 LGPL은 네트워크 동작에 대한 규정이 부족하다는 점을 보완하기 위하여 새롭게 만들어졌다. AGPL이 적용된 소프트웨어 혹은 라이브러리와 단 한 번이라도 네트워크 통신을 주고받는다면 해당 프로그램에 AGPL이 전염되며 모든 소스 코드의 공개 의무가 발생한다. 네트워크의 '사용 여부'를 가지고 판별하므로 LGPL과 달리 정적/동적 링킹의 구분은 무의미하다.

즉 SaaS(Software as a Service) 같은 클라우드 서비스 환경이 대중화된 오늘날, GPL 소스 코드를 사용하고 개작하였지만 해당 바이너리가 소비자에게 배포되거나 노출되지 않으면 소스 코드를 배포하거나 라이센스 고지 의무가 없다는 약점을 보완하기 위한 라이센스이다.

4. 사례

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

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

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

GPL이 적용되었다고 해도 상표권에 영향을 주지 않는다. 이 때문에 레드햇 엔터프라이즈 리눅스의 클론판인 CentOS레드햇의 상표를 모두 제거한 후 배포 중이다.

5. 기타

gpl-violations.org와 같이 GPL 소프트웨어를 위반하는 기업으로부터 보호하는 단체도 있어서, GPL 관련으로 저작권을 침해받고 있거나 특정 기업의 GPL 위반이 분명한 경우 이러한 단체의 도움을 받을 수도 있다.

MIT 허가서아파치 라이선스 같은 기타 많은 오픈 소스 라이선스들은 전염성과 소스 코드 공개 의무가 존재하지 않으며, 이러한 라이선스의 비중이 GPL 계열보다 많다. 하지만 오래되고 강력한 소프트웨어들이 처음 개발될 당시 GPL로 개발된 것이 많아 아직 그 영향력은 막강하다. 아직도 적지 않은 수의 소프트웨어가 GPL로 작성되고 있다.

6. 관련 문서

7. 바깥 고리


  1. [1] 단, CC에서도 프로그램 소스에는 GPL이나 MIT 허가서/BSD 라이선스 등 다른 오픈 소스 라이선스를 쓰도록 권한다. 법적인 해석이 명확하지 않은 CC보다는 법적 해석이 더 명확하기 때문.
  2. [2] '컴파일할 때 GPL 코드가 필요한 경우'라고 정의하고 있다. 즉, 단 한 줄만 베꼈더라도 해당 부분을 지웠을 때 컴파일 에러가 난다면, 그건 GPL을 가져다 쓴 거다.
  3. [3] 이 시기에는 마이크로소프트가 오픈 소스를 배척했다. 그러나 현재는 이와는 반대로 친 오픈 소스 정책을 펼치고 있다.
  4. [4] 개발한 기기에 GPL v3 라이선스가 적용된 소프트웨어가 포함되는 경우, 이용자가 하드웨어에 해당 소프트웨어를 변경하여 구동시켰을 때 하드웨어가 실행을 거부(DRM)한다면 위반이라는 조항이다. 이처럼 수정된 소프트웨어의 하드웨어 구동을 막는 것을 GNU에서는 Tivoization이라 한다.
  5. [5] GPLv3, 최고의 리눅스 프로그래머들의 비난을 받다 GPLv3를 둘러싼 공방, 누구 말이 맞나 자유 소프트웨어 재단, GPL3 공개
  6. [6] 엔비디아 그래픽 카드의 상용 드라이버처럼 리눅스 API를 사용하며 소스 코드를 공개하지 않는 예도 존재한다.
  7. [7] stdio.h, iostream 등의 표준 헤더 파일.
  8. [8] GCC Runtime Library Exception. 이 예외조항을 가진 런타임 라이브러리에는 libgcc, libstdc++, libfortran, libgomp, libdecnumber 등이 있다.
  9. [9] GPL3의 Tivoization 방지 조항이 문제였다.
  10. [10] 이 경우 제3자도 해당 소프트웨어의 '사용자'가 되어 소스 코드를 제공받을 권리가 생긴다.
  11. [11] 테이프나 CD, USB 메모리 등이 이에 해당한다.
  12. [12] 즉, GPL 라이선스에 예외가 추가되어 있는 경우, 예외에 해당하는 부분은 무제한 허용에 대한 의무가 없다.
  13. [13] GFDL은 GPL와 달리 소프트웨어에 대한 전염성은 없다.
  14. [14] 하나의 실행파일에 포함되는 것이라고 봐도 된다.
  15. [15] .o 확장자를 가지며, 소스 코드를 미리 컴파일한 파일이다.
  16. [16] 원본 그대로 사용하면 원본에 대해 링크를 제공하는 것만으로도 라이선스를 지킬 수 있으나, 수정이나 파생 작업이 이루어지면 수정한 소스까지 모두 배포해야 하므로 GPL과 다를 바가 없어진다. 때문에 파생 프로그램은 보통 GPL로 배포한다. 또한 일부 라이브러리는 GPL로만 배포하기도 하며, 가이드라인 준수 조건 하에 이중 라이선스를 적용하기도 한다.

최종 확인 버전:

cc by-nc-sa 2.0 kr

Contents from Namu Wiki

Contact - 미러 (Namu)는 나무 위키의 표가 깨지는게 안타까워 만들어진 사이트입니다. (91.94ms)