我想编写一个以GPLv3发布的应用程序(将用.NET编写),我正在编写它,以便其他人可以将扩展名编写为DLL库。我假设这些也必须作为GPLv3发布,这是预期的。
我希望应用程序在第一个版本上附带的库之一将是一个与第三方应用程序连接的库。第三方应用程序提供了一个带有API的免费(如啤酒).NET库,它实际上是与第三方应用程序通信的通信驱动程序。
我的问题 - 这样可以吗?我假设它是,否则我无法编写基于.NET的代码并将其作为GPLv3发布,因为.NET实际上是带有API的库的集合。我有道理吗?
答案 0 :(得分:6)
请记住,这是一个问题,你应该问知识产权律师,而不是软件开发人员。我们所能给予的只是我们最好的猜测。
我的建议是阅读相关API附带的许可证,如果您有任何其他问题,请直接与API发布商联系。猜测,即使是集体猜测,也是构建软件的糟糕框架。
答案 1 :(得分:5)
GPL已经包含了“系统库”和某些“标准接口”的规定,您的DLL扩展接口可能属于这些规范。诸如C运行时,.NET Framework和POSIX API之类的东西都属于这些例外。您的DLL扩展接口可能属于“标准接口”一词。
但是,如果你正在编写应用程序(不修改现有的GPL应用程序),那么你可以做任何你想做的事 - 毕竟它是你的。
如果您担心DLL扩展接口不是“以源代码形式向公众提供实现的标准接口”,您可能希望为GPL编写特定的例外以允许链接在非GPL第三方库中,扩展DLL使其清晰,并允许其他人提供这些扩展。请注意,除了这样的例外,一些开发人员可能会尝试将其用作不必通过将其打包在扩展DLL中来释放修改的漏洞。
当然,与任何与许可证或其他法律事宜相关的帖子一样,标准免责声明适用(IANAL,使用风险自负,这不是建议,如果您试图起诉我,这可能完全不正确我声称我没有写它(有人必须闯入我的SO帐户),等等等。)
答案 2 :(得分:4)
根据GPL上的FSF's FAQ:
我可以使用非免费工具在GPL下发布一个程序吗?
您用于编辑源代码,编译或研究或记录源代码的程序通常对有关源代码许可的问题没有任何区别。 但是,如果您将非免费库与源代码链接,那么这将是您需要处理的问题。它不排除在GPL下发布源代码,但如果库不适合“系统库”例外,则应附加明确的通知,允许将程序与它们链接。 FSF可以为您提供建议。
请参阅常见问题解答中的this entry了解更多详细信息(这里有点介入)。
TL; DR 如果是系统库,则可以执行此操作。否则,您可以附加一条通知,告知最终用户可以链接到已关闭的源库(如果您需要帮助,请联系FSF)。
答案 3 :(得分:1)
虽然不太可能(正如其他人所说)可以将其作为GPL应用程序发布,但请记住,您可以使用其他许可证,这些许可证对于您可以对第三方代码执行的操作更加宽容,但是它仍然允许你保持一些控制(或不,如你所愿)的源代码:链接等LGPL,MPL,BSD许可证等,但