[转帖]中国 GPL 诉讼第一案:关于 GPL 问题的探讨
https://linux.cn/article-11683-1.html
2019 年 11 月初,数字天堂(北京)网络技术有限公司(下称:数字天堂)诉柚子(北京)科技有限公司、柚子(北京)移动技术有限公司(下称:两柚子)侵犯计算机软件著作权纠纷案,由北京高级人民法院二审作出终审判决。笔者曾密切关注该案,终审判决生效前,囿于关联代理关系的利益冲突,不便多谈。现将本案相关若干问题梳理成文,愿与各位探讨之。
本案之所以受关注,是因为本次计算机软件著作权侵权案涉及开源软件和 GPL 许可证,本案的判决对未来开源软件诉讼实践有重要意义。本案一审法院对 GPL 相关条款作了阐述,二审法院回避了 GPL 问题。本文,笔者基于本案事实和法院判决做些思考,分享给大家讨论。本文将仅对涉及开源软件及 GPL 许可证的内容进行论述,其他法律问题不作探讨。
案情简介
为节省篇幅,以下对案情进行摘要和总结,详细案情可见一审链接和二审链接。
经过一审和二审对事实的调查和确认,两柚子认可:
- 数字天堂是 HBuilder 软件的著作权人;
- 数字天堂拥有 HBuilder 软件中的代码输入法功能插件、真机运行功能插件、边改边看功能插件源代码著作权;
- 两柚子的 APICloud 软件中对应插件源代码部分与涉案的三个插件具有同一性。
基于此,针对本著作权侵权控诉,两柚子抗辩理由只有 GPL 开源许可协议这一个突破口。而二审中对涉案代码量、侵权产品数量的认定,以及基于此对赔偿额的认定,只是量的维度问题。
开源许可证是法律文件
一审法院虽未明确 GPL 许可证的法律效力,但在论述涉案三个插件是否受 GPL 协议限制时,默认了 GPL 许可证具有法律约束力。这一点虽然是意料之中,但毕竟开源理念和大部分开源协议来源于国外,且应用于开源社区特定人群,这一认定给未来涉及开源软件的诉讼消除了部分不确定性。为了强调协议内容,下文涉及 GPL 许可证的除特指许可证本身外,都以 GPL 协议指代。
法院虽然默认了 GPL 协议具有约束力,即类似于协议或合同的法律效果,但并未进一步将 GPL 协议条款基于我国著作权法进行解释。社区内关于 GPL 协议的解释,特别是关于 GPL 传染性的解释是基于美国版权法,其能否为国内法院认可,依然存在不确定性。
随着开源理念的深入以及开源软件在世界范围内的普及,本案作为中国 GPL 第一案,对未来开源软件相关的诉讼意义重大。稍有遗憾的是,两审法院并未就开源软件以及 GPL 协议的关键问题进行阐述。当然,也不可能期待 GPL 问题通过一次诉讼案件完全解决,未来还需要更多的法律、学术、技术等人士贡献智慧。
关于一审认定的思考
既然法院确认了 GPL 协议的法律约束力,那么对 GPL 协议的解释要么采取社区通说解释,要么基于我国著作权法作独立解释。否则很容易出现矛盾或模糊,以至于增加企业开源实践中的法律不确定性。
关于 GPL 协议约束力范围(传染性),一审法院以涉案的三个插件可以独立运行,分别存放在三个独立的文件夹中且三个独立文件夹中无 GPL 许可证,据此认为涉案三个插件不属于 GPL 协议中所指应被开源的衍生产品或修改版本。
GPL 许可证中有关的原文如下:
The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".)——GPL 3.0
To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.
A “covered work” means either the unmodified Program or a work based on the Program.——GPL 2.0
结合 GPL 协议条款和 GNU 官网对于 GPL 传染性的解释,一审法院这一认定是值得商榷的,就像你不能认为总部在西城的 A 公司与其在昌平拥有独立办公场所的分公司 B 是完全独立的,这需要从 A 和 B 之间的财务、人事、业务等是否独立为基础判断。
同理,GPL 模块 A 与模块 B 之间是否独立,绝对不能以A和B是否位于独立的文件夹中来判断,还是需要从 A 和 B 之间的功能关系、通信关系、调用关系、依赖关系等来判断。
插件相对于主程序是否独立,需要看:
- 插件的使命,是否为该主程序而存在;
- 插件与主程序的交互方式,如管道、队列、函数调用;
- 交换消息的密切性 intimate communication;
- 是否有例外声明等。
一审法院在确定赔偿额的时候又一次指出三个涉案插件是三个独立软件作品。一审法院从审判认定到赔偿衡量是一致的。这里,两柚子并没有就涉案三个插件的独立性进行抗辩,而这一点对 GPL 是否构成传染非常关键,在一审中被告代理律师对 GPL 许可证条款的理解也存在局限。
关于二审认定的思考
首先,二审中两柚子再次提出司法鉴定来否定涉案三个插件独立性,可能是准备利用 GPL 传染性中关于独立作品的认定来抗辩。不过,法院认为二审诉讼中再次提出第三次鉴定申请,有违司法程序公正和司法程序效率,即二审法院基于程序公正的角度考量不予准许。同时,二审法院认为两柚子提出的新的司法鉴定申请内容与本案待证事实之间无直接关联性,这一点是值得商榷的,因为 GPL 中作品是否独立直接影响作品是否受 GPL 约束,进而直接影响本案关于侵权的认定。二审法院的否决理由,直接回避了可能对 GPL 传染性问题的讨论。
其次,二审法院认定数字天堂现有证据不足以证明涉案三个插件可以独立于 HBuilder 开发工具软件中的其他程序独立运行,但针对不独立的插件却没有进一步讨论这种不独立是否能够进行 GPL 开源抗辩。也就是说,一审法院基于作品的独立认定 GPL 抗辩无效,二审法院采取了一审对 GPL 抗辩的意见,但却否定了作品的独立性这一前提。
是否为独立作品的认定直接决定作品是否属于衍生作品 derivative work 或修改作品 modified version,进而直接影响是否受 GPL 约束。
当然,我们可以这样解读二审法院对于作品独立的认定,即 GPL 许可证里所说的作品的独立性,和一审、二审法院判决赔偿额对插件独立的认定是不同维度/层次,这是说的通的。但仔细阅读一审判决可知,法院在否决 GPL 抗辩中和赔偿额判定中对独立的认定是一致的,二审认可了一审对 GPL 抗辩部分的认定,却否决了赔偿额中对独立作品的认定,本身前后有矛盾嫌疑。
笔者认为,如果按照上述:GPL 传染性中独立性判定和对侵权作品数量中独立性判定是不同维度的独立性判定的假设,至少二审中需要重新认定 GPL 传染性的问题,从而将两个维度的独立性认定区分开来。
关于两柚子诉求理由的思考
两柚子在二审中再次申请司法鉴定:
- 涉案三个插件是否可以脱离 Eclipse 主体软件在 Windows 环境中独立运行;
- 将涉案三个插件源代码编译为插件以验证插件能否在 Eclipse 主体软件中独立运行;
- 任意删除 Hbuilder 软件目录下的一个或多个以“org.eclipse”、“org.apache”、“com.aptana”为前缀的文件或目录 JAR 文件以验证涉案三个插件能否正常运行……
关于这三个补充鉴定事项,首先,笔者认为两柚子或者其律师在开源上做足了工作,但其中依然存在问题。首先,插件独立于 Eclipse 主程序,并不一定需要插件可以脱离 Eclipse 主程序在 Windows 中独立运行。插件的独立性在于:插件有明确的功能,可用于特定的主程序,但不依赖于特定的主程序。最后,主程序脱离插件,应当且必须可以独立运行,并且不损失主程序本身的所有功能。
再看诉讼本身
基于以上认识,我们再回头看看案件本身。首先说明,因本案需要进行多处技术鉴定,笔者无法也没有精力一一取证,仅仅基于几个假设,再捋一下 GPL 相关的问题。笔者认为,关于本案 GPL 传染性的认定需要从 3 个方面来看:
- Eclipse 主程本身;
- 基于 Eclipse 主程序的 GPL 插件;
- 涉案插件与主程序,以及涉案插件与上述 GPL 插件的关系。
为方便读者理解,引用数字天堂代理律所对一审结果评述的一张图。
(1)从 Eclipse 主程序看
APICloud 和 HBuilder 都是基于主程序 Eclipse 平台,包含第三方开源插件+各自自研插件组成的集成开发环境 IDE。
首先,主程序 Eclipse 是采用 EPL(Eclipse Public License)许可证公开,EPL 与 GPL 不兼容。即便是 2017 年 8 月发布的 EPL-2.0 版本虽然添加了次级许可证选项,但其与 GPL 依然是不兼容的。因此,HBuilder 作为下游产品,其对 Eclipse 的包装分发不能变更 Eclipse 许可证。
其次,针对插件来说,无非是拓展 Eclipse 某一特定的功能,任何非 Eclipse 本身的第三方插件,可以说对于 Eclipse 主程序来说都是非必须的。其第三方公司开发的 Eclipse 主程序的插件,按照 EPL 传染性的规定,一般不视为 EPL 的衍生作品,不受 EPL 约束。
最后,需要强调的是 EPL 虽然是弱 Copyleft 许可证,但其依然是类似于 GPL 的具有“传染性”的许可证,其在给予用户更大使用方便的同时,对自身软件的 Copyleft 保护依然很强。因此,下游软件开发者在处理 EPL 软件和 GPL 软件时,需要认真对待它们的兼容性问题。
(2)从 Aptana 插件看
Aptana 在 2006 年推出时,以 EPL 1.0 发布,并于 2017 年 9 月 21 日修改为 GPL3.0 和 APL(Aptana Public License )双许可。APL 不是开源/自由软件许可证,可以认为是商业许可,但对于非分发的内部使用是免费的。
Aptana 作为主程序 Eclipse 的插件,由于 EPL 和 GPL 不兼容,Aptana 中的 GPL 插件要和以 EPL 许可的 Eclipse 主程序连接,必须在 GPL 许可证里作例外声明。毫无疑问,笔者在 Aptana 官网找到了例外声明,即关于独立作品的 GPL 传染性例外声明,以及聚合程序的 GPL 传染性例外声明。部分内容如下:
GPL Section 7 Exception
……which are conveyed to you by Appcelerator, Inc. and licensed under one or more of the licenses identified in the Excepted License List below (each an "Excepted License"), as long as:
- you obey the GPL in all respects for the Program and the modified version, except for Excepted Works which are identifiable sections of the modified version, which are not derived from the Program, and which can reasonably be considered independent and separate works in themselves,
- all Excepted Works which are identifiable sections of the modified version, which are not derived from the Program, and which can reasonably be considered independent and separate works in themselves,
- are distributed subject to the Excepted License under which they were originally licensed, and
- are not themselves modified from the form in which they are conveyed to you by Appcelerator, and
- the object code or executable form of those sections are accompanied by the complete corresponding machine-readable source code for those sections, on the same medium as the corresponding object code or executable forms of those sections, and are licensed under the applicable Excepted License as the corresponding object code or executable forms of those sections, and
- any works which are aggregated with the Program, or with a modified version on a volume of a storage or distribution medium in accordance with the GPL, are aggregates (as defined in Section 5 of the GPL) which can reasonably be considered independent and separate works in themselves and which are not modified versions of either the Program, a modified version, or an Excepted Work.
If the above conditions are not met, then the Program may only be copied, modified, distributed or used under the terms and conditions of the GPL or another valid licensing option from Appcelerator, Inc. Terms used but not defined in the foregoing paragraph have the meanings given in the GPL
从以上 GPL 例外中可以看出,Aptana 只是部分限定了“衍生作品”解释,也就是运行采用 GPL 许可证的 Aptana 与像 Eclipse 这样独立的程序交互不会发生传染,仅此而已。而如果修改 Aptana,将其他程序并入 Aptana Studio,或者将 Aptana 与其他程序进行整合的作品依然受到 GPL 协议约束。简单的说,加入 GPL 例外的 GPL 程序依然是 GPL 程序,这一点必须强调。关于这一点,Aptana 官网还专门有问题解答:
Can I add EPL'd plugins to Aptana Studio package and redistribute it?
No. You can only redistribute the unmodified binary versions of the EPL'd plugins that are part of Aptana Studio when distributing any of the GPL'd code. Adding any files to Aptana Studio package creates a derivative work, and since all derivative works need to be made GPL'd, you will not be able to add EPL'd (or any other license) plugins without contacting us for a commercial license.
What if I want to make changes to some of Aptana Studio's EPL'd plugins?
You are free to make changes to any of Aptana Studio EPL'd code under the terms of the EPL. To get those redistributed as part of Aptana Studio, we encourage you to contribute those back to Aptana so that we may evaluate your changes for inclusion back into the product.
Can I take unmodified Aptana Studio binaries and combine them with an Eclipse distribution?
No. Combining our GPL'd licensed code with any other product requires that the entire product be GPL'd, and therefore you cannot include any Eclipse distribution.
数字天堂认为,其 HBuilder 是包含 Eclipse 平台框架和众多插件的聚合体软件包,但其基于 Eclipse 开发且打包了 Aptana 中的 GPL 插件。从 GPL 协议对独立程序和聚合程序的规定来看,HBuilder 不被感染很难成立。一旦这种潜在传染可能性成立,数字天堂的 HBuilder 发行版就不满足合规性,其内部 EPL 和 GPL 软件不兼容。直白的说,就是整个发行版都可能受到 GPL 的约束。同时,这对于 Eclipse 是不可接受的,哪怕 EPL 是弱 Copyleft 许可证。这些问题,多是对 EPL 和 GPL 的 Copyleft 性质认识不到位导致。
(3)涉案插件与主程序及 Aptana 插件的关系
其实,以上两步分析一旦得出受 GPL 约束的结论,就不需要下面的分析了。为了完整,同时供未来类似案例参考,简单介绍。
进一步分析 Aptana 与数字天堂的涉案三个插件之间的关系,若涉案三个插件与 Aptana 有调用、通信、依赖关系,那么涉案三个插件必然会被 GPL 传染,也即是受 GPL 约束。
从以上三步的分析可见,在 GPL 传染性判断时,是否为独立作品是非常关键的。这也是我在前面法院判决部分要强调一审法院对独立的认定虽未必符合 GPL 本身解释,但至少前后一致。而二审法院对作品独立的认定甚至前后矛盾。
当然,笔者没太多精力去调查技术细节,点到为止,有兴趣的读者可以进行深入研究。
以上分析,是基于 Eclipse 作为中立主程序(即 Eclipse 主程序著作权人非诉讼参与人),GPL 插件与非 GPL 插件判定的情况,换一种场景以上判断完全或者大部分不成立。关于开源软件和 GPL 的问题还有很多需要注意的,限于篇幅不再进一步说明,对本案或对开源感兴趣的朋友可以找我单独讨论。
[转帖]中国 GPL 诉讼第一案:关于 GPL 问题的探讨的更多相关文章
- GPL协议中国第一案尘埃落定,相关开源软件应如何风控?
导读:2019年11月6日,数字天堂(北京)网络技术有限公司(以下简称 “数字天堂公司”)诉柚子(北京)科技有限公司.柚子(北京)移动技术有限公司(以下简称 “柚子公司”)侵犯计算机软件著作权纠纷一案 ...
- Linus爱GPL 但不喜欢GPL诉讼
导读 在上周多伦多举行的LinuxCon NA会议上,Linus Torvalds 和 VMware 副总裁 Dirk Hohndel讨论了 GNU GPL 在 Linux 成功上所起的作用.Hohn ...
- [转帖]中国公有云2018H1市场占有率
IDC:阿里云中国第一 市场份额为2到9名总和 https://news.cnblogs.com/n/617838/ 1 月 21 日,市场研究机构 IDC 日前公布 2018 年上半年中国公有云 ...
- [转帖]中国首颗通信能力达10Gbps的低轨宽带卫星出厂
中国首颗通信能力达10Gbps的低轨宽带卫星出厂 From 新浪科技 原来卫星都能够达到10G带宽了 我们公司的工位还TM有百兆的呢. 近日,中国首颗通信能力可达到10Gbps的5G低轨宽带卫星正式出 ...
- [转帖]中国AI芯“觉醒”的五年
中国AI芯“觉醒”的五年 https://www.cnbeta.com/articles/tech/857863.htm 原来 海思的营收已经超过了按摩店(AMD) 没想到.. 十多款芯片问世,多起并 ...
- [转帖] 中国SaaS死或生之二: ERP两大邪术,尽出歪门邪路 ---- 挺好玩的
中国SaaS死或生之二: ERP两大邪术,尽出歪门邪路 http://www.cniteyes.com/archives/33753 文章摘要:在数字化浪潮中,油腻ERP大叔的那些“歪门邪术” ...
- [转帖]中国SaaS死或生之一:“网红”CRM的大起大落
中国SaaS死或生之一:“网红”CRM的大起大落 http://www.cniteyes.com/archives/33709 文章摘要:从“大众情人”到被人遗弃,如何从CRM身上审视中国Sa ...
- [转帖]中国x86服务器市场H1出货量大幅下滑:浪潮、戴尔和华为排名前三
中国x86服务器市场H1出货量大幅下滑:浪潮.戴尔和华为排名前三 https://www.cnbeta.com/articles/tech/900237.htm 市场开始下滑了.. 据IDC<2 ...
- [转帖]中国新超算彻底告别进口CPU 国产芯片已可与国外抗衡
中国新超算彻底告别进口CPU 国产芯片已可与国外抗衡 蓝天·2017-10-17·本土IC 来源: 观察者网 https://www.laoyaoba.com/html/news/newsdetail ...
随机推荐
- drf--版本控制
目录 作用 内置版本控制 局部使用 全局使用 案例 源码分析 作用 因为程序在不停的更新迭代,新版和旧版差别比较大,但此时有些用户没用进行更新,还是访问的旧版,此时就需要进行版本控制,让用户体验更好 ...
- Python中itertools.groupby分组的使用
Python中itertools.groupby分组的使用 有时候我们需要给一个列表按照某个属性分组,可以借助groupby来实现. 比如:一下列表我想以严重程度给它分组,并求出每组的元素个数. fr ...
- Spring框架快速入门
ssm框架是目前最流行的框架之一.他包括Spring,springMVC,mybatis.今天来简单介绍一下spring. 1.spring是什么? 答:spring是一个轻量级的框架. 2.两大核心 ...
- Kotlin开发springboot项目(一)
Kotlin开发springboot项目(一) Kotlin语言与Xtend语言有很多相似之处 为什么会存在这么多JVM语言? 现存的语言提供了太过受限制的功能,要不就是功能太过繁杂,导致语言的臃肿和 ...
- rhel7学习第四天
学习<Linux就该这么学>第二周,学习了最重要的几个文件操作命令
- 最常见Linux操作
命令 含义 cd /home/hadoop #把/home/hadoop设置为当前目录 cd .. #返回上一级目录 cd ~ #进入到当前Linux系统登录用户的主目录(或主文件夹).在 Linux ...
- 云服务器ECS(Elastic Compute Service),知识点
资料 网址 什么是云服务器ECS https://help.aliyun.com/document_detail/25367.html?spm=a2c4g.11186623.6.544.4e1e376 ...
- oneinstack——证书更新
如果你安装好 oneinstack 你的定时任务就会自动添加 "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh ...
- JMeter5.1开发http协议接口之json
信息头指定是json 传json 包含传token,请参考:https://www.cnblogs.com/uncleyong/p/11668665.html
- 10-赵志勇机器学习-meanshift
(草稿) meanshift 也是一种聚类方法. 优点在于:不需要提前指定类型数. 缺点就是计算量大 过程:(最一般的做法,没有使用核函数) 1. 逐点迭代,设置为位置中心 2. 计算所有点到位置中心 ...