<p>我正在用Python开发一个GPL许可的应用程序,需要知道GPL是否允许我的程序使用专有插件。这是关于这个问题的<a href="http://www.gnu.org/licenses/gpl-faq.html" rel="noreferrer">what the FSF has to say</a>:</p>
<blockquote>
<p><strong>If a program released under the GPL uses plug-ins, what are the requirements for the licenses of a plug-in?</strong></p>
<p>It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.</p>
<p>If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means the plug-ins must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when those plug-ins are distributed.</p>
<p>If the program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case. </p>
</blockquote>
<p>fork/exec和动态链接之间的区别,除了某种程度上是人工的之外,并没有延续到解释语言上:Python/Perl/Ruby插件是通过<code>import</code>或<code>execfile</code>加载的呢?在</p>
<p>(编辑:我理解为什么fork/exec和动态链接之间的区别,但似乎有些人想要遵守GPL,却违背了“精神”——我不——可以使用fork/exec和进程间通信来做几乎任何事情)。在</p>
<p>最好的解决方案是在我的许可证中添加一个异常来显式地允许使用专有插件,但是我不能这样做,因为我使用的是<a href="http://trolltech.com/products/qt" rel="noreferrer">Qt</a>/<a href="http://www.riverbankcomputing.co.uk/software/pyqt/intro" rel="noreferrer">PyQt</a>,这是GPL。在</p>