李震宁,刘莉,孟杰
(1.上海基础软件工程技术研究中心,上海200030;2.中标软件有限公司,上海200030)
中国软件产业已经进入高速发展时期。开源软件在整个软件体系里面占的比重越来越大。很多的软件企业在开发过程中或多或少引用了开源代码或开源软件。目前,多数厂商在使用开源软件的过程之中,存在一个认识误区:开源软件是一个免费的软件,可以随意使用且不存在所谓的法律风险。
从全球范围来看,与开源软件有关的法律诉讼的确是非常少,而因为使用开源软件遭到制裁的厂商就更少,但绝对不是没有,比较引人注目的就是Oracle和谷歌,双方关于安卓操作系统上的Java API所涉及的88亿美元知识产权案例。所以,开源软件作为一个具有版权的软件著作产品,也不可回避知识产权这一问题。不加限制地使用和售卖开源软件,可能存在法律风险。
开源软件所使用的开源许可证,从知识产权角度来说,也是具备法律效应的合同。开源软件也受到相关著作权保护。因此各位开发者和企业使用过程中请勿认为免费使用就意味着原作者放弃了所有权利,而且,开源许可证种类众多,彼此之间的许可内容和细节千差万别。因此,选择符合自己要求的许可证非常重要。图1参考了阮一峰博士翻译的Paul Bagw ell绘制的主流开源协议列表。图1里面罗列了目前主流的开源许可证类别,以及对应的核心许可要求。
如图1所示,目前最主流的六大开源许可协议(实际上目前用到的开源许可协议高达80余种)核心出发点是一致的:允许用户免费使用、修改软件。但是,在许可细节上差别就很大。例如,在核心的开源问题上,宽泛式的许可证允许开发者自由选择是否将修改后的软件开源,而另一些许可证则要求开发者必须遵照原有的许可协议。同时在分发软件过程中,提供源代码。但无论是宽泛还是较为严格的许可证,它们都有自己的使用条件。这也意味着开源许可证也是一种法律许可,在其许可范围内使用开源软件代码才会免除版权侵犯的情况。
图1 当前主流开源许可协议类型的区别
谷歌在开发安卓操作系统过程中大量使用了遵循GPL许可协议的代码。而GPL许可协议则要求,如果使用了基于GPL许可协议的软件做修改,那么该软件产品和相关衍生作品都是要受到GPL许可证的传染,要求开放源代码。但安卓操作系统为了保护开发者和硬件合作伙伴,在很多系统层级使用了更加宽泛温和的Ap ache许可证。它们是如何通过合理手段规避开源许可证的“传染性”的?
实际上,Linus在发展Linux操作系统的过程中,也注意到强制性开源对于一些商业性质的开发者和企业积极性有所打击。为了更好地推广系统和吸引开发者,他在Linux内核的版权文件Cop ying中最前面增加了一段话,保证了Linux内核的商业用途不被GPLv2传染。
NOTE! This copyright does *not* cover user p r ogr ams that use k er nel ser v ic es by n or mal sy stem c al l s - this is mer el y consid ered nor mal use of the ker nel, and does *not* fall under the heading of "derived w o r k". A l so n ote that the GPL bel ow is copyrighted by the Free Software Foundation,but the instance of code that it ref ers to (the Linux kernel) is copyrighted by me and others who actually wrote it. Also note that the only valid version of the GPL as far as the kernel is c onc er ned is _this_ p ar tic ul ar v ersion of the license (ie v2, not v2.2 or v 3.x or whatever), unless explicitly otherwise stated.Linus Torvalds
在这份文件中,Linus本人已经明确说明:使用 Linux 内核的头文件定义,进行系统调用的程序不会被视作GPL的作用范围,也就是说不会被视作衍生产品。这就为厂商提供了一个思路,使用用户空间,通过系统调用方式来区隔内核空间的许可协议。
谷歌通过HAL硬件抽象层很好地解决了这一问题,即HAL存放实际驱动程序,通过内核中的“影子驱动”传输控制命令。由于H A L对内核的调用属于普通系统调用,因此不必被Linux内核的GPL许可强制传染。然而,位于内核之上的Linux Glibc库属于GPL许可协议,有传染性。为了规避这一问题,谷歌将glibc替换为了自己优化的Free BSD Bionic库,这个库则属于宽泛的BSD协议。
谷歌作为一家成功的科技企业,在安卓操作系统创建之初就非常重视开源知识产权问题。通过HAL成功隔离了开源许可证为后来众多开发者和企业增添了很多利益吸引点。在本文撰写过程中,美国旧金山联邦法庭陪审团做出了裁决,认定安卓操作系统合理利用(Fair Use)Java API代码并未侵犯其版权,驳回甲骨文向谷歌索赔93亿美元诉讼。给所有使用Java API的开发者一个定心丸。但这并不意味着可以为所欲为地使用开源软件而没有任何限制。
图2 安卓操作系统对许可证的处理方式
2013年起,一家韩国办公软件公司 Hancom在其字处理软件中整合了开源的 PDF 解释器Ghostscript。这个解释器采用了两种许可证,GNU GPL 以及一个付费的商业授权许可证。开发者可以自由选择,但必须遵从其中之一。2016 年,Ghostscript 的开发者 Artif ex 在美国起诉了韩国的Hancom,指责后者既没有按照商业许可付费,也没有遵从开源许可协议开放源代码。对此,Hancom公司辩解到:该公司认为其在下载Ghostscript的软件的过程中没有签署任何开源相关法律文件,以至于无合同文件被强制执行。 最后,美国法庭判决Hancom公司败诉,法官在判决时解释到:“人们在下载软件的时候默认同意GNU GPL——这意味着GNU GPL本身就是把这个简单的著作权问题并进入合同法领域所需要的额外元素”。 这个解释经典在于:它非常清晰的告诉了所有企业,虽然没有文件签署或者 “I Agree ”的按钮供选择。但当选择在产品中使用开源软件时,它就被认定为具备强制执行力的版权协议了。
今天,开源软件已经渗透到全球科技领域的各个环节,大量的软硬件里都嵌入了开源代码。谷歌在力争确保Java API的免费许可同时,正在考虑放弃安卓免费的传统。而微软也重金收购了开源代码最大的集散地Git Hub。在最顶级巨头们的争夺下,开源知识产权的版图未来将会发生巨大的变化。中国作为软件大国,也应高度重视开源软件面临的风险和挑战,未雨绸缪,深入研究、积极应对,在新一轮开源技术浪潮中迎头赶上。