GPL 协议的疑惑?

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

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

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

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

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

4675 次点击
所在节点    程序员
42 条回复
msg7086
2022-01-02 11:56:32 +08:00
@westoy
Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish) 下略

直接卖软件是完全合规的。你可以把 Linux 下载回来,然后卖一百万一碟,完全合规。
msg7086
2022-01-02 11:59:02 +08:00
@sagaxu
> You must make sure that they, too, receive or can get the source code.

你「必须保证」他们「能获得源码」。
你描述的做法会导致你无法「保证人们能获得源码」,因此违反了协议。
fbichijing
2022-01-02 12:32:40 +08:00
@dawn009 > “我写的软件你改了之后却不开源”
对于这种是否存在着一种情况。如果软件的复杂性不是很高,个人可能单枪匹马做出来。而使用相同语言做出的一些 gui 有可能外观很相像。如果一人看过一个不是很复杂的开源软件,然后窃取了 idea 自己做出来一个很类似的加了功能打包成二进制售卖。假如无法反编译出源码,那这种该怎么判定呢?
fbichijing
2022-01-02 12:50:11 +08:00
@msg7086
这个保证必须获得的[源码],它的范围涉及到哪些?如果网站系统使用了一个开源插件并增加了它的功能,将增加的功能部分新建分支推送给插件作者就能理解。那如果是使用而没有增加功能,是否意味就可以[白嫖]?但是保证获得源码,这个获得的源码是否囊括网站系统本身(不包含那些密钥之类的)。
就好比一个人在开源代码中获得一把武器,他对这把武器很感兴趣然后增加了武器的功能。接着把该武器一并打包到这个人向外售卖的武器库中对别人售卖。那么这个人该开源哪部分?
ungrown
2022-01-02 12:53:54 +08:00
@fbichijing #23
理念是理念,协议是协议,执行是执行,结果是结果
理想是理想,现实是现实
咋地你想让这世上的每个理想都能“自动”的转换成现实吗
想让理想变成现实就需要具体的人(们)去出力、去想办法,甚至需要牺牲,做得越多,那份理想就有越多的比例变成现实
但同时,做得越多,最后得到的现实结果中也就会包括越多的跟最初的理想“背道而驰”的成分
而且,理想的最初版本一定会随着人们的行动而演变,原教旨真的能够永存吗
种子能发芽,长成参天大树就够了,别强求结出来的果子和一开始种下去的一模一样
sagaxu
2022-01-02 13:03:24 +08:00
@msg7086 没有规定他们获取代码的时长,是一天内获取还是一个月获取,还是一年或者十年。
fbichijing
2022-01-02 13:09:22 +08:00
@ungrown #25
对于 #23 你是想表达“这种情况确实可能存在,并且从某种程度上协议对这种情况没什么约束力。但是从道德层面和协议设计初衷来谴责这个人的这种做法”这个意思吗?

感觉这种情况存在着多种可能。

并且表达了对于提出[这种假设]的[我]的一些不满。哈哈^_^
fbichijing
2022-01-02 13:22:53 +08:00
@ungrown 我提出问题本身仅是想了解协议纠正自己对其理解的偏差,明确其赋予的权力和限制后以便自己做出选择。简单地说就是我想知道了软件使用了这种协议以后我最大程度可以做什么,而不能做什么。
msg7086
2022-01-02 13:27:41 +08:00
@sagaxu 任何人获取到源码前,无人能够获得源码这个事实是存在的,这个事实就导致在十年后第一次成功获得源代码之前的时间段内你违反了许可证。许可证要求的是,如果有人能获得二进制,那么他也必须能获得源代码,没有规定时间不意味着时间可以无限长,而是意味着这两件事应该同时发生。
比如说,买卖交易,你给我钱,我给你东西。显然其中没有规定时间,但你不可以解释说你现在给我钱,我两百年后给你东西。这种说法在法庭上是站不住脚的。

@fbichijing 一般而言,衍生作品只需要达到对方能获取源代码的目的就行了。
你基于插件做二次开发,一般而言只要在插件范围内公开源码即可。
有一点你要知道,就是「使用」是不需要承担开源责任的。修改也不需要。
只有当你「分发」软件的时候,才要承担「同时分发源代码」的责任。

