2008-08-28 5 views
7

파이썬에서 GPL 라이선스 애플리케이션을 개발 중이며 GPL이 내 프로그램에서 독점 플러그인을 사용할 수 있는지 알아야합니다. GPL로 발표 된 프로그램이 플러그인의 라이선스에 대한 요구 사항이 무엇인지 플러그 인을 사용하는 경우GPL 프로그램 용 독점 플러그인 : 해석 된 언어는 무엇입니까?

:이 문제에 what the FSF has to say입니까?

프로그램이 플러그인을 호출하는 방법에 따라 다릅니다. 프로그램이 fork를 호출하고 exec를 사용하여 플러그인을 호출하면 플러그인은 별도의 프로그램이므로 주 프로그램의 라이센스가 필요하지 않습니다.

프로그램이 플러그인을 동적으로 연결하고 서로 함수 호출을하고 데이터 구조를 공유하는 경우, 프로그램이 하나의 프로그램을 형성하며 주 프로그램과 플러그인의 확장으로 간주되어야한다고 생각합니다. 인. 즉, GPL 또는 GPL 호환 무료 소프트웨어 라이센스에 따라 플러그인을 출시해야하며 이러한 플러그인을 배포 할 때는 GPL 조항을 따라야합니다.

프로그램이 플러그인을 동적으로 링크하지만 해당 프로그램 간의 통신이 일부 옵션과 함께 플러그인의 'main'기능을 호출하고 리턴 할 때까지 기다리는 것으로 제한되는 경우, 이는 경계선 경우입니다.

포크/간부와 동적 링크의 구분 는 인공의 친절 외에, 해석 언어로 이월하지 않습니다 무엇을 import 또는 execfile를 통해로드되는 파이썬/펄/루비 플러그인에 대해?

(편집 : 포크/임원과 동적 링크의 차이점을 이해하지만, GPL을 준수하기를 원하지만 "정신"에 반하는 사람처럼 보입니다. - 사용하지 않아도됩니다. fork/exec 및 프로세스 간 통신은 거의 아무 것도하지 않습니다.)

가장 좋은 해결책은 라이센스에 명시 적으로 독점 플러그인 사용을 허용하는 예외를 추가하는 것이지만 Qt/PyQt이 GPL 인 이래로 사용할 수 없습니다.

+4

이 질문은 프로그래밍이나 소프트웨어 개발이 아니라 라이센스 및 법적 문제에 관한 주제이므로 닫으려고합니다. 자세한 내용은 [여기를 참고하십시오] (http://meta.stackoverflow.com/a/274964/1402846) 및 [help/on-topic]을 참조하십시오. – Pang

답변

4

그는 구별,

나는 그것의 인공 전혀 생각하지 않습니다. 기본적으로 그들은 통합 수준에 따라 부서를 만들고 있습니다. 프로그램에 본질적으로 화재가 발생하여 API 레벨 통합없이 잊어 버린 "플러그인"이있는 경우 결과 작업은 파생 된 작업으로 간주되지 않을 수 있습니다. 일반적으로 fork/execed 된 플러그인은이 기준에 적합하지만 그렇지 않은 경우가있을 수 있습니다.이 경우는 특히 "플러그인"코드가 코드와 독립적으로 작동하는 경우에 적용됩니다.

반면에 코드가 광범위하게 API를 호출하거나 엄격한 데이터 구조 통합과 같이 GPL의 작업에 크게 의존하면 일은 파생 된 작업으로 간주 될 가능성이 큽니다. 즉, "플러그인"은 GPL 제품 없이는 자체적으로 존재할 수 없으며이 플러그인이 설치된 제품은 본질적으로 GPLed 제품의 파생 된 작업입니다.

좀 더 명확하게하기 위해 동일한 원칙이 해석 된 코드에 적용될 수 있습니다. 해석 된 코드가 API에 많이 의존하는 경우 (또는 그 반대) 파생 된 작업으로 간주됩니다. 극히 적은 통합으로 독자적으로 실행되는 스크립트 일 경우 그렇지 않을 수도 있습니다.

더 많은 의미가 있습니까?

1

@Daniel

fork/exec와 동적 연결 사이의 구분은 인공적인 것 외에도 해석 된 언어로 이어지지 않습니다. import 또는 execfile을 통해로드되는 Python/Perl/Ruby 플러그인은 어떻게됩니까?

나는 구별이 이 인공물 인 것은 확실하지 않습니다. 동적로드 후에 플러그인 코드는 GPL 코드와 실행 컨텍스트를 공유합니다. fork/exec 후에는 그렇지 않습니다.

아무튼 나는 import ing이 새로운 코드를 GPLed 비트와 동일한 실행 컨텍스트에서 실행하게하고 동적 링크 케이스처럼 취급해야한다고 생각합니다. 아니? 인공의 친절 외에 포크/간부 및 동적 링크 사이

1

얼마나 많은 정보를 플러그인과 기본 프로그램간에 공유하고 있습니까? 만약 당신이 그저 프로그램을 실행하고 결과를 기다리는 것 이상의 일을하고 있다면 (프로세스와 프로그램 사이에 데이터를 공유하지 않는다면) 독점적 인 문제로 빠져 나올 가능성이 높습니다. 그렇지 않으면 아마도 GPL이 될 필요가 있습니다. 디.