상담 게시판

상담 내용
GPL v3, LGPL 라이선스 문의
  1. 작성일 :
  2. 2016.03.14
  3. 작성자 :
  4. 한지형
  5. 조회수 :
  6. 3350

연구 개발과 관련하여 오픈소스 라이선스 문제에 대해 잘 알고자 여러 정보들을 확인했는데도, 명확하게 이해가 되지 않아 문의드립니다. 

1. GPL v3 라이선스로 배포되는 라이브러리를 사용하는 경우

- GPL v3 라이선스로 배포되는 라이브러리를 어떠한 수정/변경도 없이 그대로 사용합니다.

  개발한 프로그램에 해당 라이브러리를 정적링크, 동적링크로 사용했을 경우, 각각의 경우에 대해 제가 개발한 프로그램의 공개 여부 및 공개 범위가 궁금합니다.

- GPL v3 라이브러리를 사용한 프로그램을 라이선스 규약에 따라 라이선스 명시, 공개 규칙 등을 지켰다고 할 때, 개발한 프로그램을 기술이전 등의 형태로 기업에 판매가 가능한지 궁금합니다.  특히, 기업에게 소스코드 전체를 판매하는 것과 바이너리 파일만 판매하는 것 두 가지 경우가 다른지도 궁금합니다. (공개 규칙 등에 따라 공개가 되어 기업에서 돈 주고 살 필요가 없다 이런 것을 문의드리는 것이 아니라, 단지 GPL 라이선스 규약 내에서만의 해석을 문의드리는 것입니다.)

 

2. LGPL 라이선스로 배포되는 라이브러리를 사용하는 경우

- LGPL 라이선스로 배포되는 라이브러리를 어떠한 수정/변경도 없이 그대로 사용합니다. 

개발한 프로그램에 해당 라이브러리를 정적링크, 동적링크로 사용했을 경우, 각각의 경우에 대해 제가 개발한 프로그램의 공개여부 및 공개 범위가 궁금합니다. 

- LGPL 라이브러리를 사용한 프로그램을 라이선스 규약에 따라 라이선스 명시, 공개 규칙 등을 지켰다고 할 때, 개발한 프로그램을 기술이전 등의 형태로 기업에 판매가 가능한지 궁금합니다.  특히, 기업에게 소스코드 전체를 판매하는 것과 바이너리 파일만 판매하는 것 두 가지 경우가 다른지도 궁금합니다. (공개 규칙 등에 따라 공개가 되어 기업에서 돈 주고 살 필요가 없다 이런 것을 문의드리는 것이 아니라, 단지 LGPL 라이선스 규약 내에서만의 해석을 문의드리는 것입니다.)

 

감사합니다.

  1. 첨부파일
답변
답변 답변일 : 2016.03.28

안녕하세요.

문의하신 내용에 답변 드립니다.

 

 

1. GPLv3 배포 라이브러리를 수정/변경 없이 사용하고, 개발 프로그램에 해당 라이브러리를 정적 링크, 동적 링크로 사용했을 경우 개발한 프로그램의 공개 여부 및 공개 범위 

프로그램을 링크하여 연결한 것은 '더 큰 프로그램을 구성'하는 것으로 전체 프로그램의 소스 코드를 공개해야 합니다. 공개해야 하는 소스 코드에는 저작물의 소스 파일과 연관된 인터페이스 정의 파일이, 서브 프로그램과 동적 링크된 하위 프로그램과 공용 라이브러리의 소스 코드 등이 포함 됩니다. 단, GPL 라이선스의 프로그램 코드와 '분리되고 독립적'인 프로그램의 경우에는 소스 코드 공개 범위에서 벗어납니다.

 

GPL 3.0_제5조. 수정된 소스의 컨베이 행위

당신은 다음의 조건들을 모두 충족시킨다는 조건 하에, 제4조에 의거하여 프로그램에 기반한 저작물이나, 그 저작물을 제작하기 위해 프로그램에 사용된 수정물을 소스 코드 형태로 컨베이할 수 있다.

(생략)

