关于开源协议 GPL 3.0 的一个疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gibber
V2EX    开源软件

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

  •  
  •   gibber 2025 年 4 月 30 日 2023 次点击
    这是一个创建于 264 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    11 条回复    2025-04-30 18:31:03 +08:00
    kita
        1
    kita  
       2025 年 4 月 30 日
    你是怎么和这个 database service 通讯的,使用的是 MariaDB/MySQL connector ?
    如果不是,是使用这个 database 提供的,看看有无 API 例外协定,没有的话就大概率被认定传染。
    否则只要不是 AGPL ,你连 database 改过的都可以不用向第三方(非你直接客户)公开
    gibber
        2
    gibber  
    OP
       2025 年 4 月 30 日
    @kita 是的,因为它完全兼容 mysql ,所以直接用的 mysql connector 连接访问。
    hugowangnz
        3
    hugowangnz  
       2025 年 4 月 30 日
    这必然是会被传染的
    msg7086
        4
    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
        5
    msg7086  
       2025 年 4 月 30 日
    对你来说,如果你的程序可以与多个数据库任意连接运行,甚至数据库都不一定在本地电脑上,那本来就没有许可证感染的问题。(当然前提是你使用 MySQL 连接器的方式符合其许可证,比如说 LGPL 或者更宽松的许可。)
    keakon
        6
    keakon  
       2025 年 4 月 30 日
    总不能因为我用 Windows 跑了个 Linux 的虚拟机,就要求 Windows 开源吧?
    geelaw
        7
    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
        8
    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
        9
    Greendays  
       2025 年 4 月 30 日
    这种情况,只有说你研究了一个数据库,是在 GPL 开源数据库的基础上开发的,你才需要开源代码。你开发一个产品,连接了 GPL 开源的数据库,这是不用开源的。
    unused
        10
    unused  
       2025 年 4 月 30 日
    不要一起分发
    gibber
        11
    gibber  
    OP
       2025 年 4 月 30 日
    谢谢各位,已经清楚了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3048 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:01 PVG 22:01 LAX 06:01 JFK 09:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86