常见开源许可协议及主要区别

开源许可协议是对开源软件的使用、复制、修改和分发等行为进行规范和约束的一种具有法律效力的格式合同,是开源运动的基石。开源软件并非百益无害,作为一个开源软件的拥护者和支持者,我对开源软件的许可也从最初的理想主义向既有保护又有开放的方向转变。本文简要谈谈常见开源许可协议以及它们的主要区别。

开源的一般目的

开源软件一般有三大的目的,各取所需。第一种目的是理想主义目的。即认为所有软件都应该以源代码的形式发布,类似于GUN或Linux等项目。第二种目的是展示认可类。即通过开放源代码的形式展示自己在软件设计、算法和编码水平上的成就,并期望得到公众的认可。第三种目的是商业利益类。即通过开源推广自己的软件成果,并通过提供增值的产品或服务来获取商业利益的,比如Mysql或安卓等。

然而开源并不是把代码公开这么简单,为了实现不同的目标和商业利益,人们在现在著作权和软件著作权的法律框架内,搞出了很多针对开源软件的许可证,它是一份协议,目的是告诉你能拿开源软件干什么或不能干什么。

著作权及软件著作权

现行的《中华人民共和国著作权法》第九条规定了著作权人享有的十七项权利,而《计算机软件保护条例》第八条规定了软件著作权人享有的九项权利,具体如下:

(一)发表权,即决定软件是否公之于众的权利;

(二)署名权,即表明开发者身份,在软件上署名的权利;

(三)修改权,即对软件进行增补、删节,或者改变指令、语句顺序的权利;

(四)复制权,即将软件制作一份或者多份的权利;

(五)发行权,即以出售或者赠与方式向公众提供软件的原件或者复制件的权利;

(六)出租权,即有偿许可他人临时使用软件的权利,但是软件不是出租的主要标的的除外;

(七)信息网络传播权,即以有线或者无线方式向公众提供软件,使公众可以在其个人选定的时间和地点获得软件的权利;

(八)翻译权,即将原软件从一种自然语言文字转换成另一种自然语言文字的权利;

(九)应当由软件著作权人享有的其他权利。

软件著作权人可以许可他人行使其软件著作权,并有权获得报酬。

软件著作权人可以全部或者部分转让其软件著作权,并有权获得报酬。

规定开源许可证的目的

对于商业软件来说,上述著作权及软件著作权通常是保留的,而且绝大多数商业软件都会附带一份用户许可协议,其中规定了双方的权利和义务,同时也告诉用户能做什么不能做什么。然而对开源软件来讲,任何人可以几乎无成本的获得软件的源代码或最终程序,就会产生这么一个问题,即用户使用了开源代码后产生的一系列问题如何处理,这些处理方式是开源软件发布者所追求的,而开源发布者往往是技术工作者,他们虽然对自己的开源成果有特定的想法但通常并不都具有规定许可协议这么专业的法律知识或每个人都重复一次次的规定自己的开源协议。

因此这个组织就出现了。通过规定一些常见的开源许可证,将权利义务写入许可证,即可使用某种特定的许可证来约定作者及使用者的权利和义务,一方面是弥补现有著作权相关法律对这方面的欠缺,另一方面是基于著作权相关法律条款,帮助开源的软件作者获得自己想要的结果。

常见开源许可协议及主要区别

目前开源许可协议较多,比较常见的开源许可协议有MITApacheGPLLGPLBSDMPLCDDLEPL,其中使用广泛的是GPL许可协议、Apache许可协议、BSD许可协议,MIT许可协议。以中国北京大学牵头的一批单位,在现有许可证的基础上,改善并发布了中国版的开源许可协议 — 木兰系列开源许可协议,包括木兰宽松许可协议和木兰公共许可协议。

许可协议简介特点详情
MITMassachusetts Institute of Technology 的简写,源自美国麻省理工学院命名。不需要公开源码,基本可以为所欲为,最低限度声明原开发者版权。https://mit-license.org/
ApacheApache License的简写,指非盈利开源组织Apache采用的许可证,主流版本Apache-2.0 License。不需要公开源码,修改源码必须声明,但禁止用开发者名义进行推广。http://www.apache.org/licenses/
GPLGNU General Public License 的简写,GNU通用公共许可协议,主流版本GNU General Public License v3.0强制公开所有的代码,必须要使用相同的许可证,修改源码必须要声明。https://www.gnu.org/licenses/
LGPLGNU Lesser General Public License 的简写, GNU宽通用公共许可证,主流版本GNU Lesser General Public License v3.0不需要公开源码,开发者在不修改源码的前提,只引用源码的功能,无需强制开源自己的代码。但是修改源码必须要声明,并采用相同的许可证。https://opensource.org/licenses/
BSDBerkly Software Distribution 的简写,指伯克利软件发行版。不需要公开源码,软件产品文档必须声明许可证,但禁止用开发者名义进行推广。https://directory.fsf.org/wiki/License:BSD-4-Clause
MPLMozilla Public License 的简写,指非盈利开源组织Mozilla采用的协议。主流版本Mozilla Public License 2.0不需要公开源码,修改代码必须声明,修改代码必须要无偿贡献版权给原作者。https://www.mozilla.org/en-US/MPL/
CDDLCommon Development and Distribution License 的简写,指通用开发与销售许可协议。不需要公开源码,提供专利保护。https://oss.oracle.com/licenses/CDDL+GPL-1.1
EPLEclipse Public License 的简写,指非盈利开源组织Eclipse采用的协议。主流版本Eclipse Public License 2.0不需要公开源码,修改代码必须声明,修改代码必须要无偿贡献版权给原作者。https://www.eclipse.org/legal/epl-2.0/
常见开源许可协议

公共许可协议与宽松许可协议

GNU通用公共许可协议(GPL许可)作为国际上使用最广泛的通用公共许可证,被业界称为”病毒高许可证“,这个通用公共许可证是自由软件基金会制定的,是开源软件使用的各种许可证当中最严格的一种。

GNU通用公共许可协议的核心内容是:1.可以随意复制和发布软件,如果以二进制形式发布软件,则必须能获得二进制软件版本的人以不付出额外成本的方式获得其源代码。2.可以随意修改源代码,一旦发布源代码就必须同时发布修改后的源代码,而且修改版本也必须以GPL许可发布。3.GPL许可的衍生作品,分发也必须遵循GPL许可的规定。4.GPL许可不提供任何保证,使用软件出了问题开源者不管,需要使用者自己解决。

宽松许可协议又有什么特点呢?宽松许可协议与公共许可协议通常有一个共同的特点:即无担保。使用开源代码的责任由使用者自负,但你可以随便的复制和发布,也不限制商用。这种宽松许可协议的主要代表有Apache许可协议和MPL许可协议。明显的不同点在于:1.Apache许可协议如有修改必须保留已有的版权声明,且必须包括新的版权声明。2.BSD许可协议不允许在衍生软件作品中提及开源作者的姓名,即可以使用但不能提开源作者。如此规定的主要原因是使用者的修改污染了原始的开源代码,破坏了原码作者的代码品质,并且可能引入新的缺陷。3.MIT许可协议与Apache许可协议类似,它要求在衍生作品中必须提原开源代码作者,源代码作者应该得到充分尊重。第四,Mozilla许可协议规定对源代码的修改必须有修改说明,修改代码必须要无偿贡献版权给原作者。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注