最新消息: 大屏互动软件全新升级为 6.0 啦,启用了新的网址,还是永久免费,但有更多惊喜。点击立即体验

金杜知卓开源软件未必免费抽奖的盛宴

新闻 乐宝 48浏览 0评论

在软件发展史上,开源软件一向与私有软件是两个对立的阵营。前者主张开放代码并支持更多的分享。而私有软件则视源代码为核心关键资产予以保密和捍卫。随着互联网开放平台的软件开发模式的普及化,开源成为互联网生态建设的重要条件。加之微软等软件巨头企业纷纷向云服务的商业模式转型,并宣布支持Linux。开源软件日益受到更广泛的支持,成为云平台提升和吸引客户流量需求的重要条件。

在许多技术开发者的眼中,开源软件与免费软件别无二致。然而,2018年4月,一场两美国巨头公司之间持续了8年的软件著作权侵权纠纷案件的判决结果再次纠正了大多数人对于开源软件的错误认识,开源软件自始至终都不是免费的午餐。

昂贵的开源软件:一场诉讼震动了开源世界

Java编程语言是知名的计算机编程语言之一,目前已经被广泛应用于各类软件、手机APP的开发。Java编程语言最初是由Sun公司(Sun Microsystems, Inc.)开发的,2010年知名软件企业甲骨文公司收购了Sun公司之后,Java编程语言中包含的预先定义的函数(下称“API”)的相关知识产权便被转让至甲骨文公司。

2010年,甲骨文公司在美国加利福尼亚北区联邦地区法院向谷歌公司提起侵权之诉,诉称谷歌公司未经许可,复制了甲骨文公司享有著作权的37个Java编程语言API并将其使用在谷歌公司自己的软件(例如Android系统)上并推向市场。甲骨文公司认为上述复制行为侵犯了该37个Java编程语言API中的代码、结构、序列及组织的著作权等权利,且谷歌公司因该复制行为获得了大量利润。因此向谷歌公司索赔88亿美元。

Java编程语言本身是通过GPLv2.0开源协议的方式将其免费提供给其他软件开发者使用的,但GPLv2.0开源协议对“免费使用”进行了限制,只要符合Java编程语言开源协议,任何软件开发者可在未经甲骨文公司许可的情况下免费使用Java编程语言进行软件开发。本案中,双方关于谷歌公司复制了37个API代码的事实并无争议。双方所争议的焦点是谷歌公司的复制行为是否符合Java编程语言开源协议中约定的免费的“条件”,即谷歌公司的行为是否属于合理使用该37个API的代码。

谷歌公司主张,其复制并使用API代码的行为是受公平使用法则保护的,因为Android系统对用户是免费的,没有商业目的。但是甲骨文公司称,Android系统的授权策略是“毁灭性的”,导致了甲骨文公司许多客户转而使用Android系统。

美国联邦巡回上诉法院认为“Android是免费的这一事实并不会让谷歌使用Java应用程序接口数据包的行为变成‘非商业用途’的行为。”据此裁决谷歌公司使用甲骨文公司API代码开发Android系统的行为侵犯了甲骨文公司的著作权。

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

从上述案例可以看出,Java编程软件的确是一款免费的开源软件。但是为何甲骨文公司会起诉谷歌侵犯Java编程软件的著作权?究其根本就在于Java软件在开源时所依据的开源协议。

Java采用的是GPL v2授权协议,该协议第2条明确指出:“软件使用者可以修改副本或本程序的副本或其中任何部分,从而形成基于本程序的作品,并根据上述第1节的条款复制和分发此类修改或工作,前提是满足如下条件:……2)根据本许可证的条款,软件使用者必须使任何分发或发布的,全部或部分包含或源自本程序或其任何部分的作品作为整体免费许可给所有第三方。”法院认为谷歌公司的Android系统并不满足“免费许可”给所有第三方的条件。

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

在此,笔者为各位看官从横向角度比较各大主流开源协议中列举的权利和义务,以期可以帮助开源软件的使用者明确开源软件的使用范围,以及为打算将软件开源的开发者提供参考意见。目前最为主流的五种开源协议包括:GPL协议、LGPL协议、BSD协议、MIT协议、Apache协议,其含义和简介如下表:

开源协议类型简介GNU GPL协议GNU通用公共许可协议(GNU General Public License),简称GNU GPL、GPL,是一个被广泛使用的自由软件许可协议条款,保证终端用户运行、学习、分享(复制)及编辑软件之自由。最初由理查德·斯托曼为GNU计划而撰写。此协议最新版本为Version 3,于2007年6月29日发布。LGPL协议GNU宽通用公共协议(GNU Lesser General 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

转载请注明:好现场 » 金杜知卓开源软件未必免费抽奖的盛宴

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址