Bootstrap

人话解读GPLv3

点击上方“开源社”关注我们


| 作者:卫剑钒

| 转载自:微月人话

| 编辑:沈于蓝

| 设计:朱亿钦


GPL最新版本为v3,在开源软件许可证的采用量上,位列前三名或者前四名(其他三位是MIT、Apache、GPLv2)。

如果你浸淫软件业已久,作为开源界如雷贯耳的许可证,无论如何也要了解一下,即便作为谈资也好。

GPL是描述版权人和用户的权利及义务的,如果你使用了GPL软件,又不想惹上官司,就应该了解一下。

GPLv3原版是英文的,如果觉得读起来费劲,就读它的非官方中文翻译(并没有官方的翻译),如果还是觉得费劲,就读对它的解读!

本文就是干这事的。

GNU GPL创始人 理查德·马修·斯托曼(Richard M. Stallman)

关于本文

本文的编排方式:按照GPL章节顺序,先来一段人话解读、然后是一段中文翻译,然后是一段英文翻译。(为清晰区分,后两者以图片形式展现。)

GPL写得比较繁琐,毕竟是准备上法庭的,把各种情况都尽可能考虑了。

本文则是用人话描述其精华,让人能够很容易抓住它的意思。

注意1:中文翻译和人话解读,都只是便于你理解,都不具备法律效力。真需要打官司的时候,你只能以英文原文作为依据。

注意2:本文所引用的中文翻译不是本人翻的,是阮坤良[email protected] 翻译的。(但我用蓝色字体标注了我认为翻译不恰当或不准确的地方。)

我(卫剑钒)只是写了人话解读。

注1:如果不加特别说明,本文中的GPL即指GPLv3,也即GPL version 3。

注2:在本解读里,“授权”和“许可”是一样的,“许可证”和“协议”是一样的,“作品”、“程序”、“软件”是一样的,“采用GPL许可证的作品”、“GPL程序”、“受保护程序”是一样的,“拷贝”和“副本”是一样的,就看语境以及怎么顺口怎么说了。

注3:本解读中,“你”可能是作者、版权人、专利权人、分发人、用户等,“我”可能是FSF、GPL、作者、版权人等,还有可能是解读者我。请根据上下文、语境和你的感觉来判断,不难的。

GPLv3基本精神

如果你就是看看热闹,看本章就够了。

1、你可以免费使用、复制、修改、分发受保护程序,但分发时一定要提供源码。

2、你可以收费。比如可以针对目标码、源码的分发收费,可以针对软件的维修保养(主要是提供技术支持,以下简称“维保”)收费;但不能收许可费、版税、专利许可费、授权费这类费用。

3、GPL程序的所有贡献者,自动免费提供了专利许可,承诺不会告人侵犯专利权(前提是你遵守了GPL)。

4、GPL程序允许别人破解。如果是用在消费类硬件上,要允许人修改并安装程序。

如果你读过GPLv2

主要区别就是:

1、GPLv3对专利做了明确的说明。

2、GPLv3对类似TiVo这种硬件做了一些要求。

3、使用者可以按照要求加一些补充条款(主要是免责和保护版权人权益方面的)。

4、其他诸如允许破解、授权中止和恢复、术语改动等一些较小的改动。

TiVo是一种数字录像设备,它能帮助人们非常方便地录下电视节目并跳过广告。TiVo是基于Linux开的(Linux使用GPLv2),为了安全性考虑,TiVo Series2中添加了硬件保护,在启动时,由ROM对启动文件进行签名验证,以防止任何人修改TiVo软件(这被称为Tivoization)。人们确实可以自由查看TiVo源代码,复制它,并更改它,但如果没有签名私钥,你就无法在TiVo上运行你修改后的程序。

GPLv3在第六条要求TiVo这类厂商提供签名私钥(如果使用了GPLv3程序),使得人们可以运行修改后的代码。不过,Linus对此表示明确的反对,他认为软件开发人员没有权利规定硬件厂商的行为,如果感到一家硬件厂商的专有行为是讨厌的,你可以购买其它厂商的产品。所以,Linux现在使用的还是GPLv2。

GPLv2是没有这个要求的,而且GPLv2第6条说:“不能添加任何额外的限制”。仅从这一点看,GPLv2和GPLV3是不兼容的,因为两者的第6条是冲突的,不能合并GPLv2的代码和GPLv3的代码在一起。

下面是逐段解读

为方便阅读,先是解读,然后是中文翻译和英文原文(后两者用图片格式)。

GPLv3在此!

2007年6月29日发布。

版权 © 2007 FSF

可以复制和传播本许可证,但不得修改。

引言

解读者注:引言是GPLv3的一部分,宣扬了GPL和自由软件的精神。

如果你只对自由软件文化感兴趣,读这段就好了。

