6

考虑以下步骤:

0) 发布开源的Mock Program和Mock Plugin,通过一定的接口(一)进行通信,交换复杂的数据结构,共享内存,相互调用。对其应用全许可许可证。

1) 发布插件,设计用于以接口 (I) 定义的方式与任何程序一起工作。该插件使用第三方 GPL 覆盖的代码,GPL 本身也是如此。它最初是使用模拟程序开发和测试的。它作为任何 GPL 程序分发,并提供源代码。

2) 发布闭源专有程序,旨在以接口 (I) 定义的方式与任何插件进行通信。它最初是与 Mock Plugin 一起开发、测试和交付的。

3.1) 将安装脚本添加到下载 GPL 插件并将其附加到已安装程序的程序中。

3.2) 代替安装脚本添加说明如何手动下载和附加 GPL 插件。

因此最终用户获得了专有程序,该程序受益于插件中的 GPL 覆盖代码。

问题:

0)如果它是合法的,那么在开发人员相当小的努力下,在任何专有程序中获得任何 GPL 涵盖的代码,这难道不是一种合法的方式吗?

1)如果它不合法,那么 GPLv* 的哪一部分或任何东西阻止谁执行哪一步?

2) 3.1 和 3.2 之间有什么法律区别吗?

3)Mock Program和Plugin、专有程序和GPL Plugin是由一个人开发还是不同人开发,是否有法律上的区别?有意还是无意?

4)你的意见是什么——它是否足够合乎道德?

5) 有没有这种策略的现有样本?

6) 是否有任何更简单的合法方法来实现相同的结果 - 发布可能并且最有可能从 GPL 代码中受益的专有程序?

更新:

从字面上看,这意味着为闭源程序编写插件并在 GPL 下发布会导致该组合成为插件的扩展,因此属于 GPL,涵盖了整个闭源程序也

但是这种组合不是分布式的,它是在最终用户机器上组合的。就像我自己对 Linux 的修改一样,在我发布它之前我不必开源。在这种情况下,最终用户设法在没有访问程序源的情况下进行了修改——对他有好处,但到目前为止我没有看到任何非法行为。

为了使用 GPL 覆盖的插件,主程序必须在 GPL 下发布

我看到了 GPL 常见问题的那部分。但是插件可以独立开发并与 MockProram 一起提供。最终用户可以从 MockProgram 中获取插件并将其放入专有程序中。在最后一步之前,GPL 和封闭源代码是分开的。该步骤由最终用户完成,他没有义务,因为他不分发组合产品。

更新 2

如果法院发现其中一个是专门为要求另一个而设计的,那么您可能会遇到麻烦。模拟程序和模拟插件的性质也可能发挥作用,至于它们是“真正的”程序还是傀儡。咨询律师。

看起来像是问题 3 的答案。谢谢。

4

6 回答 6

8

这绝对是不道德的。当我选择 GPL 而不是 BSD 时,我的意图很明确 - 如果您从我的代码中受益,那么您应该回馈。很清楚我希望您如何回馈 - 通过提供对使用我的代码的 COMPLETE 系统的完全访问权限。GPL 的核心目的是让其他人能够对这样的系统进行修改并从中构建其他东西。

步骤 3.1/3.2 存在社会学问题。当他的系统停止工作时,用户会问谁?尤其是GPL插件的问题,GPL插件作者会支持这样的用户吗?GPL 插件开发者会招待不道德的闭源应用程序开发者吗?

鉴于上述情况,没有人会以足够大的规模尝试您的问题 4、5 和 6 以引起注意。此外,如果您正在编写从中赚很多钱的商业应用程序,那么您通常可以以一定的价格从版权所有者那里许可该 GPL 代码在您的项目中使用。

回答问题 3,如果您是 GPL 代码的唯一作者,那么您对该代码拥有完全的版权。你可以用它做任何你想做的事情,包括在非 GPL 项目中使用它,即使你已经在 GPL 下发布它供其他人使用。

于 2008-10-12T09:55:59.450 回答
7

这不是技术问题,而是法律问题。请咨询在您所在地区获得执业许可的律师。

于 2008-09-26T20:03:45.937 回答
6

如果程序动态链接插件,它们之间进行函数调用并共享数据结构,我们认为它们形成了一个单独的程序,必须将其视为主程序和插件的扩展。为了使用 GPL 涵盖的插件,主程序必须在 GPL 或与 GPL 兼容的自由软件许可下发布,并且在分发主程序以与这些插件一起使用时必须遵守 GPL 的条款插件。

来源

于 2008-09-26T20:04:19.133 回答
4

目标代码形式的作品的“对应源代码”是指生成、安装和(对于可执行作品)运行目标代码和修改作品所需的所有源代码,包括控制这些活动的脚本。但是,它不包括作品的系统库,或通用工具或普遍可用的免费程序,这些程序未经修改用于执行这些活动,但不属于作品的一部分。例如,对应源包括与工作源文件关联的接口定义文件,以及工作专门设计需要的共享库和动态链接子程序的源代码,例如通过这些子程序之间的密切数据通信或控制流和工作的其他部分。

如果法院发现其中一个是专门为要求另一个而设计的,那么您可能会遇到麻烦。模拟程序和模拟插件的性质也可能发挥作用,至于它们是“真正的”程序还是傀儡。咨询律师。

于 2008-09-26T20:23:16.140 回答
1

我认为如果您实际上不链接程序,您也许可以做到。让它们成为单独的进程,并通过套接字或命名管道或类似方式进行通信。

但实际上,我同意第一张海报。如果您打算在非 GPL 项目中使用 GPL 代码,有几个不错的选择:

  1. 咨询精通此类问题的律师
  2. 将代码作为 GPL 发布到您的整个项目中
  3. 不要在该地方使用 GPL 代码
  4. 联系 GPL 代码的作者,向他们提供补偿以换取对您使用其代码的自由限制较少的许可证。
于 2008-09-26T20:58:39.097 回答
1

我在这里问了一个非常相似的问题,但从我希望从一开始就将原始产品开源的起点,这仍然让我有能力在以后出售它。

我并不是说 GPL 是正确的——有些领域我真的不同意(有些我真的不明白!),但至少这是朝着正确方向迈出的一步。

我认为这真的归结为一个问题:-

  • 您的软件是否需要GPL 代码才能运行。

如果答案是肯定的,那么接受它并继续前进。如果答案是否定的(就我而言),那么到目前为止的共识是我不必担心 GPL。

于 2009-03-10T11:48:04.680 回答