关于武器这个问题,如果武器的源代码是公开的,那么你只需要提供差异部分,让读者能够执行组装出完整代码,一般也认为是满足了条件。如果原本的源代码是不公开的,那么你就必须提供完整的代码。
dawn009
2022-01-02 13:59:31 +08:00
@fbichijing #23 这种重写没问题。有一点例外是如果软件本身包含涉及专利的部分,可能会侵犯专利。
fbichijing
2022-01-02 14:09:17 +08:00
@msg7086 是不是归纳起来就是说:如果一个网站使用了带 GPL 的插件,那么网站源码本身的协议就必须继承为 GPL 。可以随意用这个网站去商用,并且没有开源的必要。但是如果网站制作者有意想共开源码(不包括密钥部分)可以让大家学习借鉴,那么网站制作者没有权力更改源代码的协议,比如 BSD(传染性的体现)。即便插件只是其中占了很少的部分代码。
sagaxu
2022-01-02 14:09:37 +08:00
@msg7086 买卖难道没有时效?当场交付,或者约定时间交付,大件不但明确付款和交付期限,还会约定好延迟履约产生的罚金,很多商品交付周期需要几年。从人们下载到源码的第一个字节开始,就是开始履约了。
liaoyaoheng
2022-01-02 16:13:29 +08:00
其实所有的开源,免费使用,但是所有改动都应该公布代码就行。
ysc3839
2022-01-02 19:02:31 +08:00
@westoy 卖软件应该是没问题的,比如 Red Hat 就有卖不包括支持服务的 RHEL 。
https://www.redhat.com/en/store/red-hat-enterprise-linux-server
zpf124
2022-01-02 19:35:09 +08:00
0 、GPL 不限制收费,只要你给源码,哪怕你直接拿开源软件就改个名字去卖一个亿都不违反 GPL 协议。


先说 web 项目和网站用户的问题,GPL 诞生的年代 Web 的形态和现在差得远呢,他们确实没有考虑到这种形式。所以你的网站如果只是提供服务,那么 GPL 的代码你在修改之后也不需要给谁,因为你只是在使用,没有“发布、分发”,所以自然不需要为你分发的客户提供源代码。 网站的用户只是通过某种协议访问了你提供的服务,但他们并没有你这个服务的所有权。

---------------
比如你拿一个 GPL 开源的 wordpress 插件修改成了一个在国内很优秀的功能,你自己搭建了一个网站大堆用户都用这个插件的功能,这时候你不需要给他们源码; 然后你选择售卖这个插件盈利,那么你有义务向购买了你程序的其他网站站长提供源代码。
----------------
msg7086
2022-01-02 20:21:09 +08:00
@sagaxu 提供源码就是当场交付啊。
在你分发软件的同时,就需要你当场交付源代码。
if you distribute copies of such a program [...] You must make sure that they, too, receive or can get the source code.
当你分发软件的时候(中略)你必须保证他们也收到源代码,或者有办法取得获取。

这并没有允许你在未来才让用户接收到源代码。两句话是连在一起的,事件是同时发生的。

@fbichijing 「使用」是不影响的。
网站其实也不需要整个开源。是否会传染取决于一个项目是否为衍生作品。
如果你的网站并不是围绕着插件开发的,不是插件的衍生作品,一般不认为会被插件传染。
这种情况下,网站和插件是两个独立的作品,修改网站不会影响插件,修改插件也不会影响网站。
icyalala
2022-01-02 20:35:49 +08:00
GPL 也有好几个版本呢,Linus 喜欢 GPLv2 ,但是狂喷 GPLv3 。。
说白了 GPL 本来就是带着政治或者宗教式的东西,诸如 Linus 这种程序员只想要简单些,但 RMS 这类人显然不是。
所以即使选择了同一个协议,不同作者想法也有可能各不相同。
sagaxu
2022-01-02 23:36:55 +08:00
@msg7086 提供一个下载链接就完成源码交付了,用户要花多久下载完成,那是另一个主题。

有哪一家安卓机销售的时候源码同时送达客户?预装 linux 发行版的品牌电脑随机给代码光盘了吗?
iseki
2022-01-03 23:41:06 +08:00
@fbichijing 净室开发?
iseki
2022-01-03 23:45:17 +08:00
@sagaxu GPLv2 要求必须提供可机读的源代码~~~我觉得如果打印出来的可机读可能也行~~~(GPLv2 第 3 节)

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

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

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

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

© 2021 V2EX