GPL可以用于软件,也可以用于其他类型的作品。

我们的理念是要自由!

大多数软件,都不让你分享给他人(比如不让你拷贝给别人,别人如果想用,他只能自己去买),也不让你修改(修改商业软件被判刑的屡见不鲜)。和他们相反,GPL就免费让你干这些事,就给你这样的自由,并且你修改、分享给别人后,别人仍然拥有这样的自由!

相比之下,如果你给一个私有软件(非自由软件)写了一个外挂,相当于修改了这个程序,你如果把这个外挂发布出来,你就可能被告、被抓,被判刑,比如:“全国首例《王者荣耀》游戏外挂获刑案1,再如早年间北京理工大学老师陈寿福因制作珊瑚虫QQ而获刑三年2

一个软件用了GPL许可证,他就是自由软件(别忘了使用MIT、Apahce许可证的都是自由软件),更为重要的是,他的子子孙孙也都是自由软件(copyleft类许可证才能做到这点),人们都可以自由地使用它们!

如果想了解copyleft,可以看看这篇文章:使用Apache协议的软件是自由软件吗?

我们(FSF)使用英文Free,注意它有两个意思:自由,免费。我们说的是前者。

你在分发软件的时候,可以收费。(具体可以收什么费,收多少钱,往下看)。

你要了解你的权利和义务,简单地说,对于一个自由软件,你最主要的权利就是可以分发和修改它,你最主要的义务是:保持它的自由,保障他人对该软件的权利!

自由软件的作者,要做的只有两步:1、声明他对这个软件的版权。(说白了,作者很大度,他只保留了署名权,剩下权利几乎全都让渡。)2、附上本GPL,给人们自由,让人们可以合法地复制、分发和修改这个软件。

自由软件的享用者,要做的是:再分发给其他人的时候(也即发给下游),要继续带上源码,要继续带上这个许可证,让下一位知道他的权利和义务。

有一点必须要说清楚,作者不对产品质量负任何责任,这点想必大家都理解,毕竟没收钱嘛!(如果有人收钱来保证质量,那我们也乐见其成)

还有,要是你修改软件了,你要标注,说你改了什么,免得你带来的bug,让别人以为是原作者水平不高!要知道,我们都是要脸的。

有些硬件设备不允许用户修改其内置软件(类似TiVo那样),这就剥夺了用户修改软件的自由!我们认为,这最不应该发生在个人用户领域。这版GPL有专门条款解决这个问题,上版(GPLv2)并没有。

如果类似问题大面积出现在其他领域,我们会在未来新版的GPL中解决它,总之,我们会坚定不移地保护用户的自由!

还有,我们不想让自由软件受到专利的侵害,也就是说,不能因为被人申请了专利,自由软件就变成了私有软件,这是我们坚决反对的,这版GPL专门有条款防范这种事。

条款和条件

下面,是具体的条款和条件。

从第〇条到第十七条,一共有十八条。

第〇条 一些术语的定义

我们说“软件”也好,“程序”也好,都是一个东西。更广义地讲,他们都是“作品”。本解读会混用这些词汇,你知道这是一回事就行了。

“你”就是正在看许可证的那个人,通常,这个许可证是和某个软件一起分发给你的。

基于一个作品的“修改”形成了这个作品的“修改版本”。(在GPLv2和Apache许可证中,这被称为“衍生作品”(derivative work))

注意:为了便于阅读,本解读仍然习惯性地称之为“衍生作品”。

注意“基于”(based on)这个词很重要,一个作品是不是衍生作品,关键在于对是不是“基于”的判断。比如我把一篇文章拿过来修改了若干处,那就产生了基于这篇文章的一个“修改版本”(衍生作品);而如果我完全重新写了一篇文章,只是引用了这篇文章的几句话,那就不是基于这篇文章的。

一个作品,是不是“基于”另一个作品。我觉得,很多时候,要靠良心判断。

我在“步进式解读Apache许可证”一文中举过一个例子:“Asim质疑go-chassis事件”,就是双方对“based on”的争论和较量。

“受保护作品”(covered work)是指使用GPL许可证的作品或基于该作品的衍生作品,它们都受GPL保护。为简单起见,本解读在很多地方会使用“本作品”、“本软件”、“本程序”替代“受保护作品”,因为GPL通常是和某个软件在一起发给接收者的,GPL描述的许可就是针对该作品的。

在GPLv3中,还有两个新的术语:propagate和convey,本人一向很反感新造词语,但是没有办法,既然GPLv3这么做了,这里必须介绍一下。

“传播”(propagate),定义为“任何可能引发版权纠纷的行为(包括复制、分发、将其公开化等)”。但有两种情况例外:在电脑上运行,自己改着玩。(这两种情况算传播,但不会引发版权纠纷。)

