GPL ライセンスのアプリケーションを Python で開発していますが、GPL が私のプログラムでプロプライエタリ プラグインの使用を許可しているかどうかを知る必要があります。この問題についてFSF は次のように述べています。
GPL の下でリリースされたプログラムがプラグインを使用している場合、プラグインのライセンス要件は何ですか?
プログラムがプラグインを呼び出す方法によって異なります。プログラムが fork と exec を使用してプラグインを呼び出す場合、プラグインは別個のプログラムであるため、メイン プログラムのライセンスではそれらの要件はありません。
プログラムがプラグインを動的にリンクし、それらが相互に関数呼び出しを行い、データ構造を共有する場合、それらは単一のプログラムを形成すると考えられます。これは、メイン プログラムとプラグインの両方の拡張として扱われる必要があります。つまり、プラグインは GPL または GPL と互換性のあるフリー ソフトウェア ライセンスの下でリリースする必要があり、それらのプラグインを配布するときは GPL の条項に従う必要があります。
プログラムがプラグインを動的にリンクしているが、それらの間の通信がプラグインの「メイン」関数をいくつかのオプションで呼び出し、それが戻るのを待つことに限定されている場合、それは境界的なケースです。
fork/exec と動的リンクの違いは、人為的であることに加えて、インタープリター型言語には引き継がれません。import
またはを介してロードされる Python/Perl/Ruby プラグインはexecfile
どうですか?
(編集: fork/exec と動的リンクの違いの理由は理解できますが、GPL に準拠したいが「精神」に反する人のように思えます。ほとんど何でもするためのプロセス間通信)。
最善の解決策は、ライセンスに例外を追加して、独自のプラグインの使用を明示的に許可することですが、 GPL であるQt / PyQtを使用しているため、そうすることができません。