之前我们介绍过很多款开源软件/项目,在文章的最后面总有代码仓库的License:MIT/Apache/GPL:
针对以上问题,为大家介绍下开源软件许可证是怎么回事,相信看完这篇文章会解决大家心中的疑虑。
开源许可证是一种法律许可;是开源项目的Owner(拥有者)明确是否允许免费地使用、修改、共享版权软件。
但使用开源许可证时,并不意味着放弃了任何权利,Owner依然对其拥有原著作权。开源许可证只是授予他们于特定权利来使用你的产品。
❝版权法默认禁止共享,也就是说,没有许可证的软件,就等同于保留版权。
有些项目虽然开源了,但用户只能查看源码,无法使用,否则就会侵犯版权。所以需要了解清楚开源项目的许可证,防止在项目使用过程中引起的法律风险。
我们通过一张表来简单了解一下常见开源许可证之间的区别:
目前,开源许可证共有 100 多种。它们的共同特征是,都允许用户免费地使用、修改、共享和查看源码,但是也都有各自的使用条件。
根据使用条件的不同,开源许可证分为宽松式(Permissive)许可证和许可复制(Copyleft)许可证两大类,它们的区别主要在于版权强度。
宽松式许可证(Permissive license)则几乎对用户没有任何限制,包括商业使用。用户可以在修改源代码后选择闭源,主要有以下三个基本特点。
Copyleft 是理查德·斯托曼提出的,作为 Copyright(版权)的反义词。Copyright 直译是「复制权」,这是版权制度的核心,意为不经许可,用户无权复制。作为反义词,Copyleft 的含义是不经许可,用户可以随意复制。
Copyleft 比宽松式许可证要严格许多,通常有以下要求:
上面三个条件的核心就是:修改后的 Copyleft 代码不得闭源。
如果一种开源许可证没有任何使用条件,连保留作者信息都不需要,那么就等同于放弃版权了。这时,软件可以直接声明进入「公共领域」(Public Domain)。
下表列出了主流开源许可证(版权强度由高到低):
宽松式(Permissive)许可证 | 许可复制权(Copyleft) 许可证 |
---|---|
BSD (Berkeley Software Distribution)MITApache 2 | GPL Lesser GPL (LGPL) Mozilla Public License (MPL) SSPLElastic License |
常见的宽松式许可证有四种。它们都允许用户任意使用代码,区别在于要求用户遵守的条件不同。
BSD 许可协议( Berkeley Software Distribution license )是自由软件中使用广泛的许可协议之一。BSD 就是遵照这个许可证来发布,也因此而得名 BSD 许可协议。BSD 包最初所有者是加州大学的董事会,这是由于 BSD 源自加州大学伯克利分校。BSD 开始后,BSD 许可协议得以修正,使得以后许多 BSD 变种,都采用类似风格的条款。跟其他条款相比,从 GNU 通用公共许可证(GPL)到限制重重的著作权(Copyright),BSD 许可证比较宽松,甚至跟公有领域(Public Domain)更为接近。事实上,BSD 许可证被认为是 copycenter(中间著作权),介乎标准的 copyright 与 GPL 的 copyleft 之间。"Take it down to the copy center and make as many copies as you want"。可以说,GPL 强迫后续版本必须一样是自由软件,BSD 的后续版本可以选择要继续是 BSD 或其他自由软件条款或闭源软件等等。
MIT 是和 BSD 一样宽松的许可协议,作者只想保留版权,而无任何其他限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。
MIT
商业软件可以使用,也可以修改 MIT 协议的代码,甚至可以出售 MIT 协议的代码。
Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。该协议和 BSD 类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布 (作为开源或商业软件)。
Apache
需要满足的条件:
Apache Licence 也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
商业软件可以使用,也可以修改使用 Apache 协议的代码。
常见的 Copyleft 许可证也有五种:
GNU General Public License(GPL)可能是开源项目最常用的许可证。GPL 赋予和保证了开源项目开发者广泛的权利。基本上,它允许用户合法复制,分发和修改软件。这意味着你可以:
注意:闭源的商业软件不能使用 GPL 协议的代码。
GNU Lesser General Public License(LGPL)。比起 GPL 它授予的权限较少。一般来说,LGPL 比较适合链接到非 GPL 或者非开源文件的库文件。由于 GPL 的规定,使用到部分 GPL 代码的软件,必须也使用 GPL,开发人员不能使用 GPL 来开发收费软件或者专有软件。LGPL 则没有这方面的要求,不要求使用与部分代码相同的 License。
商业软件可以使用,但不能修改 LGPL 协议的代码。
如果项目采用动态链接调用该许可证的库,项目可以不用开源。比如一个产品,里面的有一部分功能使用了该许可证的库,则该产品可以将该许可证的库的产品封装成一个动态链接调用的接口,供外部调用,该封装的部分,必须开源。但是该产品的其他部分,仅仅是调用该封装而已,就不要求开源了。
MPL 协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件的所有代码的版权都集中在开发发起人的手中。但 MPL 是允许修改,无偿使用的。MPL 软件对链接没有要求。
商业软件可以使用,也可以修改 MPL 协议的代码,但修改后的代码版权归软件的发起者。
SSPL 是 MongoDB 创建的一个源码可用的许可证,以体现开源的原则,同时提供保护,防止公有云供应商将开源作品作为服务提供而不回馈此开源作品。SSPL 允许自由和不受限制的使用和修改开源作品,但如果你把此开源作品作为服务提供给别人,你也必须在 SSPL 下公开发布任何修改以及管理层的源代码。开放源代码促进会 OSI 对 SSPL 颇有微词,它认为 SSPL 不是开源许可协议,实际上是一个源代码可用的许可证。
Elastic License 是非商业许可证,核心条款是如果将产品作为 SaaS 使用则需要获得商业授权。
Creative Commons(CC)许可证一般不用于代码项目而用于设计项目/文档项目。
CC 许可证不是一个单独的许可证,而是包含了多个可供选择的许可证。需要注意的是,部分 CC 许可证由于对衍生作品/商业用途的限制,不是开源许可证。
在一个 CC 许可证中,包含下面四个条款中的一个或多个:
以上四个条款有多种组合方式,包括:
除此之外,还有 CC0 1.0 许可证,使用该许可证代表作者放弃了关于作品的一切权利:
❝在作品上适用该文本的人已经将作品贡献至公共领域,在法律允许的范围,放弃所有他在全世界范围内基于著作权法对作品享有的权利,包括所有相关权利和邻接权利。 你可以复制、修改、发行和表演本作品,甚至可用于商业性目的,都无需要求同意。
例如,之前介绍过Patterns.dev这个项目,他们的文档就是 CC BY-NC 4.0[1],你可以不以盈利为目的进行复制、修改。
CC BY-NC 4.0
木兰宽松许可证是首个来自于我国的开源协议。其 v2 版通过开源促进会(OSI)认证,被批准为国际类别开源许可证。
著名的香山开源处理器就采用了MulanPSL - 2.0 XiangShan: Open-source high-performance RISC-V processor[2]
❝想快速为自己的开源项目选择一个开源许可证可以参考:Choose an open source license[3]
中国第一个关涉 GPL 协议的诉讼案件宣判 (2018)京民终 471 号《二审判决书》[4] ,认可了 GPL 协议的法律效力,但对 GPL 协议约束的判断规则也存在争议。
❝开源许可证相当于开源社区的基本法,发展到今天,已经越来越有约束力了。 -- 北京大学法学院教授张平
参考资料
[1]
CC BY-NC 4.0: https://creativecommons.org/licenses/by-nc/4.0/deed.zh-hans
[2]
XiangShan: Open-source high-performance RISC-V processor: https://github.com/OpenXiangShan/XiangShan?tab=License-1-ov-file
[3]
Choose an open source license: https://choosealicense.com/
[4]
(2018)京民终 471 号: http://wenshu.court.gov.cn/website/wenshu/181107ANFZ0BXSK4/index.html?docId=3c0957c9b82e456eb6ceab0d002c50ba