在绝大多数的版权法中,如果传播一个作品,你是需要版权人许可的,没有许可你这么做就会违背版权法。GPL就是在给你许可(但是有条件的),所以如果要传播GPL软件,一定要读GPL许可证。

GPL中的convey,定义为“means any kind of propagation that enables other parties to make or receive copies”,就是一切能让第三方制作和接收拷贝的传播。简单地讲,就是发给别人、放网上让人下载(不管实际上有没有人下载)、通过U盘拷贝、通过电子邮件发送、通过微信发送等等,让他人得到一个软件的拷贝。

convey有不同的翻译,比如“转发”、“传递”、“分发”、“发送”等等,阮坤良将其翻译为“转发”。

本解读仍然把convey翻译为各许可证中常见的“分发”一词,因为我不喜欢用新词。(如无必要,勿增新词!)

GPLv3特别声明:运行软件并仅仅通过网络和用户交互,这种不算分发。各种云服务都不算分发。

在GNU官网的FAQ上,有人问:为什么在GPLv2中用distribution,到了v3,用propagate和convey?3

FSF说:GPLv2的术语 distribution(分发) 是从美国版权法借用的。经年累月,我们了解到一些法律体系在其版权法中也使用同样的术语,但是意义并不相同。为了让我们要表达的意思无论在什么地方都尽可能的清晰,我们发明了这些新的术语。这些术语在任何国家的版权法里都没有使用,而我们直接在许可证中定义了它们。

GPLv3协议的撰写原则是避免使用已经存在的特定法律术语,以免让人以为GPL和特定法律相关。例如,在GPLv2协议中,“分发”和“衍生作品”术语就曾造成过困惑。不过作为一个比较轻松的解读文章,本文仍然使用“分发”和“衍生作品”这两个术语,为的是和其他许可证保持一致,避免因新词汇带来理解上的困难,毕竟本解读是不上法庭的。

有人问:如果我把一个GPLv3程序拷贝给公司里的同事,那我这是否构成convey?

FSF说:如果你们俩都是在工作中使用该软件,而不是个人使用,那这就不是分发。这些软件拷贝是公司的,而不是你和你同事的,你这种行为是传播(propagation)(而且还是那种不违法的传播),而非分发(conveying),因为公司并没有把它拷贝给其他人。

这些术语知道一下就好了,不用细究。

第一条 什么是源码

什么是源码?和你脑海里想的其实差不多。

“源码”是指一个作品的存在形式,并且是人们最喜欢的那种便于修改的形式,通常,就是那种纯文本的代码(并不排除其他形式)。

作品的任何其他非源码形式都称为“目标码”(或者叫“目标代码”),比如中间编译结果、最终的二进制代码等等。

一个作品的源码,指的是生成或再现该作品所需的所有源码。任何一个人,拿到这些源码后,在通用的操作系统上,用通用的工具,就能够简单地把这个作品编译出来或运行起来,并可基于源码,实现对作品的修改。

一个作品的源码,不包括通用操作系统的源码、通用系统库的源码、编译器或解释器的源码。但是对于那些完整运行此作品所必要的一切非通用的代码,都属于作品的源码。

如果一部分源码可以生成另一部分源码,那么后者不应包含在源码内。

总之,一个作品的源码,应该是那些必要的部分,而不应有冗余的、不必要的部分。

其实程序员心里都清楚,哪些是一个作品真正的源码,哪些不是。

这条主要是给非程序员较真时看的。

第二条 基本许可

本协议所赋予你的权利,都是在本程序版权有效期内适用的。

在遵守本协议条件的前提下,本GPL赋予你的权利是不可撤回(irrevocable)的,不会说今天同意给你,明天又说不给你了。给了就是给了,我不会反悔,而且有此条在,我反悔也没有用。

有人总是担心美国会让某些开源项目把授予我们的权利撤回,在我看来是杞人忧天,但他们总是坚信这种可能。建议可以看看这条。

本软件的输出是不受GPL保护的(比如本软件是一个编辑器,你用本软件写了一个新软件,我们不会要求新软件也用GPL),除非它的输出就是本软件或本软件的修改版。

如果你不分发,那你可以无条件的复制和运行本软件。

如果你要分发,你必须要遵守下面的各条款。

除非是这样一种特殊情况:你把一份拷贝给了某人,但只是委托他给你做个修改版,或者帮你在设备上运行这个软件,这种虽然满足convey的定义,但属于特例,不算常规意义的分发,某些条款是不适用的,但是涉及版权的基本要求还得做到(基本的声明还得带着)。被委托人应该是在你的指挥和控制下工作的,是代表你工作的,他不能在你们双方关系之外制作副本。

你分发的时候,不能再授权(再许可),只能是用本许可证GPLv3。(第十条也说了这个事)

