GPL 协议的疑惑?

2022-01-02 00:46:38 +08:00
 fbichijing

大家好,我在看一些软件时产生疑惑,希望有人可以解答。

对于一些应用在服务端的开源插件,这部分代码使用了 GPL 协议,那么这个协议的限制范围包括了哪些?

使用了 GPL 协议的软件不允许修改以后再以二进制的形式分发,这个很好理解。从实际方面就是作者“我写的软件你却改了以后拿去卖钱”,会严重引起作者的不满。

但是对于服务端的部分,假如一个网站使用了一个 GPL 的开源插件,而这个网站提供服务赚钱。那这种做法是否违反了该协议,是否需要主动公布其源代码。从开源插件作者方考虑,该作者使用 GPL 协议,就存在着某种程度上不允许这种情况存在的意向?

4959 次点击
所在节点    程序员
42 条回复
HXHL
2022-01-02 00:49:55 +08:00
gpl 好像是有这样的漏洞, 你了解一下 AGPL ,应该是补上了。
fbichijing
2022-01-02 00:53:27 +08:00
@HXHL 我看到有些文章确实是以此为“漏洞”。我的意思是如果作者本身不希望这种情况存在,那么使用者在一开始选择上主动考虑要不要使用这插件。而不以漏洞来穿越。
sagaxu
2022-01-02 01:02:54 +08:00
GPL 只是规定修改了要开源,并没有阻止二进制分发。

GPL 也没有规定以什么方式开源,我可以规定源码只能上门自取,打印出来给你。
eason1874
2022-01-02 01:14:30 +08:00
@fbichijing 一楼说得对,不是以为有这种漏洞,GPL 是真的有这个漏洞,只在服务器运行 GPL 软件修改版,不涉及分发,也就不用开源

所以后来出了个 AGPL ,要求在服务器运行 AGPL 软件修改版向用户提供服务的,得同时向用户提供相应的源代码

《为什么要使用 GNU Affero GPL 》 https://www.gnu.org/licenses/why-affero-gpl.html
fbichijing
2022-01-02 01:34:17 +08:00
@eason1874 我不是说“以为”有这种漏洞,我是想说明我自己若是想使用这插件。如果是插件作者本意不希望或者不喜欢别人这么用的话,我一开始就考虑是否使用这款插件。就是说客观上漏洞存在,主观上考虑是否使用 这个意思。
fbichijing
2022-01-02 01:36:47 +08:00
@sagaxu 理论上似乎是这样,但好像脱离了协议的初衷。
fbichijing
2022-01-02 01:45:04 +08:00
@eason1874 也就是说使用了 AGPL 协议的服务端程序,必须提供源代码下载。是不是这部分就包括整个系统的源代码而不仅限于修改插件的部分?这就是传染性的一种体现吗?
eason1874
2022-01-02 02:23:51 +08:00
@fbichijing 如何定义传染性,这个话题有很大的争议。我比较接受的观点是,传染的是有独立进程,可以独立提供功能的单一软件。

比如,一个开源转码库,如果你修改后单独编译成一个可独立运行的二进制程序,在软件里调用它,那你只需要开源这个二进制程序源代码

如果你修改后的代码和自己的软件代码耦合,必须要一起编译才可使用到修改版的功能,那我就认为你整个软件源代码都得开源
mxalbert1996
2022-01-02 02:24:17 +08:00
你的理解其实不完全对,GPL 并没有限制二进制分发,也没有限制商业使用(卖钱),它的核心思想是如果你想用它,你所做的所有修改都必须开源回馈社区。Linus 也说过 Linux 能这么成功 GPL 是一个重要因素。
2i2Re2PLMaDnghL
2022-01-02 05:21:14 +08:00
GPL 不阻止反而是明确允许商业使用,包括你自行分发。
你说的这种就是 SaaS (软件即服务),确实是 GPL 漏洞。而且实际上 FSF 是干脆反对所有把计算算法托管给别人的做法的,姑且是把 SaaS 其中刨去通讯,剩下用于计算的 SaaSS (服务即软件替代品),抨击了不少。

