王的盛宴(好用的开源软件)-冯金伟博客园

从——甲骨文诉谷歌案看开源软件和开源协议

作者| yqdxy幽默彩虹jzdddd黄金律师事务所

(本论文是知识产权力量独家首发的稿件,转载必须征得作者本人同意,并在重要位置注明文章来源。 )

(正文3888字,阅读大约需要8分钟)

在软件发展史上,开源软件始终是与私有软件两个对立的阵营。 前者主张开放代码,支持更多的共享。 私有软件作为以源代码为中心的重要资产进行保密和保护。 随着网络开放平台软件开发模式的普及,开源已成为网络生态建设的重要条件。 除此之外,微软等大型软件企业宣布将对不断增长的海燕服务商业模式进行变革,以支持Linux。 开源软件得到越来越广泛的支持,成为云平台提高和吸引顾客流量需求的重要条件。

对许多技术开发人员来说,开源软件和自由软件一样。 但是,2018年4月,两家美国大公司之间持续8年的软件著作权侵权纠纷案的判决结果,再次纠正了许多人对开源软件的错误认识。 开源软件从头到尾都不是免费的午餐。

昂贵的开源软件:诉讼震撼了开源世界

Java编程语言是有名的计算机编程语言之一,目前广泛应用于各种软件、手机APP的开发中。 Java编程语言最初由Sun公司(Sun Microsystems,Inc.)开发,但2010年着名软件公司甲骨文收购Sun公司后,Java编程语言中包含的预定义函数

2010年,甲骨文公司在美国加州北区联邦法院向谷歌公司提出侵权指控。 据悉,谷歌未经许可复制了甲骨文拥有版权的37种Java编程语言API,并使用谷歌自己的软件(安卓系统等)推向市场。 甲骨文认为,上述复制行为侵犯了这37种Java编程语言API中的代码、结构、数组以及组织的版权等权利,谷歌公司因这种复制行为而受益匪浅。 为此,向谷歌公司索赔88亿美元。

Java编程语言本身通过GPLv2.0开源协议免费提供给其他软件开发者,但是GPLv2.0开源协议限制了“免费使用”,Java编程语言开源协议在本案中,双方对谷歌公司复制了37个API代码的事实没有争议。 双方讨论的是谷歌公司的复制行为是否符合Java编程语言开源协议约定的免费“条件”,即谷歌公司的行为是否符合合理使用这37个API的代码。

谷歌公司声称,复制和使用API代码的行为受到公平使用法则的保护。 因为安卓系统对用户是免费的,没有商业目的。 但是,根据甲骨文公司的说法,安卓系统的许可战略是“毁灭性的”,甲骨文公司的很多顾客都开始使用安卓系统。

美国联邦巡回上诉法院认为,“安卓是免费的,这一事实不会将谷歌使用Java APP接口包的行为变为‘非商用’的行为。” 据此,谷歌公司使用甲骨文公司API代码开发安卓系统的行为被判定为侵犯了甲骨文公司的版权。

关于目前主流的开源协议的介绍

从上述情况可以看出,Java编程软件确实是免费的开源软件。 但是,为什么甲骨文公司指控谷歌侵犯Java编程软件的版权呢? 从根本上说,它位于Java软件用于开源的开源协议中。

Java采用GPL v2许可协议,该协议第2条规定:“软件使用者在满足以下条件的情况下,修改复制或本程序的复制或其任何部分,制作基于本程序的作品,并根据上述第1节的条件进行这样的修改……2”软件使用者根据本许可的条件,必须分发本程序或其一部分包含或来源于任何分发或分发的作品的法院由谷歌公司的安卓系统

这个事件的结果,一定给了开源软件的使用者前车之鉴。 也就是说,在使用他人的开源软件之前,必须明确该开源软件所依据的开源协议的内容,以及自己享有的权利和义务。

这里,我们从横向上比较了主要开源协议所列的权利和义务,以明确开源软件的使用范围,为试图开源软件的开发者提供参考意见目前最主流的五种开源协议包括GPL协议、LGPL协议、BSD协议、MIT协议和Apache协议,其含义和概要如下表所示。

开源协议类型

个人资料

GNU全球导航协议

GNU通用公共许可证,简称GNU GPL、GPL,是广泛用于保证最终用户运行、学习、共享、复制、编辑软件的自由软件许可协议条款。 最初是hsdpkq为GNU计划而写的。 此合同的最新版本是版本3,于2007年6月29日发布。

LGPL协议

全球通用协议(GNU Lesser Gen )

eral Public License)简称LGPL,是由自由软件基金会公布的自由软件授权条款。此协议最新版本为Version 3。

BSD协议

BSD是“Berkeley Software Distribution”。BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。BSD代码鼓励代码共享,但需要尊重代码作者的著作权。

MIT协议

MIT许可协议之名源自麻省理工学院Massachusetts Institute of Technology,又称X许可协议(X License)或X11许可协议(X11 License)。MIT内容与3-clause BSD 协议内容颇为近似,但是赋予软件被授权人更大的权利与更少的限制。

Apache协议

Apache License是著名的非盈利开源组织Apache软件基金会发布的自由软件协议,最初为Apache http服务器而撰写。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。

各主流开源协议的条件