也就是说,一个作品用了GPL,他的儿子、孙子、世世代代都是GPL的。

第三条 允许你破解

现在,我们(作者、贡献者、版权人)都把源码开放了,也允许你修改了,事实上就是放弃了“不允许破解本软件”的权利,没错,确实如此。

你如果想破解本软件的什么技术,你就好好破解吧,反正源码都在你手里,看不懂的话,可以问我们。

放心,我们决不会使用什么法律来告你“破解”了本软件。

说白了,我们没有什么技术是遮遮掩掩的,我们就怕你看不懂。

第四条 分发没有改动过的源码

分发有好几种,GPLv3描述了三种情形:

1.分发没有改动过的源码;

2.分发改动后的源码;

3.分发目标码。

三种情况下,要求的条件不一样。

如果你分发没有改动过的源码,要满足以下条件:

1、要醒目而恰当地声明本软件的版权(也就是说本软件是谁做的)。虽然本软件里面会说明版权,但你分发时,一定要有这个意识,除了LICENSE、COPYING、NOTICE、README之类的文件,你如果有更好的声明的方式,Do it。

2、本许可证的所有声明部分都要保持原封不动,所有按照第七条增加的“不允许”类的条款也不能动。(“允许”类的附加条款可以删。)

3、所有关于免责部分的声明不能动。

4、分发时,要随程序给每个接收者一份本许可证。

你可以免费分发,也可以收费分发(收多少钱都可以),你可以因提供维保而收费。

你可以把你从互联网上下载的GPL软件源码卖上100万元,你看看有没有人买。(因为人家也可以从网上下载。)

如果一家银行使用一个GPL的数据库软件,你帮人家解决使用过程中的技术问题,你每年收个20万元的维保费,我看这完全可行。

第五条 分发修改版的源码

现在,你不是分发你下载来的原封不动的源码,你改了一下,让它更好了(也可能是更坏了,谁知道呢)。

现在你要分发这个你改了的程序(也即“衍生作品”),你不仅要满足第四条中的条件,还要满足以下条件。

a) 该衍生作品必须带有醒目的声明,声明这是一个修改后的本作品,并说明修改日期。

b) 还要醒目声明,此衍生作品在本许可证下发布,你可以附加一些符合第七条的补充条款。

这和第二条、第十条都是一致的:虽然加了你的东西,再分发仍然要使用GPL。

只不过你写了新代码,你可以对你的新代码,提点新要求(按照第七条)。

c) 本许可证授权的是整个衍生作品(而不是部分)。不允许以其他许可证或其他形式授权,除非你得到有权人的允许(比如版权人(通常是作者和所有贡献者)特别允许你再授权)。

d)该衍生作品如果有交互式用户界面,就必须显示适当的法律声明。除非是原作品(你修改所基于的那个作品)也不显示。

分发自己修改后的源码是否可以收费?虽然这条没有明说,但说了要满足第四条,从其精神上判断,分发修改后源码一样可以收费,而且可以任意收费,至于是不是有人愿意买就另当别论了。

下面说一下“聚合体”的概念:如果在一个存储介质上(比如光盘、U盘、硬盘等),和本作品一起的还有一些其他作品(这些其他作品,并不基于本作品,也没有和本作品一起构建出一个更大软件),而且从其整体而言,并没有给用户带来额外的权利限制(相对其中任何一个单个作品)。那么,这些作品的集合称作“聚合体”。

解读者注:如果整个聚合体有许可证,那么这个许可证不能限制我GPL给用户的自由,不能和GPL冲突。

“聚合体”中的一个作品使用了GPL,不要求其他软件也要用GPL,也即“不传染”。

了解“聚合体”概念是有用的,因为打官司的时候用得上,比如在数字天堂公司起诉柚子公司一案4,北京知识产权法院(一审)和北京市高级人民法院(二审)就要弄明白这个定义。

不过,我认为,仅仅靠这个定义是远远不够的,还需要更专业的知识和更正直的良心。

第六条 分发非源码形式的情况

如果你要分发GPL程序的目标码(目标码最常见的情形就是可执行程序),你必须以如下方式之一提供对应的源码,并且要满足第四条和第五条。

a)如果目标码是在硬件里(比如在交换机、防火墙、机顶盒、数码相机、手机等这样的硬件里,或者仅仅是在分发介质中的情形),那么,随同这个硬件,给用户附上对应的源码(可通过附带的光盘、U盘这类常用介质)。

b)如果出于种种原因,你没有随同硬件附上源码,那么可以附上一个书面告知单,告知用户要么以很低廉的价格获取源码(收费不超过合理的成本价,比如你放在U盘中寄给用户,要30块钱还是可以的),要么从网上免费下载源码。要保证用户在至少三年内或者享受维保服务期间都能够以这两种方式之一获得源码。

