最近一个关于开源软件的知识产权纠纷的案例,非常有代表性,
其中涉及到的平台openwrt,一口君十几年前曾玩过,
通过这个案例,我们可以学习如何在今后工作中保护自己的知识产权,
以及如何合理直接或者间接利用别人的“成果”而不侵权,
一口君觉得非常有必要分享出来,让大家多了解知识产权的知识。
一、关于本案
1. 案子概述
通过下面鱼骨图,简单说一下这个案子的来龙去脉:
总结起来就是:
- 苏州公司基于openwrt开发了网关产品,但是用一种方法绕开GPLv2限制,
- 浙江通信公司通过苏州公司离职的两个核心员工抄袭了苏州公司的代码
- 法院二审裁定,苏州公司上层功能软件构成GPLv2协议项下“独立且分离的”,裁定浙江通信公司侵犯苏州公司软件著作权
2. 本案的核心:
本案争辩的核心主要两点:
浙江某通信科技有限公司等被诉侵权人基于GPLv2协议提出的不侵权抗辩是否成立?
软件开发者自身存在一定程度上的违反GPLv2协议,是否就一定不享有新研发软件著作权?
要想整明白这个问题,我们必须要搞懂GPL、Openwrt、软件著作权是什么。
二、什么是GPL?
关于GPL,一口君下面文章,做了详细讲述,大家可以回顾一下。
《GPL前世今生》
GPL许可协议(GNU General Public License):只要软件中包含有其他GPL协议的产品或代码,那么该软件就必须也采用GPL许可协议且开源及免费。
具有以下特点:
- 复制自由:
允许将软件复制到任何人的电脑中,并且不限制复制的数量。 - 传播自由:
允许以各种形式进行传播。 - 收费传播:
允许在各种媒介上出售该软件,但必需提前让买家知道这个软件是可以免费获得的,并解释收费的理由(一般来讲都是能够为用户提供某种服务,以技术服务的形式来收费)。 - 修改自由:
允许开发人员增加或删除软件的功能,但必须依然基于GPL许可协议授权。
总结成一句话,修改后必须以GPL授权开源发布。
只要在代码中加入这个名叫GPL的许可证,你就能保证软件的用户能够自由地运行、研究、分享和修改你的代码了。
而且,从你的软件衍生出的一切修改版本,都必须遵守这个许可协议。
一个有意思的地方是,拥有代码的人有权利用代码开发软件并盈利。
但是,在有人花钱买走软件之后,这个人可以随意把买到的软件分享给其他人,而不必担心侵权,甚至是被告上法庭——因为对于遵守开源协议的软件来说,压根不存在“盗版”的概念。
由此可见,开源协议大大地提高了软件使用者的权利。
除了GPL之外还有很多其他协议,见下图:
三、什么是openwrt?
1. openwrt基础知识
OpenWrt 是一个基于 Linux 的、针对嵌入式网络设备的开源操作系统。它主要用于替代各种家用路由器上的原始固件。
Linux我们知道,他是目前最著名的遵循GPL协议的开源软件。
所以openwrt也是开源的。
OpenWrt 具备一个好的路由器应该具备的所有有用功能:
如 DNS 服务器(dnsmasq),WiFi 接入点(AP)和客户端功能,用于调制解调器功能的 PPP 协议,还支持webserver。
而且,与标准固件不同,这一切都是可以完全配置的。
正式因为openwrt集成了这么多和网络息息相关的功能模块,
所以基于openwrt,可以很方便的开发和迭代出新的网络产品,
我们市面见到的很多无线通信产品,比如:家用路由器、无线AP等都是基于openwrt开发的。
本案中的苏州网络公司,他们所开发的源码正是基于openwrt开发的。
官网地址:
https://openwrt.org/
2. openwrt当年被迫开源
网络产品设备商的扛把子Cisco/Linksys(思科) 在 2003 年发布了 WRT54G 这款无线路由器。
同年有人发现它的操作系统是基于Linux的,然而 Linux 是基于GPL许可证发布的,按照该许可证 Cisco 应该把 WRT54G 的源代码公开。
2003年3月,Cisco 迫于公众压力公开了 WRT54G 的源代码。
此后就有了一些基于 Cisco 源码的第三方路由器固件,OpenWrt 就是其中的一个。
那么既然openwrt是开源的,根据gpl协议规定,
苏州公司的软件产品《OfficeTen》应该也是开源的才对,
那么为什么最终法院裁定浙江通信公司侵权了呢?
我们只需要搞清楚,安卓如何绕开GPL,就明白了。
四、安卓如何规避GPL的?
Android内核也是Linux,那他是如何规避GPL的?
下图是一个完整的Android软件系统所用到的所有协议分布。
图片与Android关系最为密切的主要包括两个方面:驱动和glibc
1. glibc
glibc是linux上的主流的c运行时库,几乎每个linux程序都会简介的依赖c运行时库。
由于glibc是gpl授权的,因此如果采用glibc作为crt,按照前述问题的第二条,这些程序必须开源。
因此安卓采用bionic作为c运行时库替代glibc来规避gpl
2. 驱动
再说驱动,Android是基于Linux 内核开发的,Linux内核是GPL授权。
传统的驱动是要作为内核模块被加入到内核中的。
而内核模块属于Linux内核的衍生产品,需要遵守GPL协议开源发布。
Android是由开放手机联盟共同完成的,为了保护联盟中手机生产商的利益,驱动不能被完全开源。
因此安卓引入HAL,给linux内核开了个后门,增加了一些系统调用。
HAL在内核的部分按照GPL的要求开源。
驱动开发者可以在用户态使用这些新增的系统调用完成驱动的开发。
从而在驱动方面规避了GPL。
3. 详细说明:
Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。
也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space), 其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。
为什么要这样安排呢?
把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?
从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间,可能会损害厂家的利益。
我们知道,Linux内核源代码版权遵循GNU License,而Android源代码版权遵循Apache License,前者在发布产品时,必须公布源代码,而后者无须发布源代码。
如果把对硬件支持的所有代码都放在Linux驱动层,那就意味着发布时要公开驱动程序的源代码,而公开源代码就意味着把硬件的相关参数和实现都公开了,在手机市场竞争激烈的今天,这对厂家来说,损害是非常大的。
因此,Android才会想到把对硬件的支持分成硬件抽象层和内核驱动层,
- 内核驱动层只提供简单的访问硬件逻辑,
例如读写硬件寄存器的通道, - 硬件抽象层负责硬件对应寄存器的读写操作,这样就可以把商业秘密隐藏起来了。
也正是由于这个分层的原因,Android被踢出了Linux内核主线代码树中。
大家想想,Android放在内核空间的驱动程序对硬件的支持是不完整的,把Linux内核移植到别的机器上去时,由于缺乏硬件抽象层的支持,硬件就完全不能用了,这也是为什么说Android是开放系统而不是开源系统的原因。
4. 苏州公司如何绕开GPLv2的?
具体到本案,苏州某网络科技有限公司研发的“OfficeTen”软件是以OpenWRT系统软件(OpenWRT系统软件是开源软件,适用的许可证协议为GPLv2协议)为基础经二次开发形成的衍生软件,
具体可分为两个部分:
- 一部分是对OpenWRT系统软件所对应源代码进行增删、修改、调整而形成的涉案软件底层系统(以下简称底层系统软件),
- 另一部分则是与涉案软件具体功能相对应的新增源代码形成的上层功能软件(以下简称上层功能软件)。
苏州某网络科技有限公司声称其在底层系统软件与上层功能软件之间采用套接字(socket)与命令行(command line)等技术手段建立了隔离层,
且二者之间通信内容不涉及内部数据结构信息,由此使得上层功能软件构成GPLv2协议项下“独立且分离的”的程序。
最高法院知产法庭在二审判决中认定,苏州某网络科技有限公司投资研发的名称为“OfficeTen”的网关产品系统软件,投入了大量成本,
涉案软件具有独创性且可以复制,构成著作权法项下的作品,依法应当获得保护。
他人未经苏州某网络科技有限公司许可,不得擅自复制、修改、发行涉案软件,否则将构成侵害涉案软件著作权的违法行为。
合议庭依在案证据认定关联网络公司在开发被诉软件过程中复制并修改了苏州某网络科技有限公司涉案软件的源代码;认定浙江某通信科技有限公司实施了销售被诉软件的行为。
认定该复制、修改、发行行为均未经苏州某网络科技有限公司许可,侵害了其享有的涉案软件著作权。
五、软件著作权
本案中,法院最终保护的是苏州公司的软件著作权,所以什么是软件著作权?
1. 什么是软件著作权?
软件著作权是指由权利人根据法律规定享有的,他人不可侵犯的民事权利。
软件著作权保护是对计算机程序和文档两部分的保护。
软件著作权保护不延及开发软件所用的思想、处理过程、操作方法或者数学概念。
《计算机软件保护条例》
第二条
本条例所称计算机软件(以下简称软件),是指计算机程序及其有关文档。
第三条
本条例下列用语的含义:
(一)计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。
(二)文档,是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等。
2. 在我国软件著作权登记有什么意义?
-
1、享受国家优惠政策:
办理软件著作权登记的企业可享受国家各种优惠政策,包括投融资、税收、出口政策等,具体可参见国务院18号文件; -
2、“双软认定”的前提:
软件著作权登记是企业办理“双软认定”(软件产品登记、软件企业认定)的必要前提。信息产业部的《软件产品登记管理办法》的第七条第四款规定,软件登记时要提交知识产权证明。此知识产权证明即指《软件著作权登记证书》; -
3、可作为技术出资入股:
《关于以高新技术成果出资入股若干问题的规定》规定:“计算机软件可以作为高新技术出资入股,而且作价的比例可以突破公司法20%的限制达到35%。”甚至有的地方政府规定“可以100%的软件技术作为出资入股”,但都要求必须首先办理软件著作权登记; -
4、申请科技成果的依据:科学技术部关于印发《科技成果登记办法》的通知第八条规定:“办理科技成果登记应当提交《科技成果登记表》及下列材料:
(一)应用技术成果:相关的评价证明(鉴定证书或者鉴定报告、科技计划项目验收报告、行业准入证明、新产品证书等)和研制报告;
(二)知识产权证明(专利证书、植物品种权证书、软件登记证书等)和用户证明”。这里的软件登记证书指的是软件著作权登记证书和软件产品登记证书。其他部委也有类似规定;
-
5、企业破产后的有形收益:
软件著作权作为企业的“无形资产”,不会随企业的破产而消失。企业破产后,无形资产的生命力和价值仍然存在,可以在转让和拍卖中获取有形资金; -
6、予以重点保护:
计算机软件著作权登记是我国著作权法规所规定的对计算机软件著作权保护的一项行政辅助管理措施,《计算机软件著作权登记办法》第二条和国务院18号文件均有规定,国家著作权行政管理部门鼓励著作权人进行计算机软件著作权登记,并对已登记的软件给予重点保护。
六、对科技企业的警示
- 有知识产权保护意识
作为企业负责人或者软件开发管理者,一定要有知识产权保护意识,
开发的软件要及时申请软件著作权,
对于一些有创新的产品还要及时申请专利,
- license授权
软件最大的问题就是复制性,
通过license授权可以在一定程度上保护自己的软件产品。
详情大家可以参考下面文章:
- 对于技术人员的管理
技术人员的是企业的核心竞争力,
企业要想做走的更长远、提升产品竞争力,
主要依靠的就是研发,
平时要注重技术人的培训和提升,
保持研发团队人员的稳定,
尤其是核心技术人员,
核心技术人员的流失对企业会有致命的伤害,
一旦加入竞争对手的公司,
后果不堪设想。
- 关键岗位签署竞业协议
对于一些非常重要得岗位,
要与员工签署竞业协议,
最大程度上保护自己。