GPL 적용 저작물과 기타 독립적인 저작물을 하나로 묶어 하나의 저장 장치나 배포매체에 저장한 저작물들은, 독립적 저작물들이 그 본질상 GPL 적용 저작물의 확장형태가 아니고, 더 큰 프로그램을 구성하기 위한 방식으로 결합된 것도 아니며, 저장된 저작물들과 해당 저작권이 각각의 개별 저작물의 허용범위를 넘어서는 정도로 사용자들의 접근이나 법적 권한을 제한하는데 사용되는 것이 아니라면, 그것은 '집합물'로 지칭된다. 집합물에 GPL 적용 저작물이 포함된다고 해서 본 라이선스가 그 집합물의 다른 부분에 적용되는 것은 아니다.
 

제1조. 소스 코드

오브젝트 코드 형태를 띤 저작물의 "해당 소스"란 오브젝트 코드를 생성, 설치, 그리고 (실행 가능한 저작물의 경우) 구동하고, 그 저작물을 수정하는데 필요한 모든 소스 코드를 의미하며, 이러한 활동들을 제어하는 스크립트를 포함한다. 그러나, 저작물의 시스템 라이브러리나 범용적인 툴은 여기에 포함되지 않으며, 위의 활동들을 실행시키는데 수정 없이 사용되면서도 실행물의 일부가 아닌 여타 자유 소프트웨어

 

<참조_LGPL 2.1>

어떤 프로그램이 라이브러리와 함께 링크되면, 그 라이브러리가 정적으로 링크되든지 공유 라이브러리로 사용되든지 간에, 이 두 개의 조합은 법적으로 볼 때 결합저작물, 즉 최초의 라이브러리로부터 파생된 2차적 저작물로 간주된다. 따라서 일반 공중 라이선스는 결합된 전체 저작물이 일반 공중 라이선스가 규정하는 자유의 기준을 충족할 때에 한해서만 이러한 링크를 허용한다. 그러나 약소 일반 공중 라이선스는 라이브러리와 다른 코드의 링크에 대해서 보다 유연한 기준을 허용하고 있다.

 

참고로, GPL 3.0에 따르면 사용자 제품의 경우'설치 정보'를 제공해야 합니다. '설치 정보'는 수정된 소스 코드를 사용자 제품 내에 해당 수정 버전을 설치하고 실행하기 위한 모든 절차, 인증, 기타 필요한 정보를 의미합니다. '설치 정보'에 대한 자세한 내용은 GPL 3.0 제6조에서 확인할 수 있습니다.

 

 

 

2. LGPL 배포 라이브러리를 수정/변경 없이 사용하고, 개발 프로그램에 해당 라이브러리를 정적 링크, 동적 링크로 사용했을 경우 개발한 프로그램의 공개 여부 및 공개 범위

 

LGPL 라이선스는 라이브러리와 링크하는 응용 프로그램의 소스 코드 공개에 완화된 라이선스입니다. 따라서 LGPL 라이브러리와 개발 프로그램을 링크하여 결합해도 LGPL 라이선스가 전염되지 않으며 개발 프로그램의 소스 코드를 공개하지 않아도 됩니다.

라이선스의 적용을 받는 라이브러리와 프로그램을 링크하여 연결하여 만들어진 프로그램은 '라이브러리를 사용하는 저작물'에 해당합니다. '라이브러리를 사용하는 저작물'은 리버스 엔지니어링(reverse engineering)이 가능해야 합니다. 라이브러리의 소스코드는 제1조와 제2조에 따라 공개 되어야 하고, 개발 프로그램의 경우에는 오브젝트 코드를 제공하여 프로그램 수취인이 라이브러리를 수정한 후에도 실행 할 수 있도록 해야 합니다.

 

 

서문

어떤 프로그램이 라이브러리와 함께 링크되면, 그 라이브러리가 정적으로 링크되든지 공유 라이브러리로 사용되든지 간에, 이 두 개의 조합은 법적으로 볼 때 결합저작물, 즉 최초의 라이브러리로부터 파생된 2차적 저작물로 간주된다. 따라서 일반 공중 라이선스는 결합된 전체 저작물이 일반 공중 라이선스가 규정하는 자유의 기준을 충족할 때에 한해서만 이러한 링크를 허용한다. 그러나 약소 일반 공중 라이선스는 라이브러리와 다른 코드의 링크에 대해서 보다 유연한 기준을 허용하고 있다.

 

제5조