注意:这种情况明确说明了只能以很便宜的价格出售源码,因为用户可能没有别的途径拿到源码,只能从你这里拿,你收很贵的话,就是故意不想给啊。

c)如果你只是转让目标码(比如把数码相机以二手货的方式送给或卖给他人),要附上 b 里面所说的那个书面告知单(你当时拿到数码相机时应该是带这个了),以使得接受转让的人知道如何获取源码。

d)如果你是在某一指定地点(不管是实体店还是网上)提供目标码(收费或免费),那么也要在同一地点提供源码(不得另收费),当然,他如果不要源码,你也不要逼着人家要。

e)如果你使用P2P软件分发目标码,也要像 d 那样,告知在何处可以免费获取源码。

此外,对于消费类产品(GPL用了一大段描述什么是消费类产品),你在分发目标码时,不仅要提供源码,还要提供安装信息(GPL用了一段来描述什么是安装信息,包括需要密钥才能安装的情况),目的就是要最终用户能够自由地把源码用起来(包括改动、安装、运行)。而不是拿着源码(改或不改),却无法让它转起来。

说白了,如果分发GPL程序,你就要真心实意地提供源码,而且要让用户能自由修改和使用,而不是怎么想着钻空子,各种不情愿不老实。

GPLv3并没有要求禁用DRM(数字版权管理,是一类用于保护版权的技术,通常是令人讨厌的),但通过两种途径对它进行了限制。首先,基于GPL程序的DRM,按照第三条,是允许人破解的;其次,使用GPL软件的家用设备必须允许用户执行他们自己修改的版本(TiVo就不让用户改),这样就可以“刷机”绕开DRM。

DRM确实让所有人讨厌:2007年2月6日,乔布斯向外界发布了一封公开信,称苹果已经得出结论,愿意完全废止DRM技术,以便所有的MP3播放器都能播放从任何一家在线音乐店购买的音乐。比尔·盖茨在2007年3月一次接受采访时,也明确表示了对DRM的失望。他认为,DRM让那些合法购买音乐的消费者饱受折磨,却并没有起到防止盗版的作用。所谓饱受折磨是指,如果消费者购买的音乐受DRM保护,通常他们就只能在一种设备上播放。

第七条 可以补充条款

这条是GPLv3新增加的内容,GPLv2中没有。

这条中多次出现material,这里的material,我理解,就是源代码,尤其是指某人写的那部分源代码。所以本解读将meterial译为“代码”而非“材料”。

本许可证允许添加一些“附加允许”(也即附加的允许别人干的事,前提是合法),这些允许可以作用于整个作品,也可以只对作品中一部分起作用。

当你分发本作品时,你可以按照自己意愿有选择地删除一些“附加允许”(有的贡献者在写附加允许的时候,会要求后人在修改其贡献代码时删掉该附加允许)。

你可以对你所修改的代码(你对这部分有版权),增加一些条款。(注意你只能对你的代码提附加要求)

你可以补充的“不允许”类条款只能是以下几类:

a)不同于第十五条、第十六条那种写法的无保证和无责任条款。(“别找我负责”)

b)要求在代码或者作品的声明中,展示作者信息或者其他特定的声明。(“别隐我的名”)

c)不允许歪曲代码的来源,对于代码的修改,要以合理形式标示出和原版的区别。(“别让你蹩脚的代码影响我的声誉”)

d)限制使用作者的姓名来做公开宣传。(“别打着我的名号做广告”)

e)拒绝授权使用某些商品名、商标或服务标识。(“别用我注册的名号”)

f)如果有人和接收者签了合同性质的东西,并提供责任承诺,则授权人和作者不受此责任连带。(“别给我找麻烦”)

其他任何“不允许”类的附加条款,都被视为第十条所描述的“更多限制”。如果你看见有这类条款,可以直接删除它。

如果某个非GPL的许可证允许再授权,或者允许使用GPL分发,但含有“更多限制”,那你可以把该许可证所保护的代码引入到本作品中,前提是把那些“更多限制”都删掉。

如果你补充了附加条款,你得在你的源代码文件中把它写清楚。

附加条款,可以以独立的文档出现,也可以在版权声明文件中声明为例外。

第八条 权利的终止

你必须严格遵守本许可证,才能传播和修改本作品,如果违反本许可证,本许可证授予你的权利全部自动中止。

如果你停止了不端行为,你的权利被暂时恢复,直到版权人明确终止你权利之时;如果版权人在60天内都没有通知你,你的权利被永久恢复。

更进一步,如果你只是第一次收到了某版权人对你的关于违反GPL(对任意作品)的通知,并且你在30天内改正了,你的权利被永久恢复。

解读:这里的不端行为、违反行为,最简单的情况,可以理解为没有提供源码,所谓的停止、改正,就是把源码拿出来了。或者说,你收了用户的专利费,你退回这个费用之类的。

中止你的权利,不代表中止从你这已经获得拷贝的他人的权利。

如果你的权利被中止,你不能通过再次接收同样的代码而重新被授权(如第十条所述)。

看到上面这句,我感到这种文件就像写代码那样严谨,要是有一天,所有类似有法律效应的文件都能用code实现并执行,可就太有效率了!

关于权利恢复,FSF解释说:“在GPLv2,如果你违反任何许可证的要求,你将自动永久失去许可证权利。恢复权利的唯一办法是请求版权持有者。虽然这对违规防御很有价值,但如果有人不经意犯错时就可能导致很多麻烦。请求所有版权持有者正式恢复许可证权利会是代价昂贵的负担:一个典型的 GNU/Linux 发行版会是数千人工作的集合。”5

第九条 你不必接受本协议,如果你仅仅只是持有拷贝

你如果只是接收一个拷贝,你不用接受我(本许可证);

你如果只是运行一个拷贝,你不用接受我;

你如果只是P2P接力,你不用接受我。(了解一下P2P,你就知道这种传播,不是刻意传播)

然而,一旦你修改和传播(propagate)了本作品,就表明你接受了我。

P2P就是指数据的传输不再通过服务器,而是网络用户之间直接传递数据。比如P2P软件BitTorrent,文件的上传和下载都是分成小块进行的,用户之间所拥有的不同小块可以互补。你下载文件时,一方面从多个用户那里取得不同的小块,另一方面也在自动为其他用户提供某些小块的上传。

第十条 对下游的自动授权

如果你分发作品,按照前面的要求,你要带着本许可证。

这样,随着作品,接收者得到本许可证,也就自动获得初始许可人依据GPLv3所给予的各项许可。

你并没有义务非要让他遵守本许可证,他遵不遵守是他的事。

如果是由于组织分拆、合并、转移等等这类事务导致的本作品分发,道理是一样的。

对于受保护作品,你分发时不可以对接收者增加更多限制。比如,你不可以索要版权费、版税、专利许可费、或针对授权而收费;你也不能发起专利诉讼(包括交互诉讼和反诉),宣称对本程序(或其中一部分)的制作、使用、零售、批发、进口,侵犯了任何专利。

微软公司收购诺基亚后,微软所拥有的关于诺基亚曾修改的任何 GPLv3 程序而对应的专利权,都会自动向下游授予许可。所以,收购诺基亚之后,微软对GPLv3 程序的专利诉讼量整体下降。6

第十一条 关于专利

对本作品有贡献的人(可能有多位),都是“贡献人”,贡献人对他贡献的那部分是拥有版权的。

贡献人的“必要专利要求”(essential patent claims)是指该贡献人已经获取或将会获取的,可能会被他人在遵守GPL条款的前提下,因制造、使用或销售本软件而侵犯的专利权。

每位贡献者在此授予你非排他的、可在全球使用的、免费的“专利许可”:许可你可以制造、使用、销售、承诺销售、进口、运行、修改、传播作品中他的“必要专利要求”。

“专利许可”是指明确的协议或承诺,专利权人让你用他的专利,承诺不起诉你。

“专利许可”授权你做的那些事,事实上是指允许你“以生产经营为目的”做那些事;如果不“以生产经营为目的”,即便没有专利许可,你也是可以制造、使用、运行、修改、传播的。

注意:专利是一种技术方案,代码是技术方案的一种实施方式;一个专利可以有多种代码实现。你自己设计写出的某个功能的代码,可能命中了某个公司早已申请的专利。所以,贡献者对自己贡献的代码拥有版权,可未必拥有专利权。

GPLv3专门大篇幅写专利这条,是因为自GPLv2发布以来,软件专利的现实情况已经发生了很大的变化。有了这条,只要有人分发了自写或修改版的GPLv3软件,他们就必须提供专利许可。如果被授权的某个用户想要对其他用户进行专利诉讼,那么他的许可就会被中止。有了这条,GPLv3给开发者和用户提供了对付专利攻击的保护。

注意,如果分发者或贡献者针对自己分发或贡献的作品主张专利权,也就是说收费或者发起诉讼,GPLv3的第八、第十和第十一条共同描述了防御性的专利许可暂停和终止条件。

以下比较细节,如非必要,可以略过不看。可直接跳至第十二条。

每位贡献者都授权了专利许可,是不是就没有问题了?未必,GPLv3的设计者还考虑了其他几种情况,如贡献者不拥有专利权、专利权人并不直接分发软件等复杂情况。

比如,有贡献者写出了一段代码,但这段代码所体现的技术思路,已被某公司申请了专利,贡献者就不拥有这个“必要专利要求”,这段开源代码在后续的使用中,就可能出现侵权情况。

再如,专利权人(可以设想为某软件公司)并不是直接发布受保护软件(他们要直接发布就会受到第十条的要求不得发起专利诉讼),而是找了第三方的“你”来发布,这种情况就更复杂。

以下三种情况是GPLv3专门强调的:

一、你在分发受GPL保护的作品时,如果“明知依赖”某个专利许可,而且该专利对应的源码并不是任何人都能免费从公开网站或其他很容易方式获取的,那你必须(1)以上述方式(公开网站或容易获取方式)提供该源码;或(2)放弃从该专利中牟利(避免作品被私有化);或(3)和本协议相一致,想办法将专利许可扩展到所有下游接收者。

“明知依赖”指你知道,如果没有专利许可,你在某国分发该作品的行为,或者接收者在某国使用该作品的行为,会侵犯一项或多项该国认定的专利,而这些专利,你知道是确实存在并有效的。

这条有些费解。我的理解是,分发者知道这个作品含有一个专利(比如在某个非贡献者手中),分发者不是专利权人,只是分发作品,该专利并没有许可给所有接收者,那么他在分发时,满足GPL的做法是什么样的?有3个选项:

1、以公开方式向全世界提供源码(而不是只给接收者),当然前提是他有权利这样做。公开的意义何在呢?一方面:对某些国家而言,公开可获取的源码有专门的法律适用条文(比如公开源码的密码算法在美国的EAR条例中会区别对待,限制较弱);另一方面,提供源码以后,他人如何使用它,是否会侵权,就是他人自己考量的事了。

2、不通过这个专利让自己获得好处。比如说自己只是分发,并不代收专利费。

3、不管通过何种努力,将专利许可扩展到所有接收者(使这个软件真正自由起来)。

如果做不到这三者之一,就不要分发了。

二、你分发受保护作品时,如果只是将专利许可赋予了部分接收者,那么,该专利许可就会自动扩展到该作品的所有接收者。

也就是说,要一视同仁,不能只把专利许可给一部分人,而不给另一部分人。

这条用于狙击类似微软和Novell之间的那种协议,如果任何用户因为从微软的代理人那里购买了一份GPLv3软件(该软件源自Novell),而得到微软的专利许可,那么,按照此条,该专利许可扩大到该软件的所有下游用户(不论是不是从付费渠道获取的),而不能对他们起诉。

背景:微软和Novell于2006年11月达成专利合作协议,在合作期的5年内,微软向Novell支付1.08亿美元的专利费,而Novell也将向微软支付至少4000万美元的专利费用,双方所达成的共识是,“互不起诉对方的用户专利侵权”。这样,微软和Novell共享双方操作系统的专利,并在多方面开展合作。

三、如果你和第三方有合作约定,你分发他的作品并向他付费,如果他这个作品是受保护作品,或者包含受保护作品,而且他对接收方的专利许可是“歧视性”的,那你就不能分发本作品。除非你们的合作或者这个专利许可是2007年3月28日之前开始的。

“歧视性”专利许可:如果在某个专利许可中,未能包含本许可证赋予的全部权利、或拒绝他人行使这些权利、或要求以不行使这些权利为前提,该专利许可就是“歧视性的”。

为什么和这个特定时间相关?原因在于,2007年3月28日,FSF发布了GPLv3的第三版草案,该草案中加了这条,这样可以避免在草案出台之后、正式版出台之前,有公司抓紧时间签订此类协议。

本许可证的任何条款都不应被误解为排斥或限制法律所授予你的权利。你都是自愿这样做的,我们并不是巧取豪夺你的专利许可。

注:上文倒数第二段(就是“A patent license is...”那段)中有两个长句、难句,比较考验人的英语阅读能力,对英语感兴趣的同学好好读读,找一下感觉。

第十二条 自由或死亡

即便有法院要求(或其他协议要求)你执行和本许可证相冲突的内容,你也不能这么做。如果你不能同时执行那些要求和本许可证,那你就不要分发本程序。

比如,在某协议的条款下,要求你在分发受保护作品时收取版税,但这违背了本许可证第十条,所以,如果你不想违背该协议和本许可证,你唯一可做的,就是不分发此作品。

第十三条 和AGPL一起使用

你可以把受GPLv3保护的作品和受AGPL保护的作品链接(link)或组合(combine)起来并进行分发,本许可证的条款对理应受保护的部分(哪些是受保护的部分,关键在于对based on的判断)将继续生效,但AGPL第十三条关于通过网络和用户交互的特殊要求对组合后的程序生效。

解读者注:GPLv3和AGPLv3的主要区别就在这第十三条。

第十四条 以后的版本

FSF会不定时发布GPL的修订版或新版本,精神上应该不会大变,主要是细节上的变化,这些细节用于处理一些新问题。

每一版都会有不同的版本号,一个程序可以声明使用某个特定版本的GPL“或者后续版本”,也可以不指定版本号,不指定就代表你可以选择任意一个版本来对待该程序。

后续版本可能会给你额外的或不同的许可,但是,后续版本不会给作者或版权人增加任何新的义务。

第十五条 没有质量保证

这个软件是“AS IS”的,就这样了,没有任何质量保证。除非有专门的书面说明。

软件不好使,您自己看着办。

第十六条 免责条款

我都这么大方了,我就不负任何责任了。

除非有法律要求,或者有专门的书面协议。

第十七条 对前两条的解释

如果第十五、第十六条不被当地法律支持的话,受理法院应该采用最接近“放弃作品一切民事责任”的当地法律。除非此作品附带有一个质量保证书或者责任承诺,而且还收了费。

如何让你的新程序使用本许可证?

如果你开发了一个新程序,并且想最大程度造福公众,最好的办法就是把它变成自由软件,这样,任何人都可以修改它、分发它。

你最好是在每个源码文件的头部放下面这段声明,这样可以最有效地声明免责条款。

每个文件应该至少有一个“版权行”,并指出完整声明的位置。

程序说明行:用一行说一下这个程序的名字,以及其简要功能。

版权行:说明一下程序的发行年份和作者姓名。

本程序是自由软件,按照GPLv3进行许可。

我们希望这个程序对你有用,但是不保证它真的好用。

随程序应该有一份GPL,如果没有找到,从这里找:https://www.gnu.org/licenses/

然后提供你(作者)的电子邮件地址或邮寄地址。

如果该程序是交互式的,交互一开始应显示类似下面的声明:

<程序名> Copyright (C) <年份> <作者名>

本程序没有任何保证,输入’show w'了解更多。

这是一个自由软件,欢迎再次分发,输入’show c'了解详情。

上面示例中的'show w'和'show c',执行时应显示GPL中适当的部分,你也可以根据需要使用别的命令。

比如运行gdb程序,它的交互界面是这样显示的:

如果你的程序是图形界面的,请在“关于”中显示类似信息。

若你这作品是职务作品,也即这作品是单位(包括学校)让你写的,必要的话,你需要让单位签署一个“版权放弃书”。免得单位不知道,你传播开来后被单位发现,找你麻烦就不好玩了。详情参见http://www.gnu.org/licenses/

如果你的程序使用GPL保护,那么,别人是不能把它集成到私有程序中的。但如果你的程序是一个函数库,而且你觉得应该让私有程序链接它,那你可以使用LGPL许可证(而不是GPL)。不过,这样做之前,你先读一下这篇文章:https://www.gnu.org/licenses/why-not-lgpl.html。

本文所引用中文翻译的译者声明

译者(阮良坤)声明:这是GNU通用公共许可协议的一份非官方中文翻译,并非自由软件基金会所发表,不适用于使用GNU通用公共许可协议发布的软件的法律声明——只有GNU通用公共许可协议英文原版才具有法律效力。不过我们希望本翻译能够帮助中文读者更好地理解GNU通用公共许可协议。

注:该译者声明在这里可以看到:https://jxself.org/translations/gpl-3.zh.shtml

人话解读者声明

解读者(卫剑钒)声明:我就是解读一下,别拿着这个上法庭啊!

致谢:感谢孙振华的答疑解惑和审校纠错;感谢与张俊霞、邓超的交流探讨。

文|卫剑钒


  1. 全国首例《王者荣耀》游戏外挂获刑案 

  2. 马化腾大战“珊瑚虫” 

  3. https://www.gnu.org/licenses/gpl-faq.zh-cn.html 

  4. GPL协议中国第一案尘埃落定,相关开源软件应如何风控 

  5. https://www.gnu.org/licenses/quick-guide-gplv3.html 

  6. SFLC Guide to GPL Compliance 2d ed(https://www.softwarefreedom.org/resources/2015/SFLC-Guide_to_GPL_Compliance_2d_ed_CN.html) 

开源社简介

开源社成立于2014年,是由志愿贡献于开源事业的个人成员,依“贡献、共识、共治”原则,所组成的厂商中立、公益非营利的开源联盟,是最早以“开源治理、国际接轨、社区发展、开源项目”为使命的开源组织。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,旨在共创健康可持续发展的开源生态,并推动中国开源社区成为全球开源体系的积极参与及贡献者。

相关阅读 | Related Reading

社区之光:我和 Apache DolphinScheduler 的这一年

“源”来是你——开源社 “开源 · 事找人、人找事” 板块正式设立啦!

第二届微芒链创新应用大赛正式启动 | 柏链竞技场

;