6

我想编写一个作为 GPLv3 发布的应用程序(将用 .NET 编写),我正在编写它以便其他人可以将扩展编写为 DLL 库。我假设这些也必须作为 GPLv3 发布,这是预期的。

我希望应用程序在第一个版本中附带的库之一将是一个与 3rd 方应用程序接口的库。3rd 方应用程序提供了一个免费的(如在 beer 中).NET 库和 API,它实际上是一个与他们的 3rd 方应用程序通信的通信驱动程序。

我的问题——这样可以吗?我假设是这样,否则我无法编写基于 .NET 的代码并将其作为 GPLv3 发布,因为 .NET 实际上是带有 API 的库的集合。我说得有道理吗?

4

4 回答 4

6

请记住,这是您应该问知识产权律师而不是软件开发人员的问题。我们所能给出的只是我们最好的猜测。

我的建议是阅读相关 API 附带的许可证,如果您有任何其他问题,请直接联系 API 发布者。猜测,甚至是集体猜测,都是构建软件的糟糕框架。

于 2009-02-09T16:52:02.450 回答
5

GPL 已经包含了对“系统库”和某些“标准接口”的规定,您的 DLL 扩展接口可能在其中。诸如 C 运行时、.NET Framework 和 POSIX API 之类的东西都属于这些例外。您的 DLL 扩展接口可能属于“标准接口”术语。

但是,如果正在编写应用程序(而不是修改现有的 GPL 应用程序),那么您可以做任何您想做的事情——毕竟它是您的。

如果您担心 DLL 扩展接口不是“以源代码形式向公众提供实现的标准接口”,您可能希望在 GPL 中编写一个特定的例外以允许在非用于扩展 DLL 的 GPL 3rd 方库使其清晰并允许其他人提供这些扩展。请注意,除了这样的例外,一些开发人员可能会试图将其用作一个漏洞,因为他们不必通过将修改打包在扩展 DLL 中来发布他们的修改。

当然,与任何与许可证或其他法律事务相关的帖子一样,标准免责声明适用(IANAL,使用风险自负,这不是建议,这可能完全不正确,如果您试图就此起诉我,我会声称不是我写的(一定是有人闯入了我的 SO 帐户),等等,等等,等等)

于 2009-02-09T17:10:55.197 回答
4

根据FSF关于 GPL 的常见问题解答:

我可以根据 GPL 发布使用非自由工具开发的程序吗?

您用于编辑源代码、编译、研究或记录源代码的程序通常不会影响与源代码许可相关的问题。但是,如果您将非自由库与源代码链接,那将是您需要处理的问题。它不排除在 GPL 下发布源代码,但如果库不符合“系统库”例外,您应该附加明确的通知,允许将您的程序与它们链接。FSF 可以为您提供建议。

有关更多详细信息,请参阅常见问题解答中的此条目(在此处粘贴有点涉及)。

TL;DR 如果它是一个系统库,你可以做到。否则,您可以贴一个通知,说明最终用户可以链接到封闭源代码库(如果您需要帮助,请联系 FSF)。

于 2009-02-09T17:16:39.630 回答
1

尽管(正如其他人所说)您不太可能将其作为 GPL 应用程序发布,但请记住,您可以使用其他许可证,这些许可证对您可以使用第三方代码执行的操作更为宽松,但仍然允许您保持对源代码的一些控制(或不控制,如您所愿):链接等 LGPL、MPL、BSD 许可证等,但是

于 2009-02-09T16:58:55.460 回答