下一项:,上一项:,上一级:程序行为   [目录][索引]


4.9 动态插件接口的标准

保持自由程序自由的另一个方面是鼓励开发自由插件,并阻止开发专有插件。许多 GNU 程序根本不会有任何类似插件的东西,但是有插件的程序应该遵循这些实践。

首先,通用的插件架构设计应该将插件与原始代码紧密结合,使得插件和基础程序成为一个扩展程序的组成部分。例如,对于 GCC,插件接收和修改 GCC 的内部数据结构,因此显然与基础 GCC 构成了一个扩展程序。

其次,您应该要求插件开发者声明他们的插件是在适当的许可下发布的。这应该通过简单的程序检查来强制执行。例如,对于 GCC,插件必须定义全局符号 plugin_is_GPL_compatible,从而断言该插件是在 GPL 兼容的许可下发布的(请参阅GCC 内部结构中的 插件)。

通过向您的程序添加此检查,您不是在创建新的法律要求。GPL 本身要求插件必须是自由软件,并以兼容的方式许可。只要您遵循了上面的第一条规则,使插件与您的原始程序紧密结合,GPL 和 AGPL 就已经要求这些插件以兼容的许可发布。插件中的符号定义——或者在您的程序中最有效的任何等效方法——使得任何可能分发专有插件的人都更难在法律上为自己辩护。如果关于此事的案件进入法庭,我们可以将该符号作为证据,证明插件开发人员了解该许可有此要求。


下一项:,上一项:,上一级:程序行为   [目录][索引]