5

我开始构建一个使用开源库的商业应用程序。我一直在研究各种文件和帖子,但我仍然遇到问题。据我了解,我需要“隔离”开源部分。做到这一点的一种方法是提供一个通过“vanilla”链接与开源通信的类。

建议的解决方案是修改开源(命令行实用程序),为其提供某种 API。然后开发使用 API 与开源程序通信的包装器或代理程序。将修改后的源代码和包装器作为开放源代码发布,但保持源代码的其余部分关闭。请注意,开源部分将与代码一起交付并作为静态或动态链接库执行。

这在 GPL 下有效吗?

4

6 回答 6

5

不,如果它是 GPL 并且您与之链接,那么您的代码也将成为 GPL。如果是 LGPL,情况就不同了(您可以构建与 LGPL 许可库链接的商业应用程序),但这里的情况似乎并非如此。

于 2009-03-26T17:55:45.397 回答
2

如果你不链接它,你就很清楚了。因此,无需为这个开源命令行工具开发 API,只需编写一个小包装器,直接在命令行上与程序交互即可。

由于您没有链接,现在只是执行二进制文件,因此您的代码不必在 GPL 下发布。

您可以使用 fork、pipe、exec 和朋友来执行此操作!这是一个简单的解决方案,取决于应用程序如何期望它在命令行上的输入,它可以很好地工作(基于诅咒的东西更难......需要某种终端)

编辑:

从评论看来,即使这也是无效的,仍然可能导致问题。我建议联系律师以确保您清楚,他将能够解释 GPL 并告诉您您可以使用 GPL 代码做什么和不可以做什么。

我认为仅执行 GPL 程序然后向其发送数据(ala 管道数据)不应导致您的程序也被 GPL 程序。

GPL 太复杂了,如果我使用命令行工具来执行它并将数据传输到它,我的程序仍然可以成为 GPL。这很奇怪。一天中的任何时候都给我 BSD 或 MIT,这样更容易理解。

于 2009-03-26T18:04:58.603 回答
1

不要相信那些谈论远程过程调用 (COM) 或标准 IO 的人。如果有任何东西的话,标准的 IO 东西来自遗留情况,例如将输出管道传输到 grep 并将其管道传输到其他应用程序。

相反,请这样想: 您的应用程序是 GPL 组件的派生作品吗? 您能否向一个相当聪明的外行解释一下为什么您的应用程序不是开源库的衍生品。您可以解释 stdio 包装器和 COM 接口,直到您脸色发青,但您的律师、法官、客户或任何人不会购买它。相反,您必须证明删除该 GPL 库不会显着修改应用程序的操作。如果你不能做到这一点,那么,对不起,但你如履薄冰。

于 2009-03-26T18:20:00.457 回答
0

在开始之前,我应该说我不是律师,这不应被视为法律建议。如果您需要法律建议,您应该聘请律师。

只要您将程序链接到 GPL 软件,您的软件就被视为 GPL 软件的衍生作品。

如果您希望使用 GPL 软件,您应该在 GPL 或与 GPL 兼容的许可下发布您的软件。否则,您应该找到另一个软件来满足您的需求,或者自己编写。GPL 的重点是许可的价格是您还可以根据自由软件许可发布衍生作品的源代码。如果您在不支付适当许可费用的情况下不考虑使用专有软件,则不应使用 GPL

您可以隔离它的唯一方法是拥有一个完全独立的可执行文件,该可执行文件通过通用接口(套接字、管道或其他东西)进行通信,以便您的软件或 GPL 软件可以轻松替换。它通信的接口需要非常通用;它不能依赖于 GPL 软件的实现细节,例如内部数据布局或任何类似的东西。基本上,如果它通过可用作通用标准的协议进行通信,那么您的软件可以与 GPL 软件进行通信,而不会被视为衍生作品。

无论如何,虽然可以通过专有软件与 GPL 软件进行通信,但您不应该特意这样做。您将违反 GPL 的精神,并且必须非常小心地使接口具有足够的通用性,以免被视为侵权。相反,您应该找到一个具有不同许可证的软件来满足您的需要,自己编写它,或者在与 GPL 兼容的许可证下发布您的软件。

编辑:Linux Weekly News 上有一篇关于这个主题的有趣文章。根据文章中的分析,即使您分离出一个可以在命令行上与 GPL 软件通信的接口,您也应该将其作为与 GPL 代码一起使用的一组洁净室实现,一组执行其他软件,并且在它们之间传递的所有规范都由律师过滤。所以,真的,麻烦多于它的价值。

于 2009-03-26T18:03:55.317 回答
0

对于 GPL,我认为唯一的出路是将其包装在 COM 对象之类的东西中(这也需要是 GPL 或兼容的),并在运行时连接到该对象。由于这使您无法(静态地)与 GPL 代码链接,因此您将摆脱困境。

该技巧适用于 GPL v2 代码,但可能不适用于 GPL v3。

于 2009-03-26T18:05:05.657 回答
0

请注意,对 GPL 的不同解释几乎与人一样多。

我不是律师,但我曾就这个问题与律师谈过。这不是法律建议。

有律师认为,动态链接违反 GPL 是可以的,并不构成衍生作品。其他人,如 RMS 和他的律师认为,动态链接是不行的,并且确实构成了派生作品。大多数人认为静态链接是衍生作品。

关于这个主题有很多争论,并且没有明确的判例法来定义在这方面什么是衍生作品,什么不是衍生作品。

参见,例如这篇文章

于 2009-03-26T18:22:13.213 回答