inBuilder 今日分享丨开源许可协议简介
inBuilder开源社区版是浪潮发布的一个免费易用的低代码平台,其内核是托管于开放原子开源基金的 UBML,而 UBML 是基于 Apache-2.0 许可协议的。那 UBML 基于 Apache-2.0 协议会对使用 UBML 的开发者有什么限制或约束?
这就涉及到一个问题:开源软件的许可协议类型及其区别,本文我们就来简单地探讨下开源软件的许可协议。本文将首先介绍许可协议的类型,然后介绍几个常见的许可协议。
许可协议类型
常见的许可协议主要有两种类型:一个是 Permissive,一个是 Copyleft,下面分别介绍下两种类型。
Permissive
宽松自由软件许可协议,对软件的使用、修改、传播等方式采用最低限制的自由软件许可协议条款类型。其特点如下:
对软件的使用,修改,传播等方式采用最低限制
不要求衍生作品继续保持和原作品完全相同的相关限制条件
衍生的软件可以选择闭源
常见的 Permissive 类型的开源许可协议有 MIT、MulanPSL-2.0、Apache-2.0、BSD 等。
Copyleft
著佐权协议,有限空间内的自由使用,不得用于商业目的,且不得闭源,衍生品仍需开源。其特点是:
有限制地使用,修改,传播,不得违背原作品的限制条款
衍生软件要求开源
衍生软件也要求遵循原始的许可
从 Copyleft 的特点可以看出,Copyleft 类型的协议是有传染性的,也就是如果使用了一个许可类型是 Copyleft 类型的开源软件,则该软件也必须得开源并且需为 Copyleft 类型的许可协议。 常见的 Copyleft 类型的开源许可协议有 GPL、MPL、LGPL 等。
常见 license 介绍
1、MIT
MIT 许可证 (MIT)是最知名的开源许可证之一,也被广泛使用的一种许可协议。与其他常见的软件授权条款(如 GPL、LPGL、BSD)相比,MIT 具有相对宽松的软件授权条款。它对开源软件使用者的限制很小。该协议的基本特点是:
可以使用、复制和修改软件
可以出售其衍生品
衍生品必须附有 MIT 协议,但不要求必须是也是 MIT 的,也不要求必须开源
从上可知使用了遵循 MIT 许可的开源软件的软件(衍生品)是可以闭源的,因此该许可协议是商业友好的一种许可。常见的遵循 MIT 许可的开源项目有:React、Vue、Angular、Node.js、Putty 等。
2、Apache-2.0
Apache 协议是由开源组织 Apache 软件基金会发布的,2.0 是其第二版,也是目前被广泛使用的一种开源许可协议。Apache 许可协议也是比较宽松的开源协议,允许用户修改、再发布,也可以出售。但是在使用遵循该协议的开源软件时,要遵守以下四个约束:
其衍生品必须提供 Apache 许可协议声明
如果修改了程序源代码,需要在文档中进行声明
修改或使用源代码时需要保留原有软件代码的中协议、商标、专利声明及其他原作者声明的内容信息
如果衍生品中有声明文件,则需在此文件中标注 Apache 许可协议
以上可知遵循 Apache-2.0 许可协议的开源软件的衍生品是可以闭源的,也没有其他特别严格的要求,所以该许可协议和 MIT 许可一样也是一种商业友好的许可协议。常见的遵循 Apache-2.0 许可的开源项目有: Apache HTTP Server、Spring、Hadoop、Spark、Log4j 等。
3、BSD
BSD,伯克利软件发行版(Berkeley Software Distribution)。和上面两种协议一样也是相当宽松的开源协议,给予使用者极大的自由,可以使用、修改和重新发布遵循该许可的开源软件,并且可以将软件作为商业软件发布和销售。BSD 分为 BSD-0-Clause、BSD-1-Clause、BSD-2-Clause、BSD-3-Clause 和 BSD-4-Clause。目前最流行的是 BSD-3-Clause,其特点和约束如下:
主要特点:
允许修改源码
允许源码再发布
允许商业软件发布和销售
约束:
如果衍生品中包含源代码,源代码中必须包含原项目中的 BSD 协议
如果衍生品是二进制类库/软件,则需要在相关文档或 Notice 中包含原来代码中的 BSD 协议
不可以用开源代码的作者/机构名字和产品名字做市场推广
同时,BSD-2-Clause 许可协议也比较常用,它和 BSD-3-Clause 的大区别是,它没有最后一条约束。
BSD 也是商业友好的,其衍生品也可以闭源,目前比较常见的遵循 BSD 的开源项目有:Flask, Go, Nginx。
4、GPL
GPL,GNU 通用公共许可证(GNU General Public License),由自由软件基金会(Free Software Foundation,FSF)理查德·斯托曼为 GNU 项目所撰,是最著名的开源 License。GPL 协议和 BSD、 Apache Licence 等鼓励代码重用的许可很不一样。GPL 从诞生之初就是反商业软件而行之的,其允许使用者自由免费使用、散布和修改软件,并要求使用者将修改后的衍生作品以同等的授权方式发布。Linux 内核遵循 GPL 许可,因此我们能免费使用各种 Linux,包括商业公司的 Linux 和 Linux 上各种各样的由个人,组织,以及商业软件公司开发的免费软件。GPL 的约束包括:
始终保持开源发布,所有衍生品都要开源发布
有限制地使用,修改,传播,不得违背原作品的限制条款
衍生品必须也遵循 GPL
不要求版权和署名,主要衍生品遵循 GPL,可以不再附上原开源作者等相关信息
可以收取服务费用,但是该费用只能作为一种感谢费,开发者必须无偿提供所有完整的源代码
所以 GPL 是一种 Copyleft 的许可协议,其不是商业友好的,因为使用了 GPL 就必须开源免费,而且 GPL 具有传染性。常见的遵循 GPL 许可的开源项目有:Linux、MySQL 等。
结语
开源许可协议还有很多,本文不一一介绍,在实际软件开发中涉及到使用开源软件时,首先一定要去查看开源软件的 License 许可,并关注该许可有哪些要求,从而判断是否应该使用该开源软件,以免带来不必要的麻烦。
UBML 开源选择了 Apache-2.0 的开源许可协议,也就是说基于 UBML 开发的任何作品,开发者可以选择开源发布、闭源发布,也可以选择进行商业发布,收取产品费用。也欢迎更多的开发者加入 UBML 开源大家庭(https://gitee.com/ubml),共创共建低代码平台。
参考文档:
https://zhuanlan.zhihu.com/p/530986560
https://zhuanlan.zhihu.com/p/530986560
https://baijiahao.baidu.com/s?id=1665536968387234930&wfr=spider&for=pc
评论