GPL이 파생 작업에 내포 될 수 있습니까?


13

A, B 및 C의 세 가지 소프트웨어 프로젝트가 있습니다.

A는 누구에게나 게시되며 GPL에 따라 라이센스가 부여됩니다.

B는 A를 확장하고 게시도되지만 라이센스 정보가 없거나 실수로 LGPL에 따라 라이센스가 부여됩니다. 기본적으로 GPL이 아니므로 A의 라이센스를 위반합니다. B의 소스 코드는 여전히 사용 가능합니다.

C가 B를 확장합니다. C를 GPL로 게시 할 수 있습니까? 동기는 "A는 GPL이며, 모든 파생 상품도 GPL이어야하므로 B는 GPL이고 C도 GPL 일 수 있습니다".


5
C의 어느 부분이 C를 확장하고 있습니까? 그들이 모두 A에 있으면 아무런 문제가 없습니다. C 가 A 가 아닌 B의 일부를 확장하면 상황이 흥미로워집니다.

나는 A, B, C 프로젝트의 이름을
정하고

1
또한 GPL은 LGPL과 호환되므로 적어도 GPL로 C를 게시 할 수 있다고 생각합니다. 그러나 IANAL
Basile Starynkevitch

2
@Tichodroma, C는 B의 일부를 확장하지만 B는 A 없이는 존재할 수 없습니다 :)
Andrej

C의 저자도 A의 일부를 썼습니까? 그렇지 않다면 A의 저자가 B에게 어떤 라이센스를 주 었는지 전혀 모르므로이를 구축 할 수 있을지 모른다.
dcorking

답변:


23

우선, B는 A의 GPL을 위반합니다. 그러나 그것은 정확히 당신의 관심사가 아니며 여기의 질문과 관련이 없습니다 (누가 B가 코드에서 A의 LGPL 라이센스를 받았기 때문에 LGPL로 릴리스 될 수 있습니까? ).

문제는 "LGPL 코드를 기반으로 GPL 소프트웨어를 만들 수 있습니까?"입니다. 이에 대한 대답은 단순히 "예"입니다.

LGPL은 GPL보다 덜 제한적이므로 (다른 규정이없는 한 B가 A에 대한 라이센스를 위반하는 이유) GPL 프로젝트로 쉽게 되돌릴 수 있습니다.

LGPL 라이센스에서 :

  1. 라이브러리 헤더 파일에서 재료를 통합하는 개체 코드. 응용 프로그램의 객체 코드 형식은 라이브러리의 일부인 헤더 파일의 자료를 통합 할 수 있습니다. 통합 된 자료가 수치 매개 변수, 데이터 구조 레이아웃 및 접근 자 또는 작은 매크로, 인라인 함수 및 템플릿 (10 줄 이하)으로 제한되지 않는 경우, 귀하는 선택한 조건에 따라 이러한 객체 코드를 전달할 수 있습니다. 다음을 모두 수행하십시오.

    a) 라이브러리가 사용되며 라이브러리 및 그 사용이이 라이센스의 적용을 받는다는 각 오브젝트 코드 사본마다 눈에 띄게 통지하십시오.
    b) 객체 코드와 함께 GNU GPL 사본과이 라이센스 문서가 함께 제공됩니다.

라이센스의 일부입니다. LGPL 코드를 기반으로 GPL 소프트웨어를 쉽게 구축 할 수 있습니다.

몇 가지가 있습니다 버전의 차이 는 확인 코드가 GPL의 올바른 버전에 따라 올바른 방법으로 허가되었는지 확인하기 위해 관심을 지불해야합니다 그게.


라이센스 정보가 제시 되지 않은 경우 귀하 라이센스 정보 를 연장 할 권리가 없습니다 . B는 배포되어서는 안되지만 기여는 오픈 소스 라이센스에 따라 라이센스가 부여 되지 않습니다 . 내부 프로젝트이거나 다른 이벤트 일 수 있습니다.

GPL 확장과 호환되는 라이센스에는 제공되지 않습니다. 내부적으로 GPL 소프트웨어를 사용하는 회사 (허용 될 수 있음-위반이 아님)가 잘못된 리포를 공개 한 상황을 고려하십시오.

이 경우 프로젝트 C가 저작권 침해 자체를 위반할 가능성이 있습니다 (B가 추가 한 자료는 GPL에 따라 라이센스가 부여되지 않았기 때문에 처음 배포되지 않아야 함).

하나는 할 수없는 누군가 다른 사람의 소스에 대한 라이센스를 강제로. 라이센스를 준수하거나 위반 한 것입니다. 라이센스를 위반 한 경우 라이센스에 명시된대로 :

이 라이센스에 따라 명시 적으로 제공된 경우를 제외하고 해당 작업을 전파하거나 수정할 수 없습니다. 달리 배포하거나 수정하려는 시도는 무효이며이 라이센스에 따른 귀하의 권리 (11 항의 세 번째 단락에 따라 부여 된 모든 특허 라이센스 포함)를 자동으로 종료합니다.

GPL을 위반한다고해서 해당 재료가 GPL에 속하지 않고 배포 할 수 없다는 의미입니다.


3
좋은 대답입니다. Open Source Stackexchange 제안서 작성 을 고려 했습니까 ?
Philipp

5
@Andrej B의 라이센스 부여 방법을 결정할 권리가있는 유일한 사람은 B를 쓴 사람입니다. A가 GPL 인 경우 "배포하지 않음"또는 "GPL 라이센스"옵션이 있습니다. 잘못 배포되었다고해서 GPL로 라이센스가 부여 된 것은 아닙니다.

