业务动态

知识产权合规视角下的开源许可协议条款解疑 - GNU通用公共许可证版本3

作者:侯广 | 更新时间:2022-06-15 | 阅读次数:

近年来,随着国内人工智能、大数据、互联网、云计算等信息技术相关产业日渐壮大,以及全世界COVID-19疫病大流行阴影笼罩下实体经济的持续不景气,数字经济领域已成为关乎我国能否在新时代技术变革和产业升级背景下从全球竞争中脱颖而出的战略要地。当今信息技术的迅猛发展,很大程度上要归功于在开放源代码促进会(OSI)的倡导下于上世纪末开始的开源运动。虽然开源运动的发起者主要是美国硅谷的程序员,但是通过互联网这个极其便捷的跨国信息通道,遍及全球的大量软件开发人员很快加入进来,形成了后来的开源社区。


开源运动甫一开始就受到广泛的支持,一个重要的原因在于,其在借鉴之前由Richard Stallman创立的自由软件基金会(FSF)主导的自由软件运动的基础上,力图在后者的偏激立场与软件的商业化运营愿景之间找到平衡的折衷点。为了吸引对自由软件思潮存有戒心的大软件公司,OSI采取实用主义的做法,允许多样化的许可模式,以便为软件商业化法律风险的契约保证提供自由空间。在此背景下,各式各样的开源许可协议在社区中相互竞争,开发者可以根据其自身情况来选择最适合的选项。一些开源许可协议因应典型应用场景需求而设计,已经在行业内取得了巨大的影响力。例如,公认的对商业化安排最为友好的开源许可协议是Apache软件基金会(ASF)发布的Apache软件许可证(ASL)。著名的谷歌公司安卓系统在智能手机市场占据半壁江山,其成功的背后离不开ASL 2.0许可授权模式的作用。


目前国内有大量软件开发者活跃在SourceForge.net、GitHub和Bitbucket等代码托管平台上,参与其中的开源或私有软件项目。信息技术领域的初创公司很多都是从一个热门的开源项目开始起步,初期纯粹是个人爱好,随着人气提升得到资本支持,最后转为商业化项目。开源项目的特点之一是倚重合作开发,这样做的好处是有利于保证软件代码质量。然而,开源项目中的合作开发者之间通常仅仅是松散的联盟。一般来说,同一项目中的开发者之间,甚至主要开发者之间往往仅限于社区线上联络,他们作为个人可能从未直接见面,甚至可能身处不同的国家。进一步,开源项目之间的依赖关系使得项目与项目之间牵涉代码的继承,从而加剧了源代码作为原创作品的归属关系碎片化的问题。这就使得开源项目在商业化过程中,当涉及著作权、专利权等知识产权的权属和收益分配等方面问题时不便于沟通和协商,容易发生纠纷,甚至可能涉及跨国诉讼。


开源许可协议种类繁多,相关法律风险问题复杂。限于篇幅所限,本文仅择一特定的开源许可协议,针对实践中涉及的几个典型问题,结合相关的条款文本加以解析,并给出相应的建议。本文研究的对象是FSF发布的GNU通用公共许可证(GPL)的版本3(GPLv3)。选择GPLv3是基于考虑以下条件的结果:

1)使用广泛。

2)规定了可能构成商业化障碍的实质性约束。

3)条款复杂难懂。


具体来说,在使用广泛的主要开源许可协议当中,像MIT许可证和BSD许可证这类的条款比较简单,没有太多限制,使用这些协议的项目风险相对较低。前面提到的ASL 2.0非常流行,虽然条款相对前一类多一些,但是对著作权和专利权等方面的规定与商业化相容度较好。具体来说,例如,ASL 2.0中包括专利保护伞条款,即,禁止项目用户之间相互主张与代码相关的专利侵权,否则将终止其自身享有的许可授权,以期降低项目相关的专利侵权风险。此外,ASL 2.0的条款文本长度适中,可读性较好,不太容易发生误解。


相比之下,GPLv3的使用也很广泛,由于其自由软件许可协议的血统(属于FSF的GPL家族),其根本宗旨在于宣传和推广著作传(copyleft)理念,尽可能使得源代码以及相关硬件信息持续开放,除了从反规避(Anti-Circumvention)法律合规角度解决软件破解自由问题之外,还规定了标志性的“传染”条款,以期通过将GPLv3的适用范围从一个项目自动延伸到自该项目衍生的新项目来扩大影响面。


商业软件开发中,同时使用私有代码和开源代码的情况并不鲜见。关于如何通过代码隔离来规避GPLv3的“传染”条款,即,满足私有代码和开源代码构成所谓的软件“聚合体(aggregate)”而非单一软件的条件,已经有大量的讨论。尽管在一些细节上仍有争议,但应对该项专门问题的业内常规已逐渐成形。


另一方面,从整体来看,GPLv3内容复杂,条款多,总长度差不多是ASL 2.0的四倍,措辞与后者相比更为艰深晦涩,这给翻译工作提出了巨大的挑战。FSF在GNU网站上公布的GPL文本为英文,没有官方译文,仅给出了非官方译文的外部网页链接。FSF在关于非官方译文的说明中指出,这些译文不具法律效力,提供链接的目的在于帮助更多的人了解GPL,为此,译文必须基本准确,因而必须完全理解诸如著作传和自由软件定义等基本概念。从知识产权合规的角度看,该标准偏低,与实践中可能涉及的法律风险并不相称。


目前,GPLv3的非官方中文译文有两种,先有繁体版,之后的简体版与繁体版相比除调整部分术语译法之外实质相同。因此,在网络上长期流传的中文译文在内容上只有过这一个版本。遗憾的是,该译文的质量即便按FSF的标准来评判也很难说是令人满意的,因而在应用到具体事务的时候出现了不少疑问之处,甚至形成了一些错误认识。针对GPLv3相关知识产权合规实践中的几个典型问题,本文试图基于相关条款的原始文本来做一分析探讨。


1.以GPLv3许可证发布的软件是否可以用其他许可协议发布?


有这样的说法,软件如果以GPLv3许可证发布,则永远适用GPLv3的条款,无法再使用其他许可协议发布。


这么说大致没错,但是最后一句的表述容易产生歧义。准确地说,以GPLv3许可证发布的软件并不是绝对不能使用其他许可协议发布,而是不能改为使用其他许可协议发布。


GPLv3第2条规定[1],基于GPLv3许可证的著作权授权在用户遵守相关条件的前提下是不可撤销的。因此,软件一旦用GPLv3许可证发布,则无法将授权条款改为依照与GPLv3许可证不同的其他许可协议。


然而,GPLv3许可证不可撤销并不意味着不能以其他许可协议进行另外的授权。举例来说,对于原创软件,完全享有著作权权利的作者在使用GPLv3许可证对软件进行著作传式发布的同时,可以基于一商用许可证的条款向另外一些用户授权并收取许可费用,比如著名的Postscript语言和PDF文件解释器软件ghostscript就是如此。另外,甲骨文公司对风靡全球的数据库软件MySQL采取的也是GPL和商用许可证并行授权模式,其中的GPL许可证是GPLv2。


2.以GPLv3许可证发布的软件升级版本后是否可以用其他许可协议发布?


有这样的说法,软件如果以GPLv3许可证发布,则后续版本也只能适用GPLv3的条款,无法改为使用其他许可协议发布。


这是一种误解,其实GPLv3许可证的“传染”条款并不蕴含对软件升级后的许可授权方式的绝对控制权。


该误解通常是基于GPLv3第5条,认为只要后续版本中包括在先前以GPLv3许可证发布版本的源代码的基础上修改的部分,则其也必然受GPLv3许可证的约束,不能改变授权模式。


GPLv3第5条的相关规定[2]允许软件用户(被许可人)发布在原软件的基础上开发的新软件的源代码,前提是(包括但不限于)用户必须将新软件整体以GPLv3许可证进行许可授权,以任何其他方式进行许可授权将超出许可证授权范围。


在考虑“以GPLv3许可证发布的软件升级版本后是否可以用其他许可协议发布”这个问题时应当注意,对软件进行升级的主体并不是软件用户(被许可人),而是软件发布者(许可人)。因此,只有在软件发布者本身同时也是GPLv3许可证的被许可人的情况下,第5条的限制才有可能发生效力。如果软件发布者对原软件具有完整的著作权权利,并非基于GPLv3许可证自外部取得授权,并且修改的代码也均为原创,则其当然有权在软件升级版本后改为使用不同于GPLv3许可证的许可协议进行许可授权。


此外,由于GPLv3第5条本身仅限制来源于GPLv3许可证的权利,并不会妨碍用户通过其他途径获得授权。因而,即便在软件发布者对软件不具有完整的著作权权利的情况下,如果能够取得相关权利人的同意,则改变升级版本的许可授权方式也是可能的。


3.以GPLv3许可证发布的软件是否可以商业使用?是否可以收费?


有这样的说法,GPLv3许可证属于自由软件许可证,基于其发布的软件是免费的,不能在商业上使用。


这也是一种误解,其实自由软件理念与商业使用并不冲突,而且以GPLv3许可证发布软件时完全可以收取费用。


该误解通常是基于GPLv3第10条,以及将自由软件(“free software”)一词中的“free”错误地理解为免费,认为GPLv3许可证的目的在于宣传免费软件,发布者在发布软件时不收费,也不允许用户把软件拿去用于商业牟利。


GPLv3第10条的相关规定[3]的意思是,当GPLv3许可证的用户将相关软件向下游分发(注:GPLv3已经将之前版本中的“distribute(分发)”一词改为“convey(传递)”,但其内在含义并无变化,为便于读者理解,本文中仍使用“分发”这一术语)时,接收者将自动在GPLv3许可证条件下获得最初的许可授权,分发者不得针对接收者行使其基于GPLv3许可证获得的权利来收取费用。简单来说,GPLv3许可证的用户的下游用户将自动获得与上游相同的权利,分发者不得雁过拔毛。


关于以GPLv3许可证发布的软件是否可以商业使用以及是否可以收费的问题,可以从另外的条款中找到答案。


GPLv3第2条规定[4],GPLv3许可证用户可以不受限制地运行未修改的程序,而且运行程序输出的结果仅当其本身构成GPLv3许可证涵盖范围内的作品(即,未修改的程序本身或基于该程序的作品)时才受到GPLv3许可证的约束。换句话说,GPLv3许可证的用户如果不修改程序,则可以将该程序用于任何用途(当然也包括商业使用),只要运行程序的结果不会造成修改程序、分发程序或其衍生品的效果,进而落入GPLv3许可证涵盖的范围。因此,以GPLv3许可证发布的软件的用途在原则上没有限制,并未排除商业使用。


另外,GPLv3许可证确实不包括许可费条款,是一个免费许可证。然而,这并不表示不能通过售卖GPLv3许可证软件来收取费用。


GPLv3第4条规定[5],分发者可以自行决定是否收费,而且可以通过提供技术支持或质保服务来收取费用。即,虽然基于GPLv3许可证的许可授权是免费的,但是分发行为本身以及软件使用中的周边服务可以不免费。因此,分发以GPLv3许可证发布的软件可以收费,更不用说发布者自己当然也可以收费,而且还可以在免费的GPLv3许可证之外提供收费的技术支持/质保服务。


4.什么情况下会违反GPLv3许可证使用条件?


这一条与上一条相关,基于以GPLv3许可证发布的软件不能商业使用的误解,有一种认识是商业使用本身构成违反GPLv3许可证使用条件。


如前所述,这显然是错误的。软件商业化实践中违反GPLv3许可证使用条件的行为并不包括商业使用本身,而是指以违反GPLv3许可证条款的方式传播或修改软件,其典型方式包括在基于以GPLv3许可证发布的软件开发新软件时仅发布目标代码而不开放源代码,以及在发布这样的新软件时应当沿用而未沿用GPLv3许可证。


GPLv3在第3条、第4条、第5条、第6条、第7条等条款中规定了一些对用户的约束条件,但是一般认为最影响商业化运营风险的主要约束条款应该是第5条和第6条,其中分别规定了用户对软件进行修改后分发时、以及以目标代码形式分发软件时需要遵守的游戏规则。


如前所述,GPLv3第5条规定,用户对以GPLv3许可证发布的软件进行修改后分发时,在缺少单独的授权来源的情况下,只能将新软件整体以GPLv3许可证进行发布,即,需要将源自旧软件的GPLv3许可证授权模式扩散到整个新软件。因此,如果用户未经授权而改用其他许可授权协议发布新软件,例如,用户将新软件以收费著作权/专利权许可的方式发布,向下游用户收取许可费或对其提起侵权诉讼,则构成违反GPLv3许可证使用条件。


另外,GPLv3第5条和第6条还要求必须确保源代码的开放性。GPLv3第5条本身关于分发形式的规定[6]与第4条中对原样分发的要求[7]一样,是源代码。GPLv3第6条规定[8],可以依照第4条和第5条来分发目标代码,但这样做的前提是也要分发(即,以某种方式使下游用户能够获得)与该目标代码对应的源代码。因此,如果用户仅以目标代码的形式发布新软件且未开放相应的源代码,则也将构成违反GPLv3许可证使用条件。


