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

2025 年 4 月 30 日
 gibber

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

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

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

另外,协议感染归根结底是基于「衍生作品」判断。你的作品需要是「衍生」自 GPL 项目,才会被 GPL 项目感染。仅仅是融为一体运行,并不会自动导致项目变成衍生作品。比如你给魔兽世界写了一个 lua 语言的插件,然后你把插件 GPL 开源了,游戏运行的时候插件和游戏本体融为一体运行,但你的插件并不会自动就把游戏传染了,因为普通人很容易认定游戏本体并不是插件的衍生作品,游戏并不需要插件就可以运行。
msg7086
2025 年 4 月 30 日
对你来说,如果你的程序可以与多个数据库任意连接运行,甚至数据库都不一定在本地电脑上,那本来就没有许可证感染的问题。(当然前提是你使用 MySQL 连接器的方式符合其许可证,比如说 LGPL 或者更宽松的许可。)
keakon
2025 年 4 月 30 日
总不能因为我用 Windows 跑了个 Linux 的虚拟机,就要求 Windows 开源吧?
geelaw
2025 年 4 月 30 日
如果你的程序 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
2025 年 4 月 30 日
你要分清是 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
2025 年 4 月 30 日
这种情况,只有说你研究了一个数据库,是在 GPL 开源数据库的基础上开发的,你才需要开源代码。你开发一个产品,连接了 GPL 开源的数据库,这是不用开源的。
unused
2025 年 4 月 30 日
不要一起分发
gibber
2025 年 4 月 30 日
谢谢各位,已经清楚了

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

https://study.congcong.us/t/1129045

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

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

© 2021 V2EX