본문 바로가기

[칼럼] GPL 라이선스의 이해

OSS 게시글 작성 시각 2018-09-19 15:30:30

2018년 9월 19일

GPL 라이선스의 이해

연지영 책임 /공개SW역량프라자

 

공개SW 라이선스란 공개SW 개발자와 이용자 간의 사용 방법 및 조건의 범위를 명시한 계약을 말합니다. 따라서 공개SW를 이용하려면 공개SW 개발자가 만들어놓은 조건의 범위에 따라 해당 소프트웨어를 사용해야 하며, 이를 위반할 경우에는 라이선스 위반 및 저작권 침해로 이에 대한 법적 책임을 져야합니다. 

 

SW 라이선스 조직표입니다. 소프트웨어(SW에 관한 지적재산권으로 보호-저작권,특허권,상표권,영업비밀) 총 두개의 대분류로 비FOSS 라이선스(사유SW)와 FOSS라이선스로 나누어집니다. 비FOSS 라이선스 밑으로는 두개의 특허SW와 비특허SW가 있고 밑으로는 공유불가능SW와 공유가능SW가 있고 그 밑으로 상용SW(EULA)와 Freeware(EULA)로 구성되어있음. 두개의 대분류에서 남은 FOSS라인서스 밑으로는 반환의무(Reciprocal)와 반환불필요(Permissive)가 있고 반환의무 밑으로 특허조항 밑으로 ELP,MLP,AGPL3.0,GPL3.0이 있고 특허조항과 별개의 GPL2.0,LGPL2.1이 있음. FOSS라이선스 두개의 대분류에서 남은 반환불필요(Permissive) 밑으로 제약과 무제약이 있고 제약 밑으로 BSD, Apache 2.0이 있고 무제약 밑으로 MIT가 있음
[그림 1] SW 라이선스 분류 (출처 : 공개SW 포털)
 ▲ 대표적인 공개SW 라이선스로는 GPL, LGPL, Apache License, BSD License 등이 있다.

 

GPL(General Public License)은 소스코드 공개에 대한 해석이 까다로운 라이선스 중 하나입니다. GPL의 소스코드 전체 혹은 일부를 사용했거나, 소스코드가 아닌 형태(라이브러리, 바이너리 코드 등)를 결합/연결했다면 어디부터 어디까지 소스코드 공개를 해야 하는지 의문이 발생합니다. 

 

우선 소스코드 공개 의무가 발생하려면 물리적인 프로그램의 이동인 '배포'가 발생해야 합니다. 단순히 GPL 프로그램을 내부적으로 사용할 경우에는 소스코드 공개 의무가 발생하지 않습니다. 또한 GPL 프로그램을 서버에 저장하고 네크워크 통신 형식으로 서비스만 제공한다면 GPL에 따른 소스코드 공개 의무는 발생하지 않습니다.

 

소스코드를 공개해야 하는 근거로 GPL-2.0 제2조 b항에 따르면 ‘배포하거나 공표하려는 저작물의 전부 또는 일부가 양도받은 프로그램(GPL 프로그램)의 일부를 포함하거나 프로그램(GPL 프로그램)으로부터 파생된 것일 경우, 저작물 전체에 대한 사용권리를 본 라이선스(GPL-2.0)의 규정에 따라 제3자 누구에게나 무상으로 허용해야 한다.’가 있습니다. 즉, 프로그램의 일부를 포함하거나 프로그램으로부터 파생된 저작물은 GPL-2.0에 따라 그 전체SW에 대한 소스코드를 무료로 허용해야 한다는 것입니다. 그러나 별도의 독립 저작물이라면 그 독립 저작물(Independent works)의 소스코드는 공개하지 않아도 됩니다.

 

FSF(Free Software Foundation)는 FAQ를 통해 독립 저작물에 대해 가이드를 제시하고 있습니다. FSF에 따르면 GPL 프로그램이 플러그인(Plug-in)을 실행하기 위해 fork와 exec를 사용한다면 플러그인은 별도의 독립 저작물이므로 해당 소스코드를 공개하지 않아도 되지만, 만약에 다이나믹 링크(dynamic link) 형식으로 플러그인이 사용된다면 플러그인은 GPL의 영향을 받게되어 소스코드 공개 대상이 될 수 있습니다. 

 

한편, 파이프(pipe)와 소켓(socket), 명령행 인자(command line argument) 등 독립된 프로그램 간 통신을 위해서 사용되는 구조인 경우에 대해서 독립된 프로그램으로 볼 수 있지만, 통신의 내용과 의미를 고려했을 때 하나의 프로그램을 구성하는 것으로 볼 수도 있다는 입장입니다. 즉, 하나의 프로그램으로 구성된다면 GPL 라이선스의 영향을 받을 수도 있다는 것을 의미합니다. 이에 대한 판결은 없어서 시원한 답을 내릴 순 없지만, 위와 같은 구조로 GPL 저작물을 사용한다 했을 때 100% 문제가 발생하지 않는다고 말하기는 어려울 것 같습니다. 

 

독립 저작물과 마찬가지로 집합 저작물(aggregation)도 GPL의 영향을 받지 않아 소스코드를 공개하지 않아도 됩니다. 집합 저작물은 단순히 함께 저장하거나 동일한 매체에 모아 놓은 경우를 뜻하는데, CD-ROM이나 하드 디스크, USB, 클라우드 등에 GPL 프로그램과 다른 저작물을 함께 저장하여 배포하였다 하더라도 다른 저작물의 소스코드는 공개하지 않아도 됩니다.

 