라이브러리의 어떠한 부분으로부터의 파생물도 포함하지 않지만, 컴파일이나 링크를 통해 라이브러리와 함께 작동되도록 설계된 프로그램은 "라이브러리를 사용하는 저작물"로 칭한다. 이렇나 저작물이 별도로 분리되어 있을 때는 라이브러리로부터 파생된 저작물이 아니며 본 라이선스의 범위를 벗어난다.

 

그러나"라이브러리를 사용하는 저작물"을 라이브러리와 링크로 연결한 결과로 생성된 실행물은 라이브러리의 일부를 포함하고 있기 때문에 라이브러리에서 파생된 2차적 저작물이 된다. 따라서 이 실행물은 본 라이선스의 적용을 받는다. 제6조는 이러한 종류의 실행물의 배포에 대한 규정을 다루고 있다.

 

제6조

위의 조항들에 대한 예외적 경우로 "라이브러리를 사용하는 저작물"을 라이브러리와 결합하거나 링크로 연결하여 라이브러리의 일부를 포함하는 저작물을 생성하고 그 저작물을 임의로 선택한 규정에 따라 배포할 수 있다. 단, 이 경우 배포 규정에는 수취인들이 필요에 따라 저작물을 수정할 수 있으며 수정에 따른 디버깅을 위한 코드 역분석(reverse engineering)을 할 수 있다는 내용이 포함되어야 한다.

(생략)

a) 저작물에 포함된 라이브러리에 어떠한 수정이 가해졌다 하더라도, 해당 라이브러리에 대한 완전한 소스 코드를 컴퓨터가 인식할 수 있는 형태로 저작물과 함께 제공해야 한다. 이는 위의 제1조와 제2조의 규정에 따라 배포되어야 한다. 만약 저작물이 라이브러리와 링크되는 실행물일 경우에는 컴퓨터로 인식할 수 있는 완전한 "라이브러리를 사용하는 저작물"을 오브젝트 코드와 소스 코드 모두 혹은 둘 중 하나의 형태로 저작물과 함께 제공하여 사용자가 라이브러리를 수정한 후에도 링크를 통해 수정된 라이브러리를 포함하는 새로운 실행물을 생성할 수 있도록 해야 한다. (라이브러리 내의 정의 파일의 내용을 변경한 사용자가 수정된 정의 부분을 사용하기 위한 응용 프로그램을 컴파일 할 수 있는 것은 아니다.)

(생략)

실행물의 경우, "라이브러리를 사용하는 저작물"의 형태로 배포될 때는 실행물을 재생산하기 위해 필요한 모든 데이터와 유틸리티 프로그램들을 포함해야 한다. 그러나 특별히 예외적인 경우로 실행물이 실행될 운영체제의 주요 부분(컴파일러나 커널 등)과 함께 (소스 코드나 바이너리 형태로)일반적으로 배포되는 구성요소들은 이러한 구성 요소 자체가 실행물에 수반되지 않는 한 배포 대상에서 제외되어도 무방하다.

(생략)

 

 

3. GPLv3 / LGPL 라이브러리를 사용한 프로그램을 소스 코드 전체 혹은 바이너리 파일만 판매하는 것이 가능한지

FSF의 자유 소프트웨어 판매에 대한 입장 www.gnu.org/philosophy/selling.html

프로그램을 판매할 수 있는 권리는 GPL이 자유 소프트웨어에 보장하는 권리 중 일부입니다. 기업에 판매를 할 때 소스 코드를 판매하는 것도 가능하고 바이너리 파일만 판매하는 것도 가능합니다. 다만 바이너리 파일 형태로 판매를 할 경우 구매한 기업에서 소스 코드를 요청할 시에 해당 소스 코드를 제공해야 합니다.

 

 

 

4. 결론

  1) 개발한 프로그램을 포함한 전체 프로그램의 소스 코드를 공개해야 합니다.

  2) LGPL 라이브러리는 소스 코드를 공개해야 하고 개발한 프로그램은 오브젝트 코드를 공개해야 합니다.

  3) 어떠한 형태로든 판매가 가능합니다.

 

 

※법적분쟁발생시본답변은법률적해석혹은논리로활용될수없습니다.

 

 

 

 

 

 

 

 

 

목록

관리자페이지
제목