已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > 其他编程语言

标题: 禁止商业使用违反GPLv3许可证

作者: @Ta

时间: 2016-12-29发布,2016-12-29修改

点击: 10811

向树洞外链发起了issue(https://github.com/HFO4/shudong-share/issues/16),顺便发在虎绿林。任何想在GPLv3下发布程序的人都应该注意这一点。

以下内容摘录自GNU通用公共许可证第三版非官方简体中文译本,虽然不是官方翻译,但是内容基本是准确的:

7.附加条款
----------
…………

尽管本授权在别处有提供,对于您加入到程序中的材料,您可以(如果您由该材料的版权所有者授权的话)用以下条款补充本授权:

a. 拒绝担保责任或以与本授权第15和16小节条款不同的方式限制责任;或者

b. 要求保留特定的合理法律通告,或者该材料中或包含于适当法律通告中的该程序的作者贡献;或者

c. 禁止误传该材料的来源,或者要求该材料的修改版本以合理的方式标志为与原版本不同的版本;或者

d. 限制以宣传为目的的使用该材料作者或授权人的姓名;或者

e. 降低授权级别以在商标法下使用一些商品名称,商标或服务标记;或者

f. 要求任何发布该材料(或其修改版本)的人用对接收者的责任假设合同对授权人和材料作者进行保护,避免任何这样的假设合同直接造成授权人和作者的责任。

所有其他不许可的附加条款都被认为是第10节 中的“进一步的约束”。如果您收到的程序或者其部分,声称自己由本授权管理,并补充了进一步约束,那么您可以删除这些约束。如果一个授权文件包含进一步约束,但是允许再次授权或者在本授权下发布,只要这样的进一步的约束在这样的再次授权或发布中无法保留下来,您就可以在覆盖程序中加入该授权文件条款管理下的材料。

10.下游接收者的自动授权
-----------------
…………

不可以对从本授权协议获取或确认的权利的执行强加任何约束。比如,您不可以要求授权费用,版税要求或对从本授权获取的权利的执行收取任何费用。您不可以发起诉讼(包括联合诉讼和反诉)声称由于制作、使用、销售、批发或者引进本程序或其任何一部分而侵犯了任何专利权。

-------------
就这两条来看,在树洞外链发布页面出现的以下条款构成对用户的“进一步的约束”:
树洞外链允许你以自由地以非商业化模式使用。不允许你以出售账号、用户组等一切商业形式使用树洞外链。如需要投入商业运营,请购买商业授权。

因此根据GPLv3,软件作者不可以发布这样的条款。如果收到了附带这样条款的软件,用户可以删除这样的条款。并且,只要用户发布该软件的修改版,这样的“进一步约束”就完全无法保留下来

-------------
虽然获得商业利益对软件开发者来说非常重要,但是既然选择了 GNU 通用公共许可证,您就有义务遵守它的全部条款,无论您是否愿意这样做。这个许可是不可修改,不可撤销的。

最后摘录一段来自GNU通用公共许可证的话做为结束:

12.不要放弃别人的自由
-------------

如果您遇到了与本授权相矛盾的情况(无论是法庭判决,合同或者其他情况),它们不能使您免去本授权的要求。如果您不能同时按照本授权中的义务和其他相关义务来发布覆盖程序,那么您将不能发布它们。比如,如果您接受了要求您向从您这里获取本程序的人收取版税的条款,您唯一能够同时满足本授权和那些条款的方法是完全不要发布本程序




附录(老虎在issue中的回复):

某虎是自由软件的不狂热支持者,不像理查德·斯托曼那样认为非自由软件就不应该存在。但是某虎对自由软件的“非自由约束”是敏感的。实话说,当看到那句“不允许你以……一切商业形式使用树洞外链”的时候,某虎是挺生气的,因为就某虎目前对法律文本的理解来看,GPL在这里显然被不合理使用了。一个真正的自由软件不能限制用户使用软件的方式,无论用户是自己使用还是让他人付费使用,都完全符合GPLv3和《著作权法》的要求,因为软件的作者已经通过GPLv3向用户授予了无条件的、不可撤销的运行该软件的权力(让他人付费使用由该软件提供的服务显然只是一种运行该软件的行为,而不是分发该软件的行为或者其他行为),这种授权的效力是由《著作权法》的软件许可证相关条款来保障的。

说了这么多,某虎并不是要出售外链服务。某虎只是一种“斯托曼式情节”的爆发而已。而正是这种情节在理查德·斯托曼身上的爆发,才让我们有了GPL和在GPL下发行的无数优秀的自由软件。

树洞外链已经是一个优秀的自由软件项目了。希望它做得更好。

[隐藏样式|查看源码]


『回复列表(21|隐藏机器人聊天)』

3. @水木易安,这是一个严肃的主题帖,请谨慎从事灌水作业。
(/@Ta/2016-12-29 17:36//)

4. 说实话没看懂→_→
(/@Ta/2016-12-29 17:52//)

5. @20263,简单的来说就是,你不必购买树洞外链的商业授权,也可以商业使用树洞外链,因为树洞外链是在GPLv3许可证下发布的。树洞外链的“禁止商业使用”条款是违反他们自己选择的GPLv3许可证的,因此条款是无效的。
(/@Ta/2016-12-29 18:10//)

6. @老虎会游泳,这样就懂了/手动滑稽
(/@Ta/2016-12-29 20:42//)

7.

@老虎会游泳,今天特意来了解一下GPLv3

虽然GPLv3允许项目变成商业使用目的,但是GPLv3是不是有传染性,一个基于或者包含GPLv3的项目即使是在商业使用的目的下也必须得开源?

小米5黑色低配版

(/@Ta/2019-07-11 09:12//)

8.

@水木易安,是的哦。而且GPLv3禁止添加附加限制条款(比如不得禁止其他人商业使用)。

不过,运行GPLv3代码的网站不需要开源,因为这并不是分发。其他人从未接触到该网站程序的“二进制”(只是接触到了该网站程序的“输出”),所以也不需要向其提供源代码

AGPL则不一样,如果网站程序通过AGPL进行许可,只要其他人能够访问你的网站,你就必须向其提供源代码。

(/@Ta/2019-07-11 12:59//)

9.

@老虎会游泳,如果我编写的软件A使用了 GPL 协议开源,我自己是否还能在另一个自己编写的软件B中,闭源地使用软件A中自己编写的代码?

前提是,软件A使用了 GPL 库(如x264);软件B没有。

(/@Ta/2022-09-22 02:58//)

10. @老虎会游泳,我的项目之前已经以 Apache License 2.0 开源了,现在我想开发一些新功能,需要依赖以 GPL 2.0 授权的库。

似乎我需要改变为 GPL 2.0 许可证,才能使用相应的库。

但它们的网站说 GPL 2.0 与 Apache License 2.0 不兼容。

常用的 Android 依赖库、开发资源和图标素材都是以 Apache License 2.0 授权的。若是使用 GPL 2.0 就无法使用 Apache License 2.0 授权的内容,那么开发 Android 应用将近乎寸步难行。

如果发布时的安装包不包含 GPL 代码,而是在运行时联网加载 GPL 库的 *.so 文件,能跳过 GPL 限制吗?
(/@Ta/2022-09-22 05:06//)

11.

@tasy5kg,不能。动态链接是LGPL的边界,但不是GPL的边界。做为外部程序调用才是GPL的边界。

(/@Ta/2022-09-22 08:12//)

12. @老虎会游泳,如果我的程序以 GPL 2.0 协议开源,是不是就意味着,我的程序将无法包含他人以 Apache 2.0 协议开源的任何作品,例如代码、依赖库、图像和文字?
(/@Ta/2022-09-22 13:36//)

13.

@tasy5kg,不是,你可以引用他人以 Apache 2.0 协议开源的任何作品,但组合作品的许可证只能是GPL。

(/@Ta/2022-09-22 18:33//)

14. @老虎会游泳,就我个人的感受而言,GPL 协议是一个可怕的圈套。我要么与它划清界限,要么就会深陷其中。
(/@Ta/2022-09-22 20:36//)

15.

@tasy5kg,我没有看到你的前一个问题,对于这个问题:

如果我编写的软件A使用了 GPL 协议开源,我自己是否还能在另一个自己编写的软件B中,闭源地使用软件A中自己编写的代码?

答案是完全可以。因为单一作者作品的作者本人完全不受许可证约束。许可证是一种著作权许可,只有其他人才能成为被许可方,作者自己使用自己的作品,无论以何种形式,都不需要成为自己的被许可方,因为作者本人不可能自己起诉自己。

所以,作者本人当然可以随意在任何地方使用自己的GPL代码,只要这部分代码确实是你自己独立完成的,没有其他来自GPL许可的共同作者,那就完全没问题。

而如果你使用的代码有多个作者,情况就复杂了。你必须得到所有其他作者的同意才能闭源使用。因为只有著作权人才能起诉你侵权,如果所有其他著作权人都放弃追究你的权利,那么你自然是安全的。

从这个角度来说,GPL也可以成为商业软件保护自己的武器——如果我以GPL开源我的项目,再维护一个功能增强的闭源“商业版”,那么就只有我能闭源发布这个商业版,其他人想用开源代码改一改发布个闭源商业版就不行。只要我小心谨慎,绝不把别人提交的代码往闭源商业版里丢(虽然不能照抄代码,但是可以照抄思路),就可以保证这种模式一直维持下去。

MySQL目前就采用这种模式。

(/@Ta/2022-09-22 22:17//)

16.

@tasy5kg,而且上述回答在

前提是,软件A使用了 GPL 库(如x264);软件B没有。

的情况下也不受影响。因为组合作品是可拆分的,你只要能把属于你的那部分单独拿出来,保证不含别人的GPL部分,就能想怎么用就怎么用。

(/@Ta/2022-09-22 22:22//)

17.

@tasy5kg,顺便一提,绕过GPL其实可能比想象中的更容易,因为进程隔离这个GPL边界其实很容易实施。

比如,直接调用x264库会感染GPL,但调用ffmpeg命令行程序就完全不受感染。

所以只要给库写个命令行程序包装一下,只开源命令行程序,顺便保证这个命令行程序能够单独使用,就能完美绕过GPL了。

把这个能单独使用的命令行程序打包进你的软件里,并不会让整个软件感染GPL,只有这个命令行程序需要开源。

(/@Ta/2022-09-22 23:03//)

18. @老虎会游泳,这样,是不是可以将大量第三方 GPL 库打包成一个应用程序,并以 GPL 协议开源,提供公开接口,可供其它任何应用调用。

然后,任何开发者开发任何应用,想要使用 GPL 库时,就不必使用 GPL 协议开源,只要将我的 GPL 程序内置进去,就能通过调用我的程序间接使用 GPL 库了?
(/@Ta/2022-09-23 00:22//)

19.

比如,直接调用x264库会感染GPL,但调用ffmpeg命令行程序就完全不受感染。

@老虎会游泳,或者更直接一点,我编译了一份带有 GPL 库(libx264)的 FFmpeg,作为 *.so 文件内置在安装包中。

然后我在 Java 代码中,像 Runtime.getRuntime().exec("ffmpeg -i input.mp4 -c:v libx264 output.mp4"); 这样执行命令行调用,也可以绕过 GPL 限制吗?

(/@Ta/2022-09-23 01:17//)

20.

@tasy5kg,是的,这个.so实际上是可执行文件,只是错误的命名为.so。

(/@Ta/2022-09-23 08:12//)

21.

@tasy5kg

这样,是不是可以将大量第三方 GPL 库打包成一个应用程序,并以 GPL 协议开源,提供公开接口,可供其它任何应用调用。

然后,任何开发者开发任何应用,想要使用 GPL 库时,就不必使用 GPL 协议开源,只要将我的 GPL 程序内置进去,就能通过调用我的程序间接使用 GPL 库了?

我认为是的。

(/@Ta/2022-09-23 08:14//)

下一页 1/2页,共21楼

回复需要登录

9月15日 01:15 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1