6
또한, "B가 A의 저자와 다른 라이센스를 받았는지 여부를 알 수 없습니다." B가 GPL에서 A를 사용하고 있다는 사실을 모르기 때문에 B가 A의 저작권을 전혀 침해하지 않을 수 있습니다. 그리고 그건 당신이) 고유 코드에서 사용할 수 있습니다 그것에 대한 라이센스를 판매하고 있습니다.
cpast

1
B의 작성자가 GPL 라이센스에 따라 A를받는 경우 배포 사실로 인해 GPL이 B에 강제로 적용되지는 않습니다. 그러나이를 수행 할 라이센스가 있습니까? 따라서 소프트웨어를 게시하고 향후 게시 된 모든 파생 제품에 액세스 할 수있는 사람이 있습니까? 그리고 누구나 파생 상품에 대한 라이센스를 강요 할 수 있습니다. (나는 이것에 대한 새로운 질문을 시작할 수있다 :)
Andrej

2
넷째, EULA는 GPL보다 훨씬 법적으로 의심이 많습니다. GPL은 제한이 없습니다. 모든 제한은 실제로 법적인 저작권법에 의거합니다 (GPL이하는 일은 제한을 포기하는 경우도 있습니다). 이것이 GPL이 잘 작동하는 이유입니다. "GPL 위반"과 같은 것은 없으며 저작권 위반도 있습니다. EULA를 사용하면 사람들이 자신을 제한하도록 동의해야합니다. 이것은 당신이 계약법의 영역에 있다는 것을 의미합니다. 계약법은 누군가가 동의하지 않은 것처럼 (아마도 저작권에 동의 할 필요가없는) 매우 어둡고 가능한 방어 수단으로 가득 차 있습니다.
cpast

4

저작권 보유자가 있습니다. A가 작성한 저작물에 대한 저작권이 있으며 B가 추가 한 저작물에 대한 저작권이 있으며 C의 변경 사항에 대한 저작권이 있습니다. C는 A와 B가 저작권을 보유한 소프트웨어를 사용할 권한이 있는지 확인해야합니다.

A는 GPL에 따라 라이센스가 부여되었습니다. 나는 GPL이 당신이 BPL로부터 잘못 라이센스를 받았다고하더라도 GPL 조건에 따라 A의 저작물을 사용할 수있는 권한을 부여한다고 확신합니다. 실제 문제가있을 수 있습니다. 예를 들어 소스 코드를 제공 할 수 있어야합니다. 소스 코드없이 소프트웨어를받은 경우 GPL 약관에 따라 소프트웨어를 게시 할 수 없습니다.

B는 다른 라이센스에 따라 라이센스가 부여되었습니다. B GPL에 따라 라이센스를 받았 어야 했지만 그렇지 않았습니다. B의 라이센스가 GPL보다 더 많은 권한을 부여하는 경우 실제로 A의 코드에 대한 권한이 없습니다. B는 A의 코드에 대한 추가 권한을 부여 할 수 없습니다. A가 허용했기 때문에 GPL 약관에 따라 A의 코드를 사용할 수 있으며 B의 라이센스에 따라 B의 추가 코드를 사용할 수 있습니다.

B가 GPL보다 엄격한 라이센스하에 코드를 공개 한 경우 B는 저작권 침해를 저지를 가능성이 높습니다. GPL 라이센스에 따라 B의 코드를 사용할 수 없습니다. 그것은 종종 혼란스러워합니다 : GPL은 B에게 아무것도하지 않도록 강요 할 수 없습니다 . B에게 선택권을줍니다 :이 방법으로 게시하면 합법적으로 괜찮거나 다른 방법으로 게시하면 불법입니다. B는 불법적 인 일을하고 그 결과 (저작권 침해로 고소)를 당할 권리가 있습니다. 귀하는 B가 귀하에게 제공 한 B의 코드에 대한 권리가 없습니다.


3

기술적으로 GPL 라이센스가 적용되지 않는 코드로 GPL 라이브러리를 확장 할 수 있습니다. 문제는 생성 한 파생 작업을 배포 할 때 GPL이 요구하는 모든 요구 사항을 준수해야한다는 것입니다.

상황에 따라 GPL 아래 에 라이브러리 A가 있고 LGPL 아래에 라이브러리 B에 코드가있을 수 있습니다. 결합 된 작업 (라이브러리 B)은 GPL 라이센스에 따라 효과적으로 배포되며 LGPL 라이센스가 GPL 라이센스와 호환되므로 배포 할 수 있습니다 (GPL 라이센스가있는 프로젝트에서 LGPL 라이센스 코드를 사용할 수 있음).
이러한 상황 에서 GPL 하의 라이브러리 C에 새로운 코드 를 갖는 것이 좋습니다. 결과는 GPL 하에서도 수행됩니다.


이것은 B의 LGPL 부분이 GPL 하의 GPLed A와 함께 사용될 수 있기 때문에 작동합니다. 새 코드가 GPL과 충돌하는 일부 라이센스하에있는 경우 (예 : 모든 권리 보유) B 전체가 GPL에 따라 효과적으로 배포되었다고 가정 할 수 없습니다.
cpast

1
@ cpast : LGPL이 GPL과 호환된다는 것을 잊었습니다. 라이센스가 호환되지 않으면 결과를 배포 할 수 없습니다.
Bart van Ingen Schenau
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.