답변:
당신은 할 수 사용하는 프로그램은 GPL에 의해 영향을받지 않고 자신의 프로그램에서 · 배타적 프로그램을,하지만 당신은 당신의 프로그램이 GPL의 조항이 적용되기없이 자신의 프로그램에 · 배타적 코드를 링크 할 수 없습니다.
기존 명령 행 프로그램을 중심으로 GUI 랩퍼를 작성한 질문에 제공된 예제에서 GUI는 GPL 프로그램을 GPL 프로그램에서 실행하는 별도의 프로그램 인 경우 GPL의 조건에 구속되지 않습니다. 별도의 프로세스를 수행하고 기존 인터페이스 (예 : 명령 행 또는 stdin / stdout)를 통해서만 통신합니다.
GPL FAQ의 관련 비트 :
두 개의 개별 프로그램과 두 부분으로 구성된 하나의 프로그램 사이의 경계는 어디에 있습니까? 이것은 법적인 문제이며 궁극적으로 판사가 결정할 것입니다. 적절한 기준은 통신 메커니즘 (exec, 파이프, rpc, 공유 주소 공간 내의 함수 호출 등)과 통신의 의미 (어떤 종류의 정보가 교환되는지)에 달려 있다고 생각합니다.
모듈이 동일한 실행 파일에 포함되어 있으면 하나의 프로그램으로 확실히 결합됩니다. 모듈이 공유 주소 공간에서 서로 연결된 상태로 실행되도록 설계되어 있다면, 모듈을 하나의 프로그램으로 결합해야합니다.
반대로 파이프, 소켓 및 명령 줄 인수는 일반적으로 두 개의 개별 프로그램간에 사용되는 통신 메커니즘입니다. 따라서 통신에 사용될 때 모듈은 일반적으로 별도의 프로그램입니다. 그러나 의사 소통의 시맨틱이 복잡한 내부 데이터 구조를 교환 할 정도로 충분히 친밀한 경우, 두 부분을 더 큰 프로그램으로 결합한 것으로 간주하는 기초가 될 수도 있습니다.
GPL 적용 플러그인을로드하도록 설계된 무료 프로그램이 아닌 프로그램을 출시 할 수 있습니까?
프로그램이 플러그인을 호출하는 방법에 따라 다릅니다. 예를 들어, 프로그램이 단순한 포크와 exec 만 사용하여 플러그인을 호출하고 통신하는 경우, 플러그인은 별도의 프로그램이므로 플러그인 라이센스는 기본 프로그램에 대한 요구 사항을 요구하지 않습니다.
프로그램이 플러그인을 동적으로 링크하고 서로 함수 호출을 수행하고 데이터 구조를 공유하는 경우 기본 프로그램과 플러그인의 확장으로 처리되어야하는 단일 프로그램을 믿습니다. GPL로 보호되는 플러그인을 사용하려면 기본 프로그램을 GPL 또는 GPL 호환 자유 소프트웨어 라이센스로 배포해야하며 기본 프로그램을 배포 할 때 GPL 조건을 준수해야합니다. 플러그인.
프로그램이 플러그인을 동적으로 링크하지만 플러그인 간의 통신이 일부 옵션을 사용하여 플러그인의 '주요'기능을 호출하고 리턴 될 때까지 기다리는 경우로 제한됩니다.
GPL은 어떤 경우에도 기본 명령 줄 프로그램에 전적으로 적용됩니다. 사용자가 다른 소스에서이를 얻는 것과는 달리 GPL을 배포하는 경우 GPL 사본을 사용자에게 제공해야합니다. 명령 행 프로그램이 GPL하에 있고 (GUI 랩퍼가 아닌 경우에도) 요청시 명령 행 프로그램의 소스 코드를 사용할 수있게하십시오. GPL FAQ에서 다시 :
사람들이 GPL로 보호되는 소프트웨어를 사용자가 부분적으로 독점적이라고 알고있는 시스템의 "일부"라고 배포하는 경우 사용자는 GPL로 보호 된 소프트웨어에 대한 자신의 권리를 모를 수 있습니다. 그러나 그들이받은 것이 무료 프로그램과 함께 다른 프로그램이라는 것을 알면 그들의 권리는 분명해질 것입니다.
표준 면책 조항 : 저는 변호사가 아니며, 변호사 인 경우에도 귀하의 변호사가 아닙니다 . 결정적인 답변이 필요한 경우 관할 지역에서 실습 할 수있는 라이센스가있는 적절한 법률 전문가에게 문의하십시오.
이는 프로그램이 GPL 프로그램을 얼마나 정확하게 "사용"하는지에 달려 있습니다. GPL FAQ는 다소 긴 설명 이 있지만 여전히 해석에 많은 관심을 가지고 있습니다.
독점 시스템에는 GPL 적용 소프트웨어를 통합 할 수 없습니다. (...) 그러나 많은 경우 GPL 지원 소프트웨어를 독점 시스템과 함께 배포 할 수 있습니다. 이 작업을 올바르게 수행하려면 자유 및 비 자유 프로그램이 무기 길이로 통신하고 단일 프로그램을 효과적으로 만들 수있는 방식으로 결합되지 않아야합니다. (...) 두 프로그램이 하나의 프로그램에서 효과적으로 두 부분이되도록 결합 된 경우 두 개의 개별 프로그램으로 취급 할 수 없습니다. 따라서 GPL은 모든 것을 다루어야합니다.컴파일러와 커널 또는 편집기와 쉘처럼 두 프로그램이 잘 분리되어 있으면 두 개의 개별 프로그램으로 취급 할 수 있지만 제대로 수행해야합니다. 문제는 단순히 형식 중 하나입니다. 수행중인 작업을 설명하는 방법입니다. 왜 우리는 이것에 관심이 있습니까? 우리는 사용자가 컬렉션에서 GPL로 덮인 소프트웨어의 무료 상태를 명확하게 이해하기를 원하기 때문입니다.
커맨드 라인 GPL 프로그램을 호출하기 위해 주로 존재하는 GUI의 예에서 두 가지가 분명히 단일 프로그램을 형성하므로 GPL에서 코드를 해제해야한다고 생각합니다.
아니.
GPL 코드는 다른 GPL 코드에서만 사용할 수 있습니다.
Wikipedia의 GPL 기사 의 첫 줄 인용 :
GPL은 일반적으로 사용되는 최초의 카피 레프트 라이센스이므로 파생 된 저작물은 동일한 라이센스 조건에 따라서 만 배포 될 수 있습니다.
그 외에도 GPL은 몇 페이지 길이이며 여러 버전으로 존재합니다.
경고, 개인이 앞을 내다 본다!
나는 매우 제한적이고 바이러스와 같은 특성 때문에 GPL 라이센스를 개인적으로 많이 싫어합니다. 그들은 "무료"라고 부르지 만 실제로는 그 반대입니다. GPL 코드는 다른 GPL 코드 이외의 다른 용도로는 사용할 수 없습니다. 따라서 현재 프로젝트가 오픈 소스인지 여부에 관계없이 다른 프로젝트를 GPL로 강제하거나 전체 라이브러리를 다시 작성해야합니다. 예를 들어 freeBSD와 같은 거대한 오픈 소스 프로젝트가 있었는데, 라이센스가 호환되지 않기 때문에 수십만 줄의 리눅스 코드를 다시 작성해야했습니다. GPL과 호환되지 않습니다.
"원하는대로하십시오"라는 의미에서 진정한 "무료"라이센스를 원한다면 BSD 또는 MIT 라이센스를 권장합니다 ... 실제로 다른 라이센스는 대부분 괜찮습니다. 그것이 얼마나 제한적이며 다른 사람들이 어떻게 그것을 강요하는지 때문에 실제로 문제가되는 것은 단지 GPL입니다. 마지막으로 지나치게 복잡합니다.
아, 그렇습니다, 그것은 또한 편도 티켓입니다. GPL은 대부분의 라이센스에서 라이센스가 부여 된 코드 / 라이브러리를 사용할 수 있지만 이러한 라이브러리 / 코드는 차례로 GPL 코드를 사용할 수 없습니다.