AGPL 也不是万金油;实际上 AGPL 是个试制品,只能说试验不是很成功。

@sagaxu 实际上这边是有明确限制的,参考 6 章节,abc 描述了实体设备内嵌代码的情况,d 描述了特设地点可供获取的情况下应以相同方式相同地点获取源代码(如果是联网服务器,则可以采用另外的服务器,但不得需求使用额外的复制设施,比如浏览器就能下载,但非得要 git 才能获取源代码)。
dawn009
2022-01-02 06:18:26 +08:00
> 使用了 GPL 协议的软件不允许修改以后再以二进制的形式分发,这个很好理解。从实际方面就是作者“我写的软件你却改了以后拿去卖钱”,会严重引起作者的不满。

不是这个原因。GPL 的目的是为了保护软件使用者的自由。“我写的软件你改了之后却不开源”,会损害其他人的自由。
cassyfar
2022-01-02 06:48:16 +08:00
GPL 病毒式传播本来就很有争议,这也是阻碍他现在发展的很大原因。你这个定义是更广泛的病毒式传播,估计真这样就没人会用了。

工业界更喜欢 BSD 这类许可,你可以通俗理解为“白嫖”。比如说后端应用场景最重要的云计算,大部分流行的开源组件都不是用的 GPL ,而是基于 BSD 的类似许可,比如 Apache License 。
sagaxu
2022-01-02 09:55:27 +08:00
@2i2Re2PLMaDnghL 下载限速 1KB ,再打包几个大文件进去,几个小时后随机出错,不支持断点续传,你能怎么样?
PopRain
2022-01-02 10:15:09 +08:00
我理解如果你只是用了这个开源插件或者只修改了这个插件,那需要公开源码,并不用公开其它部分(否则 liunx 下的商业软件全要开源了)
如果你的网站时基于某个 GPL 的项目做的,那你整个网站都要开源
PopRain
2022-01-02 10:18:02 +08:00
Postgresql 用的是类似于 BSD 的协议,随便白嫖,所以很多“国产具有自主知识产权”的数据库都是从 pg 衍生的,有的竟然还拿了国家科技进步二等奖。。。。
而 MySql 就很少有人用,要么说兼容,要么底层还是 MySql 那一套,上层开发(相当于做应用)
swulling
2022-01-02 10:25:47 +08:00
对 GPL 最大的误解就是它限制了商用。

只要你回馈社区,遵守协议。你赚几十亿刀都没人管你。
swulling
2022-01-02 10:28:06 +08:00
@PopRain 国产数据库基本都是基于 PG 的。MySQL 社区版一来历史包袱很重代码可读性比较差,不像 PG 来自于学校,架构比较科学。

另外 mysql 社区版的协议也是 GPL ,国产数据库倒是不怕源码公开,但是怕虎皮被扯开。
westoy
2022-01-02 10:43:16 +08:00
限不限制商用看解读了

GPL 原教旨主义允许商用指是附加物, 你可以卖硬件赚钱,比如安装了 linux 的路由; 你可以提供服务赚钱, 比如红帽; 你可以卖安装介质赚钱,包括下载服务, 比如 RMS 早年卖 emacs 软盘, 但是你不能以卖软件的名义卖, 同样你也不能限制获取源码的人二次分发, 我记得 blender 在协议声明里针对插件销售是有专门强调过这点的
L4Linux
2022-01-02 10:43:22 +08:00
@mxalbert1996 核心思想是确保用户对其使用的软件进行完全控制,包括修改代码。
msg7086
2022-01-02 11:54:23 +08:00
> 从实际方面就是作者“我写的软件你却改了以后拿去卖钱”,会严重引起作者的不满。

完全不对,建议重新读一遍协议。
GPL 特别说明,任何人都可以修改 GPL 协议的软件,而且也可以以任何价格分发给他人。
「我写的软件」你拿去卖一毛钱或者卖一百万都是合法的。
相反的,如果「我写的软件」是 GPL ,而你要拿去卖但我不许你卖,那么「我」才是违反协议的人。

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

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

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

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

© 2021 V2EX