商业软件使用mysql数据库,必须开源么?

发布于 2021-11-12 12:31:03 字数 197 浏览 837 评论 10

我们的商业软件,数据库采用社区版mysql。

查看了mysql的许可协议是GPL,我的理解是因为软件使用了mysql官方的连接驱动包(mysql-connector),所以必须开源,

与我的安装包是否包含mysql安装程序没有关系。

那所有使用了mysql的数据库软件,只要提供给用户使用,都必须开源?我的理解对么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

笑红尘 2021-11-18 23:29:59

Forget IT!!!

查不查有区别吗? 

前提是产品得熬到人家值得查你的地步.

现在已经是21世纪第二个10年了, 基于mysql的软件, 不会有机会让别人查的.

瑾兮 2021-11-18 23:20:43

长知识了。

狼亦尘 2021-11-18 23:15:24

学习了,谢谢

沙与沫 2021-11-18 22:39:53

取决于你的客户端driver,比如以java为例,虽然java 的jdbc driver也是GPL的,但是可以不受影响,因为JDBC是一个规范,mysql client driver只是其中一个实现,也就是说理论上你可以将mysql替换为其他任何一个数据库产品,mysql就不是你产品的必须部分,这在GPL的文档里有相关章节。

MarioDB的作者,也就是mysql的创始人专门写了一篇文章解释了这个问题。

你如果使用C,那么就需要开源了,因为不可替换。前面有人对PHP的解释我不确定,理论上,如果PHP执行代码需要直接在同一个进程内调用mysql的客户端代码,而mysql客户端代码是GPL, 就应该是被传染。中间层保护是常用手段,但是前提是非相同进程内调用。

其实GPL的解释在这块本身就是个灰色区域, Stallman认为任何二进制的引用,包括动态链接都应该受传染,而LINUS则认为只受限于源代码级别,即如果只是在程序中调用一个二进制库的方法,而不是扩展和继承,则不应该受影响。但为了保险,大公司会认可stallman这种做法。

另外在产品包里可以随意包含mysql 的原始release package,这和是否GPL没啥关系。 我们公司的鬼子法务专家是这么给我们解释的。

狠疯拽 2021-11-18 21:44:48

谢谢各位参与讨论!

疑心病 2021-11-18 16:59:32

不一定必须,但是还是开源的相对比较好,毕竟开源对开源

岁月打碎记忆 2021-11-18 15:48:55

不对。数据库只是载体,并没有用MySQL的源代码。

离不开的别离 2021-11-18 11:23:15

请教一下,gpl不是传染的吗?那为什么可以用中间层保护呢?按说不应该能有所谓的中间层存在才对?

檐上三寸雪 2021-11-17 14:08:28

哦。@mystart 的答案回答了我的问题。必须是跨进成调用。嗯,厉害厉害,钻空子有理,传染无罪。

沙与沫 2021-11-15 16:19:43

看你用的是 何种语言 ,列如 php的 mysql 驱动被 php环境实现了 ,而php环境代码是开源的。而php语言在 php环境层 上面 ,这里的差别就是中间有个php环境层。所以 用php语言编写的程序可以不开源 。

java 不了解 ,安卓之类的 好像都用 中间层来保护厂商。

如果你直接引用了 mysql-connector 以GPL开源的包 作为你程序的一部分。列如 C语言之类的,那么你是要开源的。

以下是原话:

但是当你将这部分作为基于程序的作品的一部分发布时,作为整体它将受到许可证条款约束。准予其他许可证持有人的使用范围扩大到整个产品。也就是每个部分,不管它是谁写的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文