商业软件使用mysql数据库,必须开源么?
我们的商业软件,数据库采用社区版mysql。
查看了mysql的许可协议是GPL,我的理解是因为软件使用了mysql官方的连接驱动包(mysql-connector),所以必须开源,
与我的安装包是否包含mysql安装程序没有关系。
那所有使用了mysql的数据库软件,只要提供给用户使用,都必须开源?我的理解对么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
Forget IT!!!
查不查有区别吗?
前提是产品得熬到人家值得查你的地步.
现在已经是21世纪第二个10年了, 基于mysql的软件, 不会有机会让别人查的.
长知识了。
学习了,谢谢
取决于你的客户端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没啥关系。 我们公司的鬼子法务专家是这么给我们解释的。
谢谢各位参与讨论!
不一定必须,但是还是开源的相对比较好,毕竟开源对开源
不对。数据库只是载体,并没有用MySQL的源代码。
请教一下,gpl不是传染的吗?那为什么可以用中间层保护呢?按说不应该能有所谓的中间层存在才对?
哦。@mystart 的答案回答了我的问题。必须是跨进成调用。嗯,厉害厉害,钻空子有理,传染无罪。
看你用的是 何种语言 ,列如 php的 mysql 驱动被 php环境实现了 ,而php环境代码是开源的。而php语言在 php环境层 上面 ,这里的差别就是中间有个php环境层。所以 用php语言编写的程序可以不开源 。
java 不了解 ,安卓之类的 好像都用 中间层来保护厂商。
如果你直接引用了 mysql-connector 以GPL开源的包 作为你程序的一部分。列如 C语言之类的,那么你是要开源的。
以下是原话: