【Linux移除与俄罗斯关联的内核驱动维护者】
b1lz
liudidi GPL主要的特点是你把软件给了一个人,如果他问你要代码你必须给。
不可撤销条款不是GPL独有,也不是所有版本的GPL都有这个条款,GPLv3有:https://www.gnu.org/licenses/gpl-3.0.en.html#:\~:text=irrevocable
GPLv2是没有的:https://www.gnu.org/licenses/old-licenses/gpl-2.0.html#:\~:text=irrevocable
关于GPLv2是否可撤销是有争议的。
SFC认为不可撤销:https://www.reddit.com/r/linux/comments/9j5ggb/sfc_the_gplv2_is_irrevocable/
但是在这个reddit帖子的评论里有人指出即便按照美国法律,GPLv2也只是没法立即撤销(immediately revocable),经过一段时间后(35年)的话可以撤销是没有疑问的:https://www.reddit.com/r/linux/comments/9j5ggb/sfc_the_gplv2_is_irrevocable/e6pamen/
liudidi
b1lz 事实上绝大部分人认为GPL是不可撤销的,日常执行的也是这个原则。GPL不仅是要代码必须给,而且你不能限制取得软件和代码人的再分发权利,这个才是根本。
b1lz
看上面Hacker News讨论里这贴补充一些:https://news.ycombinator.com/item?id=15168917
这讨论里援引的Section 203 of the US Copyright Code是法律,所以即使许可证里写不可撤销也是无效的。
这个要等35年的限制还要是涉及到报酬(consideration)的情况下才成立,而开源软件授权时是否涉及到报酬又是有争议的。
liudidi
杀毒软件吧 https://ofac.treasury.gov/media/932951/download?inline
根据这个解释:https://ofac.treasury.gov/faqs/1188,只要有任何间接向俄罗斯境内实体提供信息技术和软件服务的行为,若存在美国连接点,均可能受到第 14071 号行政令的约束。规避这个风险的最好办法就是要么不在美国,要么和俄罗斯断开联系。
b1lz
liudidi 那你承认这句话是错误的吗?
GPL就是为了避免这种情况才存在的
liudidi
b1lz 错在哪儿了?GPLv3是明确写在条款里的不可撤销。GPLv2虽然没有明确写,但是根据自由软件基金会的文档:https://copyleft.org/guide/monolithic/,有专门一节讨论了GPLv2 Irrevocability,很明确的指出:GPLv2 4--6 interact together to assure that the license grant is irrevocable.
b1lz
liudidi 为什么GPLv3要特地加上不可撤销呢?不就是承认之前没有考虑到吗。GPLv2 1991年出来的,那个网页什么时候的?
liudidi
b1lz 这个文档2003年以前就有,再说不管啥时候的,他解释的都是GPLv2,并且这是最权威的解释。GPLv3加上是因为原来是隐含的,有类似像你这样的人认为有争议(实际上在自由软件基金会看来没有任何争议)。实际上GPLv2的条款里写的很明确了:arties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance。只要下游遵守协议,协议就不会终止。
b1lz
liudidi 自由软件基金会自己这么认为没有用,判官司的又不是他,所以他才想方设法打补丁。
至于你引用的那段,要引用全:
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
说的是你违反协议导致终止不会导致下家也被牵连,没说不能撤销。
liudidi
b1lz FSF写的GPL协议,他自己认为没有用?哪个官司判的GPLv2可撤销?这段话包含的意思就是除非你违反协议,否则协议就不终止,这不就是不可撤销吗?所以FSF的文档里也是这么解释的。
b1lz
liudidi 好吧,比你我的解释有一点用。但也没有用到让他不在GPLv3里加上不可撤销的条款。用这个协议的人是不是知道存在这些个后加的、不知道改过几遍的解释都成问题。
你搞反了,需要证明的是不可撤销。著作权人没有放弃权利的话,凭什么不让他撤销。
这段话只说了你违反协议授权终止,没说不违反就不可以撤销对你的授权。最后一句是防止你的授权终止影响到下家。
liudidi
b1lz 那按你的理解就是这样,你可以撤销授权(在下家不违反协议的情况下),但是你撤销授权只会影响你的下家,而你的下家的下家却不受影响,你想想这合理吗?
b1lz
liudidi 他自己就是这样写的,我每个字都是复制过来的。
我又看了你贴的那个copyleft.org的网页,顶上有一行红字
WARNING: This document is made public for archival and historical purposes only. Not all of the information is current, and accuracy cannot be guaranteed.
我看他们自己都圆不上了,这才在GPLv3加上了
liudidi
b1lz 因为这个文档很早就有了,所以有这行提示,但是关于GPLv2的解释显然是一直有效的。毕竟GPLv2已经发布很长时间了。你复制的这段,这个文档里的解释你再仔细看一下吧。
b1lz
liudidi 请问一个只有单一贡献者、没有用到其他开源代码的软件,他从GPL改成了闭源,是否违反GPL协议?
如果你认为不违反,那就等于承认这个文档就是错误的。这个文档和GPLv2协议本身以及和现实情况有矛盾。
GPLv2§§ 0 的最后一句是“Each licensee is addressed as "you".” 所以GPLv2里的这个you是指被授权人,不是著作权人。而这个文档的试图把贡献者(著作权人)也算到这个you里去:“A contributor by definition is modifying the code and therefore has agreed to all the terms in the GPLv2, which includes the web of mechanisms in the GPLv2 that ensure the code can be used by all.”。
你还去各种问答网站上搜是不是可以relicensing一个GPL授权的软件,所有靠上的回答都会说只要你是唯一贡献者或者得到所有贡献者同意,你怎么干都行。现实中也有不少软件从GPL协议改成闭源的。如果GPL能适用于贡献者的话,那改成闭源明显是违反协议的。
所以这个文档他就不对。
liudidi
b1lz 即使是多个贡献者,从GPL协议改闭源协议也不违反GPL啊。GPL协议从来没有说过你不能改你的协议,只是你改只影响你改以后的,比如QT有多个授权协议,中间还改过几回,并不违反GPL。XFree86 4.4以后改许可证(虽然仍然是开源许可证,但不兼容GPLv2),也不违反GPL,但是基于改许可证之前的XFree86 4.4 RC2派生了Xorg,也不违反GPL。
b1lz
liudidi 我上面已经提到了“只要你是唯一贡献者或者得到所有贡献者同意,你怎么干都行”。那你就是同意可以改了。
但这就和那个copyleft.org文档有冲突了。我再贴一遍这个文档7.4.1第一段最后一句:
“A contributor by definition is modifying the code and therefore has agreed to all the terms in the GPLv2, which includes the web of mechanisms in the GPLv2 that ensure the code can be used by all.”
他认为contributor同意了all the terms in the GPLv2。如果贡献者受到GPLv2的约束,那他就没办法改成闭源协议,GPLv2要求再分发时不得限制复制、分发、修改的权力:
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
你从GPLv2改成闭源协议限制了这些就违反了协议。
所以合理的解释就是这个copyleft.org文档说得不对,贡献者不受GPLv2约束。
b1lz
我说的改闭源协议是改后续版本的协议,不考虑回溯修改之前版本的。注意改协议和撤销授权不是一个东西,我提改协议只是为了说明那个copyleft.org文档是错的,最终目的是证明GPLv2授权不是不可撤销的。
通过GPL获得授权的人要受GPL约束,如果把别人用GPL协议的软件改成闭源协议再分发是违反GPL的。著作权人对自己那部分的权利不是通过GPL获得的,不受GPL约束,所以也就无从违反GPL协议了。
QT公司能随便改授权协议,因为他是唯一著作权人,别人贡献的代码都通过Contribution Agreement把著作权转移给他了。他的著作权都不是通过GPL获得的,GPL管不了他。
XFree86改协议有争议,不过大家都用Xorg去了也就没人较真了。
这两个例子其实无所谓,我想澄清一下而已,扯远了。
我在上一贴说了,那个copyleft.org文档说得不对,贡献者(著作权人)并不受GPLv2约束。而那个文档认为GPLv2授权不可撤销是建立在贡献者(著作权人)受GPLv2约束的前提上的。这个前提不成立,那不可撤销这种观点也就是错误的了。注意撤销授权撤销的是使用已经贡献的代码的权利,而不是你之前在这里https://bbs.loongarch.org/d/485-linux/18说的“你如果撤销授权,只是你撤销授权以后发布的东西别人不能用了,撤销授权之前的东西你限制不了别人使用”,那不叫撤销,只是禁止使用。
liudidi
b1lz 什么叫撤销已经贡献代码的权利,举个例子,现在我以GPLv2协议发布了qsopcast(假如我是唯一贡献者,即使我不是唯一贡献者,最初的代码是我的,效果也一样),然后从今天起我撤销了授权,qsopcast当前版本别人就不能用了吗?这当然不行,这会给人随时终止他人使用软件的权利,和GPL协议的内涵是完全冲突的。
b1lz
liudidi 我来整理下 https://bbs.loongarch.org/d/485-linux/18 里不对的地方:
“GPL就是为了避免这种情况才存在的”:“这种情况”指贡献者撤销授权。这一路下来已经说得很多了,不可撤销条款不是GPL独有,也不是所有版本的GPL都有这个条款。那个copyleft.org文档的对GPLv2后加的不可撤销的解释也不对,因为它建立在了错误的前提下(贡献者要受到GPL约束)。所以GPLv2制订之初就没有考虑到不可撤销。
“你如果撤销授权,只是你撤销授权以后发布的东西别人不能用了,撤销授权之前的东西你限制不了别人使用”:撤销(revocation)不是这么定义的,在到期之前取消授予你的权利叫撤销。之前给你用的,现在不给你用了。
“不然X11/mariadb/QT都不会存在了”:关于QT我写点。QT还能继续开源不是因为他用的授权许可,而是因为QT公司和KDE e.V.之间的协议(参考 https://kde.org/community/whatiskde/kdefreeqtfoundation/)。不过QT公司已经做了些不地道但不违反协议的事,比如LTS版本发布一年后(和KDE之间的协议规定的最长期限)再开源,还曾考虑过所有版本都一年后再开源
b1lz
liudidi 你是唯一著作权人,你的权利不是GPLv2授予你的,你用其他随便什么协议著作权都是你的。受到GPLv2条款约束是用你软件的人,不是你