关于开源协议 GPL 3.0 的一个疑问

135 天前
 gibber

我的程序运行需要依赖数据库,比如 mysql 。然后售卖给最终客户时给他安装部署的时候没有使用 mysql ,而是使用了另外一个开源协议是 GPL 3.0 的数据库,直接从 github 拉源码编译,它完全兼容 mysql 包括驱动。但是它也属于我售卖给用户的内容,那么我的程序是否受到 GPL 3.0 协议的传染,也需要开源吗?

1760 次点击
所在节点    开源软件
11 条回复
kita
135 天前
你是怎么和这个 database service 通讯的,使用的是 MariaDB/MySQL connector ?
如果不是,是使用这个 database 提供的,看看有无 API 例外协定,没有的话就大概率被认定传染。
否则只要不是 AGPL ,你连 database 改过的都可以不用向第三方(非你直接客户)公开
gibber
135 天前
@kita 是的,因为它完全兼容 mysql ,所以直接用的 mysql connector 连接访问。
hugowangnz
135 天前
这必然是会被传染的
msg7086
135 天前
1. 其他人使用数据库与你无关。你只对你分发的软件负责,别人修改了使用环境后那就是别人的软件了。比如软件 A 没有使用任何 GPL 项目,然后用户 B 把软件 A 的源代码拿去,修改了代码,让他与 GPL 项目进行了连接,这时候就不是软件 A 了,而是软件 A'。这种场景下,用户 B 需要把软件 A'开源,因为软件 A'被感染了。但这与你本人,以及软件 A 没有关系。

2. 你的程序不会因为「可能」与 GPL 项目连接就被 GPL 传染。要是这样就能传染的话,任何能联网的程序都能通过 TCP/IP 连接到 GPL 程序的端口,那全世界的程序都要被传染了。想想就知道是不可能的。

另外,协议感染归根结底是基于「衍生作品」判断。你的作品需要是「衍生」自 GPL 项目,才会被 GPL 项目感染。仅仅是融为一体运行,并不会自动导致项目变成衍生作品。比如你给魔兽世界写了一个 lua 语言的插件,然后你把插件 GPL 开源了,游戏运行的时候插件和游戏本体融为一体运行,但你的插件并不会自动就把游戏传染了,因为普通人很容易认定游戏本体并不是插件的衍生作品,游戏并不需要插件就可以运行。
msg7086
135 天前
对你来说,如果你的程序可以与多个数据库任意连接运行,甚至数据库都不一定在本地电脑上,那本来就没有许可证感染的问题。(当然前提是你使用 MySQL 连接器的方式符合其许可证,比如说 LGPL 或者更宽松的许可。)
keakon
135 天前
总不能因为我用 Windows 跑了个 Linux 的虚拟机,就要求 Windows 开源吧?
geelaw
135 天前
如果你的程序 A 依赖的 MySQL 是商业协议的,那么你的程序本身不受 GPL 的约束,且没有你的同意的情况下,你的客户 C 无权把它和另一个款数据库 D (你提到的那款 GPL 3 协议的数据库)一起使用。

如果你同意 C 把 A 和 D 一起使用,令 A 连接 D 使用的整体为软件 A',则 A' 受到 GPL 的约束,但是—— C 可以选择自己用 A' 而不分发给别人,因为 GPL 的约束仅在分发软件时存在,所以 C 没有必要开源 A'。

假设你只是允许了 C 把 A 和 D 一起使用,但没有以和 GPL 兼容的协议把 A 授权给 C ,那么:因为 A' 是 A 的衍生作品,所以受到 A 的协议约束,此时 C 无权按 GPL 分发 A',因此 C 只能自己使用 A',因为分发 A' 必然违反你的授权和 D 的 GPL 授权之一。
feedcode
135 天前
你要分清是 GPL 3 还是 AGPL 3.
前者的话你只需提供对应数据库的 copyright 和 license file, 不需要提供你的源码
或者的话需要提供你的源码
https://www.gnu.org/licenses/gpl-howto.html
https://www.gnu.org/licenses/agpl-3.0.txt
Greendays
135 天前
这种情况,只有说你研究了一个数据库,是在 GPL 开源数据库的基础上开发的,你才需要开源代码。你开发一个产品,连接了 GPL 开源的数据库,这是不用开源的。
unused
135 天前
不要一起分发
gibber
135 天前
谢谢各位,已经清楚了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1129045

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX