×

打开微信,扫一扫二维码
订阅我们的微信公众号

首页 锦天城概况 专业领域 行业领域 专业人员 全球网络 新闻资讯 出版刊物 加入我们 联系我们 订阅下载 CN EN JP
首页 > 出版刊物 > 专业文章 > 开源软件项目合规审查涉及的GPL协议的传染性问题(上)

开源软件项目合规审查涉及的GPL协议的传染性问题(上)

作者:丁华 陈岱源 2021-06-22

一、GPL开源软件许可协议的“传染性”概述


(一) GPL开源软件许可协议的法律性质


GPL开源软件许可协议的全称为GNU通用公共许可协议(GNU General Public License),该开源协议自1989年推出第一版本以来,目前已经累计推出了三个主要版本,最新版本为2007年推出的GPL.v3。GPL系列许可证一直是开源软件领域最受欢迎的软件许可之一。在三个版本中,最为常用的是GPL.v2。


GPL开源软件许可协议并非放弃软件著作权,而是通过强制性承袭适用GPL协议的方式,保障所有的开发者都能够取得概括性的获得和使用开源软件的自由(copyleft)。因此,开源软件许可协议的法律性质依然是著作权许可合同[1]。


另外,由于适用GPL协议开源软件的后续开发者均无权选择排除适用GPL协议,而仅有开源软件的最初版本开发者可以选择开源软件适用何种协议,因此GPL开源协议也是一种由最初版本开发者预先拟定的格式合同。尽管开源协议中的义务性条款颇为严格,且没有任何商议的余地,但是相较于需要支付许可费用的商业著作权许可成本和需要投入人力、资金和时间的软件研发成本,秉持自由、共享和免费的开源协议对保障软件行业的高速发展具有重要意义。因此开源协议中约定的义务未不适当地损害使用人的利益,是有效的格式条款[2]。


(二) GPL开源软件许可协议的“传染性”以及违反的法律风险


为保证开发者运行、学习、修改、分发副本等“自由”(copyleft)不被中断,GPL开源协议具有“纵向”和“横向”两个维度的“传染性”。


在“传染性”的“纵向”维度上,开源软件会“传染”自身的修改版本(modifications)或衍生作品(a work based on the Program)。例如GPL.v2授予后续开发者修改开源软件(及其副本)的权利,但是对于修改后形成的修改版本或衍生作品,一旦涉及到分发(distribute)或公布(publish),则应满足使得修改版本整体继续依照对应的GPL协议进行开源[3]。


在“传染性”的“横向”维度上,在一定的条件下,开源软件会“传染”自身及修改版本以外的,一同分发、传输的软件或软件的其他部分。例如,GPL.v3规定,如果在开发者传输[4]的软件时,开源软件与其他软件之间组合的目的是为了生成一个更大的程序,则其他软件也需要成为受到相应的GPL协议传染的开源软件[5]。


根据GPL协议的规定,如果违反“传染性”条款,将直接导致通过开源协议获得著作权许可(自由 copyleft)无效和被终止[6]。因此,违反“传染性”条款以及其他GPL开源协议中的义务性条款的情形发生,构成著作权许可合同自动终止并自始无效的条件。


传染性条款的加入,使得GPL开源软件和派生作品的获取和使用“自由”能够得到有效保障,但是对于企业的开源软件合规审查也提出更高的要求。如果企业在软件的开发过程中有意或者无意中混入了GPL开源代码,而又未按照GPL要求履行相关开源义务,则可能会导致软件合规法律风险,例如:按照GPL的规定,如果开发者不遵守本协议,则开源协议授予的“自由”将会被无效和被终止,使用开源软件的行为将直接成为一种未经授权的著作权侵权行为,开发者可能会面临来自开源软件著作权人的侵权索赔以及停止使用的知识产权行为禁令。同时,如果在企业对外宣传“自主研发具有自主知识产权”的软件中被发现存在适用GPL协议的开源代码,而企业又并没有履行开源义务,也会对企业的商誉造成的负面影响。


二、GPL.v1的“传染性”条款摘要及评述


(一)  GPL.v1的“传染性”条款摘要


第2条. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following:


您可以修改本程序的副本或程序的任何部分,并可以根据第1款的授权复制和分发此类修改,但前提是您还必须执行以下操作:


a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and


a)使修改后的软件文件带有明显的声明,声明您已修改代码和修改的日期;和


b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option).


b)【传染性条款】您应当使分发或发布的全部作品(包括本程序或其任何部分的全部或部分内容,无论是否经过修改)均根据本通则的条款,免费授予所有第三方GPL许可证(除非您选择向第三方提供代码担保可以进行收费)。


c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License.


c)如果修改后的程序在运行时通常以交互方式读取命令,则必须以一种最简单,最常用的方式使它在开始运行以进行交互使用时,打印或显示声明,其中包括适当的版权声明以及没有担保(或者说您提供担保),并且用户可以在这些条件下重新分发程序,您还需要告诉用户如何查看此通用公共许可证的副本。


d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.


Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms.


【传染性例外条款】仅将本程序(或其衍生产品)与另一项独立作品聚合到一定数量的存储或分发介质上,并不会将独立作品归入GPL的管辖。


第3条.You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following:


您需要根据上面的第1和第2款规定,以提供目标代码或可执行格式,复制和分发本程序(或根据第(2)款的规定,复制或分发程序的一部分或衍生作品)。除此之外,您还需要执行以下任一操作:


a)   accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or,


附上相应的源码。源码要求完整且机器可读,并在条款一、二的约束下

……

Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains;


作品的源代码是指对作品进行修改的首选形式。对于可执行文件,完整的源代码表示该文件包含的所有模块的所有源代码。


(二)  GPL.v1的“传染性”条款评述


为了保障开源软件自由使用的行为,在开源软件协议GPL.v1中就规定了“传染性”条款。


根据GPL.v1的“传染性”条款,如果开源软件的修改者和使用者,需要复制或分发开源软件,则GPL.v1对于完整包含了开源软件全部或部分、完整包含了修改过的开源软件全部或部分从而形成的派生作品,要求继续遵循GPL.v1进行开源。


根据GPL.v1的“传染性”例外条款,GPL.v1规定阻断传染性的情形是:如果“独立作品”与开源软件“仅仅聚合”在同一介质上,则“独立作品”并不会因为聚合行为而被GPL.v1传染,该“独立作品”可独立选择适用的许可协议。


三、GPL.v2的“传染性”条款摘要及评述


(一)  GPL.v2的“传染性”条款摘要


第2条:You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:


您可以修改开源软件的副本,或者开源软件的副本的任何部分,从而形成一个基于开源软件的作品(派生作品)。只要满足上面的三个条件(免责声明、保留协议、一同发售)以及下列条件,就可以对开源软件的派生作品进行复制和发行


a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.


您必须在您修改了的文件中醒目地声明您的修改、修改日期


b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.


【传染性条款】您发行或者发布的作品,如果包含开源软件的全部或部分,或派生自开源软件或开源软件的部分。那么您就应该将这个作品整体,允许第三方在遵守本协议的情况下,进行本协议的使用,并且不能收费。


c) ……

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.


【独立部分的发布方式对传染性的影响】上述要求对派生作品整体有效。但是如果该派生作品中某些可区分的部分并非派生自开源软件,并且可以被合理地看作是从中分离的独立作品,则当您将它们分开发布时,这种独立部分可以不受本协议约束。但是如果开发者在发布开源软件的时候将上述独立的部分与派生作品一起发布,那么整个派生作品连同独立部分将被视为一个整体,受GPL.v2协议约束。


Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.


因此,本节的目的不是主张权利或反对完全由你开发的作品的权利; 相反,目的是控制分发开源软件的派生作品或汇编作品的行为


In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.


【传染性例外条款】另外,仅仅将另一个作品(并非基于开源软件)和开源软件或者开源软件的衍生作品聚合在一起,并不会导致其他的作品受到本协议的约束。


(二)  GPL.v2的“传染性”条款评述


GPL.v2依然延续了GPL.v1“传染性”条款,即GPL.v2对分发开源软件修改后形成的派生作品依然采用严格的开源限制。只要开发者分发或发布的作品包含开源软件的全部或部分,或派生自开源软件或开源软件的部分,均应当将作品整体开源,允许第三方在遵守本协议的情况下,进行本协议的使用,并且不能收费。


在GPL.v1“传染性”条款基础上,GPL.v2还进一步明确了:“传染性”对开源软件的派生作品中的独立部分(section)的区分适用原则。


当作品中不涉及开源软件代码的独立部分(section)具有足够的独立性,且开发者将该作品中独立部分(section)与作品中涉及开源软件的其他部分(section)分开发布,则作品中这种独立部分(section)可以作为传染性的例外,不受GPLv2的约束;但如果开发者将原本独立的部分(section)与作品中涉及开源软件的其他部分一起发布,则原本独立的部分(section)则会被传染,需要开源并受到GPLv2的约束。


在聚合作品“传染性”例外问题上,GPL.v2与v1并没有实质的区别。与基于开源软件的派生作品聚合的独立作品,可以不受到开源软件的传染性的约束。


四、GPL.v3的“传染性”条款摘要及评述


(一)  GPL.v3中“传染性”条款摘要


第4条. Conveying Verbatim Copies.传播完整版本


You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.


您可以原封不动地分发您获得的开源软件的源代码,只要您:


1、显著而适当地在每个副本上发布一个合适的版权通告;

2、保持完整所有叙述本授权和任何按照第7节加入的非许可的条款;

3、保持完整所有的免责申明;

4、并随程序给所有的接受者一份本授权的副本。


您就可以通过任何媒介发布本程序源代码的未被修改过的完整副本


第5条. Conveying Modified Source Versions.传播修改过的源代码


You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:


您可以在第4节的条款下以源码形式发布一个基于本程序的软件,或者从本程序中制作该软件需要进行的修改,只要您同时满足所有以下条件:


a) The work must carry prominent notices stating that you modified it, and giving a relevant date.


软件必须包含明确的通知说明您修改了它,并给出相应的修改日期。


b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.


软件必须包含明确的通知,声明这个软件是在本协议(以及本协议第七节增加的所有条件)授权下发布的,本条款修改了第四节的“保持所有通知完整”的要求。


c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.


【传染性条款】被许可人必须将整个作品整体性地通过本许可证许可给持有复制件的人,无论组件以何种方式组成作品,本许可证及第7节所附加条款都将适用于作品的整体及其一切组件。本许可证不包括以其他方式授权作品许可。但被许可人单独接收到许可不会导致该许可证失效。


……

A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.


【传染性例外条款】一个受保护的开源程序和其它独立程序的“组合”,该“组合”作品并非该开源程序的扩展,也不是为了在某个存储或发布媒介上,和开源程序的进行组合,为的是生成更大的程序,且如果“组合”的版权对使用者进行访问等合法权利的限制,不超过独立的作品对使用者进行访问等合法权利的限制。那么这样的“组合”就被称为“聚合体”。包含开源程序的聚合体中,GPL并不会适用于开源程序以外的该聚合体的其他部分;


(二) GPL.v3的“传染性”条款评述


GPL.v3在规定传染性问题时,首先调整了此前v2版本的用词,v2版本在规定传染性问题时,着眼点为“分发”(distribute),而v3版本的着眼点为“传输、传播”(convey)。根据GNU发布的说明,分发与传播,并无明显区别,只是由于GNU在制定过程中,制定者发现一些法律体系在其版权法中使用“distribute”一词,但是含义和GPL.v2的distribute并不相同。因此为了避免同词不同义的情况发生,GNU创造了新的术语convey,用来避免这些不同造成的混淆和问题[7]。因此,GPL.v2和v3在将“传染性”作为原则这一点上并没有明显的差别。


GPL.v3没有延续GPL.v2中“传染性”对开源软件的派生作品中的独立部分(section)的区分适用原则。GPL.v3采用了更严格的统一传染性标准,GPL.v3将修改后的开源软件及其他部分(无论是否是独立部分),均统一视为一个完整的作品,因此在传输(convey)、分发这样的作品时,无论其中开源部分与独立部分如何组合(无论是分开发布或一起发布),对这个作品整体应当适用开源协议GPL.v3。


在横向传染性上,经过两个版本的迭代演进,v3对于“传染性”的例外规定比v2更为清晰,v3进一步明确了“聚合”(Mere aggregation)的概念边界。“聚合”软件指的是,除独立软件与开源软件及其衍生作品存储在同一个介质上并进行组合,为的是生成更大的程序以外,独立作品与受开源协议保护的作品的“组合”,且这一“组合”(A compilation)的版权对使用者进行访问等合法权利的限制,不超过独立的作品(包括独立的作品和开源软件及其衍生作品)单独自身对使用者进行访问等合法权利的限制。


注释:


[1] 徐瑄,张汉华.计算机开源软件许可证的许可条款性质认定——美国联邦巡回上诉法院第2008-1001号裁决评析[J].知识产权,2014(06):85-93.


[2] 罗瑞雪,《开源协议适用范围及其对软件著作权侵权判定的影响》,中国版权,http://ipc.court.gov.cn/zh-cn/news/view-842.html


[3] 参见GPL.v2协议第2条,You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:……b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.


[4] GPL.v3对于相关行为义务的表述进行了修改,用词改为convey而非第二版本的distribute,根据自由软件基金会的解释,前述用词的改变并没有改变行为的实质,只是为了避免与部分法域的法律术语相冲突因而进行的技术性调整。


[5] 参见GPL.v3协议,第5条,该条规定了构成软件“聚合体”(aggregate)的前提之一为开源软件与其他软件的“组合”并非为了形成更大的程序,反之,如果这样的“组合”被法院认定为一个更大的软件的两个部分,那么将无法构成“聚合体”,从而应当进行整体开源。


[6] 以GPL.v2为例,该协议第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. 在本协议授权之外,您不能复制、修改、再授权或分发开源软件。任何用其他方法复制、修改、再授权或分发开源软件的企图都是无效的,并使您从本协议获得的权利自动终止。


[7] Frequently Asked Questions about the GNU Licenses,

https://www.gnu.org/licenses/gpl-faq.en.html