MySQL许可和GPL

时间:2009-03-06 22:29:38

标签: mysql licensing gpl

据我所知,当我使用像MySQL这样的任何GPL代码构建桌面/服务器应用程序时,我将不得不在GPL下发布我的软件的源代码。

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

10 个答案:

答案 0 :(得分:19)

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

所以你可以:

  • 以GPL格式发布您的代码
  • 购买MySQL的商业版
  • 保持仅限服务器。

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

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

编辑:如果感兴趣,您可以查看Affero General Public License,这要求向AGPL软件的网络用户提供该来源(例如,它将适用于Web应用程序)。

答案 3 :(得分:2)

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

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

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

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

答案 4 :(得分:1)

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

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

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

哦,还有IANAL。

答案 5 :(得分:1)

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

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

答案 6 :(得分:1)

  

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

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

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

  3. 如果要分发设置应用程序和libmysqlclient的安装程序,这可能不会算作“仅仅聚合”,因此需要您在开源许可下分发您的应用程序。但是,这不一定是GPL - 请参阅MySQL FOSS License Exception

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

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

答案 7 :(得分:1)

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

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

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

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

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

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

IANAL,当然。