据我所知,当我使用任何 GPL 代码(例如 MySQL)构建桌面/服务器应用程序时,我必须在 GPL 下发布我的软件的源代码。

如果我想使用 MySQL 开发一个 Web 应用程序,我的代码将链接到 MySQL 库。在这种情况下,我必须根据 GPL 发布我的 web 应用程序的源代码吗?

有帮助吗?

解决方案

如果您将其保留为仅用于服务器(因此“私有”),则不必将其作为 GPL 发布。但一旦到达公共桌面,它就不再被视为内部构建,因此需要源代码。

所以你可以:

  • 以 GPL 形式发布您的代码
  • 购买MySQL的商业版本
  • 使其仅用于服务器。

其他提示

您必须发布源代码(根据GPL),或者向MySQL支付专有许可证,以便您获得以更加适合专有产品使用的许可证分发MySQL二进制文件的权利。不过,最好把这类问题提交给你的律师。

ETA :只是澄清一下;如果您编写自己的库,使用其有线协议与MySQL通信,那么您将始终100%明确。同样,如果您使用的库已经完成了,但是获得了BSD许可(作为示例),那么您也是明确的,因为您只是通过套接字连接与MySQL通信,而不是实际调用进入GPL代码。我没有立即知道任何BSD许可的MySQL协议接口,但当然有可能在那里有一个。

如果您自己运行Web应用程序,而不是将其作为应用程序分发,那么您不必释放源代码。允许访问Web应用程序不被视为分发。

编辑:如果您有兴趣,可以查看 Affero通用公共许可证,其中要求来源可供AGPL软件的网络用户使用(例如,它适用于Web应用程序)。

为了在您的应用程序中使用MySQL,您不一定要链接MySQL库。你所要做的就是“说话”。到使用MySQL协议的MySQL服务器;在这种情况下,您将作为客户端(即作为用户)连接到MySQL服务器,然后您不需要根据GNU GPL许可证发布您的软件。

问题是,您的程序如何说MySQL协议?一种可能性是使用官方MySQL客户端库(连接器), GPL。如果这样做,您将程序静态链接到GPL库,因此您需要在GPL下发布您的软件。

或者,您可以使用不同的许可证链接到第三方客户端库。例如,您可以使用 MariaDB Client Library ,这是LGPL(因此兼容)使用专有软件)并提供原始MySQL客户端库的相同API。有关更多详细信息和建议,请参阅适用于MySQL的 MariaDB许可常见问题解答

将MySQL服务器与您的软件一起分发可能很棘手:您可以简单地要求您的客户自己下载和安装MySQL,或者开发一个简单的下载程序与您的软件一起分发。

MySQL使用双重许可。正如他们所说 - 如果你有空,我们就是自由的。

因此,如果你只使用MySQL JDBC Connector,你应该使用许可证或GPL代码。

除非您派生和/或分发GPL软件,否则您应该是安全的。

链接MySQL客户端库既不是衍生作品,也不是分发。

更新:来考虑一下,你如何链接(动态或静态)与库将有所作为。静态链接是分发,但如果您动态链接并且您的客户端自己下载连接器,那么这不是分发,您应该是安全的。

哦,还有IANAL。

  

如果我想使用MySQL开发网络应用程序,我的代码将链接到MySQL库。我是否应该在这种情况下发布我的webapp的源代码以符合GPL?

  1. 正如其他人所说,如果您没有将应用分发给其他人,则完全没有问题。

  2. 通常,您将针对标准数据库API进行开发,并让用户决定连接到该应用程序的数据库。在这种情况下,没有问题。 “您的代码”不会链接到libmysqlclient,但它可能会与链接到libmysqlclient的数据库访问模块结合使用。

  3. 如果您要分发一个将应用程序和libmysqlclient设置在一起的安装程序,那么可能不会算作“仅仅聚合”,因此它需要您将应用程序分发到开源许可证。然而,这不一定是GPL —  参见 MySQL FOSS许可证例外

  4. 如果您要分发设置应用程序和MySQL服务器本身的安装程序,则异常不适用,因此您仅限于GPL。

  5. 当然IANAL,对于什么算作推导,尤其是动态链接,肯定还存在一些不确定性。然而,上面是我对MySQL AB在许可方面的传统立场的理解,我没有听说过Sun公司收购后的任何变化。

不幸的是,它并不是那么干净:GPL禁止分发而不给出每个“衍生产品”的来源。分配在法律上定义为将来源从一台计算机转移到一台或多台计算机供官方使用的行为。

不幸的是,还可以包括在服务器群集,QA盒,开发盒等上的使用。在现代开发商店中,只需将代码发布到多个前端/后端盒就是技术上的分布(在法律的眼睛)。

自由软件基金会的想法并不重要,一旦有人/某公司因此而被起诉,一些法官会认为这很重要。

这就是为什么 GPL的主要客户如今是希望阻止竞争对手提供代码的公司的另一个原因。其他人应该考虑使用麻省理工学院或知识共享署名许可证等少得多的许可证。

首先,我不是律师。在采取任何建议之前先与其他人交谈。

除此之外,如果您不分发您的网络应用程序,您可能不需要发布您的更改。如果您托管Web应用程序,您仍然可以让其他人使用您的Web应用程序。

如果您的发行版在同一个软件包中包含并安装MySql,则需要商业许可证。

但是,如果你只分发你的代码,仅仅需要“需要MySql”。通知和安装脚本(创建/填充表格),应该没有问题,AFAIK。

IANAL,当然。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top