이외에 간혹  정적 링크(static link) 혹은 동적 링크(dynamic link) 형식으로 연결하여 GPL 프로그램을 사용한다면 소스코드 공개대상에서 제외된다고 이해하는 분들이 있지만, 이는 잘못된 것입니다. 정적 혹은 동적 링크 방식으로 GPL 프로그램을 사용한다면, 그 연결된 프로그램의 소스코드 또한 공개해야 합니다. 

 

GPL 프로그램 실행으로 생성/출력된 결과물과 GPL 라이선스의 전염

그럼, GPL 라이선스가 적용된 프로그램의 실행으로 생성 또는 출력된 결과물에는 GPL 라이선스가 전염될까요? 

 

결론부터 말씀드리자면 GPL 프로그램으로 생성 또는 출력된 리포트, 통계, 별도의 프로그램 등에는 GPL 라이선스가 전염되지 않습니다. 다만, 그 결과물이 컴퓨터프로그램이고 GPL의 일부로 구성되어 있는 2차적저작물*인 경우에만 GPL 라이선스가 적용될 수 있을 것입니다. 

* GPL-2.0의 2차적저작물의 범위와 저작권법이 규정하는 2차적저작물의 범위에는 차이가 있어 GPL-3.0에서는 적용 저작물(Covered Work)이란 용어를 새로 대체 도입하였다. 

 

[참고] FSF FAQ, In what cases is the output of a GPL program covered by the GPL too?

일반적으로 프로그램 소스코드의 저작권은 프로그램의 생성물에 적용되지 않습니다.

따라서 프로그램 소스코드의 라이선스는 생성물에 적용되지 않습니다. 

(출처 : https://www.gnu.org/licenses/gpl-faq.en.html#WhatCaseIsOutputGPL)

 

공개SW 라이선스는 저작권을 기반으로 컴퓨터프로그램저작물을 사용·복제·배포할 수 있는 권한을 부여합니다. 저작권이란 ‘저작자의 권리’를 의미하며, 저작권법은 저작자의 저작물에 대한 권리를 보호하기 위해 존재합니다. 

 

저작물이란 '인간의 사상 또는 감정을 표현한 창작물'을 의미합니다. 예를 들어 컴퓨터프로그램을 사용하여 수학적인 결론이나 문서, 프로그램 등을 만들었다면 인간이 아닌 컴퓨터에 의해서 표현된 것이기 때문에 저작물이 아닐 것입니다. 저작물이 아니라면 그 생성물에 대해 어떠한 권리도 발생하지 않으며, 저작권법에 따라 보호받을 권리가 없으므로 타인에게 권리 부여를 할 수 없을 것입니다. 즉, 저작물이 아닌 것에 부착된 저작권에 기반한 라이선스는 권리가 없는 것이므로 라이선스를 준수할 필요가 없습니다. 

 

20180919152541844aefac6b97295b8daacb2f32ac4c7d9ad4efca.png
[그림 2] 아이폰 앱 프리즈마가 그린 그림은 저작권이 없다.
 
결론적으로 GPL 프로그램의 결과물이 GPL의 코드 일부 혹은 전체를 포함하는 프로그램이거나 GPL 프로그램의 일부로 구성되는 경우에는 그 결과물에 GPL 라이선스가 적용될 수도 있지만, 이러한 경우는 드물게 발생하는 만큼 프로그램이 생성하는 결과물에 GPL 라이선스가 적용되지 않는 것으로 이해하면 됩니다. 

 

- 공개SW역량프라자 -

 

Creative Commons License공개SW역량프라자에 의해 작성된 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다.

 

2018
공개SW 가이드/보고서 - 번호, 제목, 작성자, 조회수, 작성
번호 제목 작성자 조회수 작성
공지 [2024년] 오픈소스SW 라이선스 가이드 개정판 발간 file support 9401 2024-01-03
공지 [2024년] 기업 오픈소스SW 거버넌스 가이드 개정판 발간 file support 7344 2024-01-03
공지 [2024년] 공공 오픈소스SW 거버넌스 가이드 개정판 발간 file support 7275 2024-01-03
공지 공개 소프트웨어 연구개발(R&D) 실무 가이드라인 배포 file support 19892 2022-07-28
공지 공개소프트웨어 연구개발 수행 가이드라인 file OSS 18369 2018-04-26
326 [Redhat Brandpost] 오픈시프트가 지원하는 베어메탈과 쿠버네티스 환경 OSS 2189 2018-11-02
325 오픈소스 보안 현황과 시사점 OSS 4457 2018-10-23
324 블로그 | 머신러닝, 이론과 실제의 간극 메우려면… OSS 1739 2018-10-10
323 DevOps 성과을 위한 13가지 공개SW 툴 OSS 4764 2018-10-08
322 [리눅스 재단] '엔터프라이즈를 위한 오픈 소스 가이드' 사이트 OSS 2171 2018-10-02
321 칼럼 | 성공적인 인공지능(AI) 적용을 위한 단계 OSS 2356 2018-10-01
320 2018 SAS,R, Python 선호도 조사...Burtch Works file OSS 2386 2018-09-21
319 칼럼 | 더 많은 개발자를 채용해야 한다, 그러나··· OSS 1945 2018-09-20
318 [칼럼] GPL 라이선스의 이해 file OSS 40495 2018-09-19
317 [공개SW 월간브리핑]대기업 업무의 중심이 되어가고 있는 공개SW 외 OSS 2881 2018-09-18
맨 위로
맨 위로