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

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

  •  
  •   gibber · 130 天前 · 1749 次点击
    这是一个创建于 130 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    11 条回复    2025-04-30 18:31:03 +08:00
    kita
        1
    kita  
       130 天前
    你是怎么和这个 database service 通讯的,使用的是 MariaDB/MySQL connector ?
    如果不是,是使用这个 database 提供的,看看有无 API 例外协定,没有的话就大概率被认定传染。
    否则只要不是 AGPL ,你连 database 改过的都可以不用向第三方(非你直接客户)公开
    gibber
        2
    gibber  
    OP
       130 天前
    @kita 是的,因为它完全兼容 mysql ,所以直接用的 mysql connector 连接访问。
    hugowangnz
        3
    hugowangnz  
       130 天前
    这必然是会被传染的
    msg7086
        4
    msg7086  
       130 天前
    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  
       130 天前
    对你来说,如果你的程序可以与多个数据库任意连接运行,甚至数据库都不一定在本地电脑上,那本来就没有许可证感染的问题。(当然前提是你使用 MySQL 连接器的方式符合其许可证,比如说 LGPL 或者更宽松的许可。)
    keakon
        6
    keakon  
       130 天前
    总不能因为我用 Windows 跑了个 Linux 的虚拟机,就要求 Windows 开源吧?
    geelaw
        7
    geelaw  
       130 天前
    如果你的程序 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  
       130 天前
    你要分清是 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  
       130 天前
    这种情况,只有说你研究了一个数据库,是在 GPL 开源数据库的基础上开发的,你才需要开源代码。你开发一个产品,连接了 GPL 开源的数据库,这是不用开源的。
    unused
        10
    unused  
       130 天前
    不要一起分发
    gibber
        11
    gibber  
    OP
       130 天前
    谢谢各位,已经清楚了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   866 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:24 · PVG 06:24 · LAX 15:24 · JFK 18:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.