5.对违反GPLv3许可证的行为可以怎样维权?


关于针对违反GPLv3许可证使用条件的司法救济手段,目前国内实践中普遍走的是基于主张著作权/专利权侵权要求赔偿的途径,并且一般认为,虽然在理论上也可以对违反GPLv3许可证使用条件这一行为本身直接要求违约赔偿,但是无法实现与侵权赔偿相当的救济力度。


GPLv3许可证中对用户违反使用条件的处理方式包括终止许可授权和以用户继续履行为必要条件恢复许可授权。


GPLv3第8条规定[9],用户以违反本许可证规定的方式传播或修改软件将导致自动终止其基于本许可证获得的著作权和专利许可授权,只有用户停止违反许可证,即,继续履行相关义务,许可授权才有可能被恢复。


除此之外,GPLv3许可证并不包含其他关于用户违反使用条件的规定。即,从合同(一般认为软件发布者与用户之间基于GPLv3许可证成立合同关系)角度来看,GPLv3许可证没有约定损害赔偿条款。这就造成,在用户违反使用条件的情况下,虽然在理论上一方面可以基于终止许可授权,基于相关著作权/专利权主张侵权损害赔偿和停止侵权禁令等救济手段,另一方面也可以以用户因不履行GPLv3许可证义务而给许可人造成损失为由,直接主张违约损害赔偿,但是后一途径无法回避缺乏来自许可证本身条款的依据的窘境。


另外,基于用户违反使用条件主张法定损害赔偿也很困难。许可人使用GPLv3许可证发布软件的目的,从大的方面来说是为了宣传和推广开源运动,具体到软件本身,则是期望用户能够检查和改善代码的质量,以及在其基础上继续开发和发布开源项目,让源代码始终保持开放。


当用户拒绝履行开放后续开发的软件的源代码或沿用GPLv3许可证发布该软件的义务时,很难以金钱衡量许可人因此遭受的损失。具体来说,用户的违约行为给许可人造成的损失可能包括扩大开源运动影响力的预期没有实现、软件代码得到改善的预期没有实现、以及让后续开发的软件继续开源的预期没有实现等,但这些都是无形的、想象的损失,无法定量计算赔偿额。


为此,司法实践中许可人通常采取请求侵权损害赔偿的方式。在软件采用并行授权模式的情况下,基于许可人的请求,法院一般可以参照相应的商用许可证所规定的许可费标准来确定侵权损害赔偿数额。即,考虑到在GPLv3许可证之外还存在商用许可证的选项,将许可人损失/用户侵权获益认定为与本应通过基于商用许可证的许可授权收取/支付的许可费数额相当。


然而,多数GPLv3许可证开源项目并未采用并行授权模式,在请求侵权损害赔偿的情况下将不会有相应的商用许可费标准可供参考。在这种局面下,一方面许可人没有具体的损失,另一方面在用户存在开发行为的情况下,其对新软件的代码也有贡献,此时侵权获益也不容易确定,只能基于假想的“合理许可费”来估算侵权损害赔偿的数额,这给救济力度带来很大的不确定性。


因此,考虑到GPLv3许可证缺少约定损害赔偿条款的现状,在以GPLv3许可证发布软件时,如果并不排斥商用许可模式(多数开发者如此),则不妨采取并行授权模式。这样做的好处是,未来针对用户违反使用条件起诉维权的时候可以拿白纸黑字的商用许可协议作为侵权损害赔偿的参照物,从而无需再为如何论证“合理许可费”而伤脑筋。


GPLv3包括前言和十七个条款,内容复杂,涉及很多值得探讨的问题,已有不少相关的研究和分析。本文从知识产权合规的角度解读GPLv3条款文本,仅针对与软件商业化运营风险相关的几个典型的问题分享一点洞见,不妥之处,敬请大方之家批评指正。



[1] GPLv3 Section 2. Basic Permissions.

All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

...


[2] GPLv3 Section 5. Conveying Modified Source Versions.

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.

...


[3] GPLv3 Section 10. Automatic Licensing of Downstream Recipients.

Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.

...

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.


[4] GPLv3 Section 2. Basic Permissions.

All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

...


[5] GPLv3 Section 4. Conveying Verbatim Copies.

...

You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.


[6] GPLv3 Section 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:

...


[7] GPLv3 Section 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.

...


[8] GPLv3 Section 6. Conveying Non-Source Forms.

You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:

...


[9] GPLv3 Section 8. Termination.

You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

...