微软创建了他们的 windows 和 MFC DLL 库等。一个开源开发者编写了一个新的 MFC 应用程序并将源代码作为 GPL 发布。该应用程序必须与 MS DLL/库链接才能在 Windows 中运行,但我认为没有人可以争辩说我们现在有权强制微软的 GPL 他们的 DLL。
这是否意味着 GPL 许可证真的取决于首先“创建”哪个? 如果首先创建专有库(例如 Windows DLL),在没有链接的情况下发布,并且任何 GPL 代码,然后一个 GPL 程序与之链接,则 GPL 程序无法将专有库转换为 GPL,尽管专有代码是“链接”与 GPL 代码。
如果是这种情况,像 NVidia 或 RealNetworks 这样的公司可以做以下事情吗?假设他们喜欢将专有的 HDDecoding 媒体解码引擎库保密,但他们也想“利用”开源 GPL 代码来展示他们的硬件。
- 他们创建了一个专有库来进行媒体解码并发布一些示例代码。
- 有人(开源开发)创建了链接到这个专有库的“插件”,用于 GPL 代码,例如 XBMC、Mplayer 或 VLC。
- 他们是否可以争辩说,由于他们首先创建了专有库(就像 MS 首先创建所有 DLL),与其专有代码链接的 GPL 程序不会将它们转换为 GPL 代码。
理论上可以说,创建与 NVidia 专有媒体解码器库链接的 GPL vlc.exe 文件的开源开发人员违反了 GPL 许可。
这是否意味着在 Windows 中运行的所有 GPL 程序,例如 VLC、git、cygwin 等都违反了 GPL 许可证,因为它们肯定需要与专有的 Microsoft Windows 库链接才能运行。
案例2:这有什么问题:
NVidia 可以创建一个隐藏最新图形功能的新硬件抽象库。他们还用这个库创建了一个 FreeBSD 驱动程序,并发布了 BSD 驱动程序的源代码,而不是库源代码。
某人(Linux 开发人员)可以实现与此库链接的 linux 驱动程序,以创建适用于 Linux 的 NVidia 图形驱动程序。但是由于 NVidia 没有这样做,他们可以在启用“Linux 支持”的同时保持库源“隐藏”。
这肯定违反了 GPL 的精神。
这是否意味着在 Windows/Mac/Iphone/PSP3 中运行任何使用 GPL 源创建的 exe 也违反了 GPL 精神?