综合比较GPL、LGPL、BSD、MIT、Apache这五个开源许可协议(参见附件1),可发现GPL、LGPL协议侧重于代码及衍生代码的开源,MIT、BSD协议对变更并不苛求,Apache、GPL3.0、LGPL3.0协议重视专利权。同时,所有许可协议都保护原作者的版权。

1. GNU GPL协议 (GNU General Public License)[1]

在GPL协议下,软件的初始开发者使用了GPL协议并公开软件的源程序后,根据该协议 “公开源码”的要求,后续所有使用该源程序的软件开发者均需根据GPL协议把自己编写的源程序进行公开。因此,GPL协议要求的关键在于开放源程序。

在GPL协议下,其项下的软件历经众多程序员千锤百炼的修改,已经非常成熟完善,但用户开发者必须开放自己后续的源程序,导致竞争对手也可以根据自己修改的源程序开发竞争产品。因此,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的企业或部门,就不适合采用GPL开源协议作为二次开发的基础。如果企业需要对自己的源代码保密,建议不要使用以GPL协议开源的软件,因为它具有“传染性”,并且强制开源。

总体来说,GNU GPL协议允许开源软件和衍生软件用于商业用途、发行、修改,开源软件的使用者在分发软件时必须提供源代码,对代码修改部分需要进行声明,修改后的软件必须按照相同的协议发布。

2. LGPL协议 (GNU Lesser General Public License)[2]

相比GPL协议LGPL协议较为宽松。与GPL协议的相比,LGPL协议在如果只是对LGPL软件的程序库的程序进行调用而不是包含其源代码时,相关的源程序无需开源。LGPL允许商业软件通过类库调用的方式使用LGPL类库而不需要开源商业软件的代码。但是需要说明的是,如果修改了LGPL软件的程序库的代码,则修改的代码依旧需要全部开源。这样的规则使得商业软件中的一些类库会采用LGPL协议。有了这个协议,企业若不修改LGPL软件程序库中的内容,就可以把很多自己后续开发内容的源程序隐藏起来。因此,对GPL协议存在商业上顾虑的企业会考虑采纳此种开源协议。

另外,如果修改LGPL协议的代码或者衍生产品,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

3. BSD协议[3]

BSD协议鼓励公开源代码,但不是强制性的规定。根据BSD协议,原始的源程序是开放源代码的。使用者修改后可自行选择发布源程序或者目标程序。当然,使用者有义务把自己原来使用的源程序与BSD协议在软件对外发布时一并发布。

总体上来说,BSD协议尊重代码作者的著作权同时鼓励共享代码。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业应用很友好的协议。考虑到可以控制这些开源代码,在必要的时候可以修改或者二次开发,一些企业在选用开源产品的时候会首选BSD协议。

总体来说,BSD协议允许开源软件和衍生软件用于商业用途、发行、修改,但不涉及专利许可或禁止专利许可,开源软件的使用者在分发软件时并非必须提供源代码,也并不强求使用者对代码修改部分必须进行声明或修改后的软件必须按照相同的协议发布。

4. MIT协议[4]

MIT协议是史上最为简洁和大方的开源协议之一。MIT协议是一份简短而宽松的协议,只提供了版权保护和声明,它授予他人复制、修改、合并、发布、分发、授权和/或销售本软件的副本的权力。MIT协议是一个宽松的协议,它允许第三方使用发布者的代码做任何开发,但必须保证发布者的所有权,并且发布者无须承担代码使用产生的风险。该协议支持闭源的后续开发,提供了很大的灵活性和使用空间。

5. Apache协议[5]

Apache 2.0协议的效力与MIT协议近似,区别主要在于前者额外提供了一份简易的专利许可授权,明确禁止商标使用权以及要求明确指明所有修改过的文件。Apache 协议也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布、销售。

尽管MIT协议、BSD协议、Apache协议三者都支持闭源的后续开发,提供了很大的灵活性和使用空间,但Apache协议对一些开源协议常用术语作出了准确的定义,而且协议文本看上去也更为成熟,考虑更为周到。

总体来说,Apache协议允许开源软件和衍生软件用于商业用途、发行、修改以及专利许可,开源软件的使用者在分发软件时并非必须提供源代码,也并不强求修改后的软件必须按照相同的协议发布,但是使用者需要对代码修改部分进行声明。同时Apache协议明确不进行商标许可。

结语

综上所述,无论是针对使用开源软件的开发者还是针对准备开源的发布者,笔者建议在明确了解各个开源协议授予的权利和义务之后,方可进行援引或开源。我们会在后续文章中分别从开源者及使用者的角度继续分析各自需要注意的事项和问题。

注释:

[1] GNU GPL 3.0开源协议原文: https://www.gnu.org/licenses/gpl-3.0.html

[2] LGPL 3.0开源协议原文: https://www.gnu.org/licenses/lgpl-3.0.html

[3] BSD(3-clause)开源协议原文: https://opensource.org/licenses/BSD-3-Clause

[4] MIT开源协议原文:https://opensource.org/licenses/MIT

[5]Apache2.0开源协议原文: http://www.apache.org/licenses/LICENSE-2.0

王的盛宴(好用的开源软件)-冯金伟博客园