一文解释清楚开源许可的来龙去脉


在我们的工作及学习中,由于业务或者工程上性能的要求,我们总要引入一些开源软件,这些开源软件极大的方便了我们的开发工作、缩减了开发时间、丰富了我们的业务和工程功能,但是伴随开源软件的还有一个紧箍咒“开源许可”,比如GPL、LGPL、MIT、Apache许可等等,那为什么会产生许可、出现的历史背景是什么、对我们的业务有什么影响?
开源协议是随着计算机技术发展,伴随着操作系统的兴起而产生的,下面本文通过计算机科学及操作系统的发展为主线来梳理开源协议。

计算机科学的发展

计算机截止目前,共发展了四代,一代计算机(电子管计算机器,IO为穿孔纸带或者卡片)、二代计算机(晶体管计算机,批处理操作系统,出现高级语言)、三代机(集成电路芯片,分时操作系统)、四代机(超大规模集成电路计算机),其中一代计算机主要用于科学计算,比如计算弹道。二代机出现了批处理操作系统,通过磁带装载作业,并将结果也输出在磁带上,作业之间串行执行。三代计算机出现了多道技术,对计算机资源在时间和空间上进行复用,进而出现了分时操作系统。
分时操作系统我们就不得不提到Unix(脱胎于multics)。

Unix操作系统

20世纪60年代末70年代初,计算机领域的传奇人物Kenneth Thompson(肯尼斯·蓝·汤普森)和Dennis Ritchie(丹尼斯·里奇)开发完成了Unix,最初Unix是B语言实现的,由于B语言的局限性,在1973年使用C语言对Unix进行了重新编写。需要注意的是B语言也是这两位大佬设计的,C语言是Dennis Ritchie设计的。
Unix发布后,深受各大厂商的青睐,并对基于Unix开发了其他支持软件,再次对Unix进行了封装,比如IBM的AIX、HP的HP-UX、Sun的Solaris。但是这些版本的Unix只能运行在大型机上,价格非常昂贵

GNU计划

由于使用Unix使用的不便,Richard Stallman(理查德·斯托曼)认为软件应该自由的给它想要使用的人使用,于是发起了GNU计划,其中GNU认为GNU不是公共的,毫无约束的软件(public domain),它允许每一个人修改及传播 GNU,但是绝不允许传播者对GNU传播的程序再加进其他的限制。也就是说,不允许将修改后的程序据为己有。希望能确保 GNU 所有的版本都能保持自由。需要提到的是,GNU实现UNIX系统的接口标准,所以Unix能够使用GNU软件。

Lunix

20世纪80年代,由于AT&T所有的UNIX版权的限制,荷兰的Andrew S. Tanenbaum教授决定写一个不包含任何AT&T源代码的UNIX系统,名为MINIX(即小型的UNIX),并开放全部源代码给大学教学和研究工作。芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学读书时也使用了Andrew教授的Minix系统,但他觉得实在太难用了,于是也决定自己开发一个操作系统。1991 年 9 月他发布了第一版 Linux 操作系统的内核,内核由GNU工具开发,1992年,Linux内核与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。著名的免费版Linux:openSUSE变体、Ubuntu Linux、Slackware、Gentoo、Debian GNU/Linux。著名的企业版Linux:Red Hat Enterprise Linux、Fedora、Novell SuSE Linux。
在这里插入图片描述

开源许可

GNU为保证GNU软件可以自由地“使用、复制、修改和发布”,那怎么去实现这样的目标呢?就是使用开源许可,所有GNU软件都包含一份在禁止其他人添加任何限制的情况下,授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)GNU 包含3个协议条款:GPL(GNU通用公共许可证)、LGPL(GNU较宽松公共许可证)、GFDL(GNU自由文档许可证)
在这里插入图片描述
● GPL许可证:要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件。不允许封闭源代码。

● LGPL许可证:由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。所以后来GNU推出了LGPL许可证。 LGPL 的软件也允许商业化销售,但不允许封闭源代码,如果您对遵循 LGPL 的软件进行任何改动和/或再次开发,则您的产品不必继承 LGPL 协议,同时允许封闭源代码。修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。大多数 Linux 程序库,包括 C 程序库(libc.a)都属于 LGPL 范畴。使用动态链接LGPL代码库,则你不需要开源。

● MIT许可证之名源自麻省理工学院(MIT),又称X条款,MIT是比较宽泛的许可协议,只需要在软件中声明你也使用的是MIT协议就行了。很多公司企业在选用开源产品的时候都首选MIT协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

● BSD(Berkeley Software Distribution,伯克利软件发布版)协议有几个版本,和MIT协议区别已经不大,唯一的小区别是BSD要求开发者不能利用前人的名义做宣传。

● MPL (Mozilla Public License 1.1) MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。这样,围绕该软件的所有代码的版权都集中在发起开发人的手中。但MPL是允许修改,无偿使用得。

● Apache License 2.0 允许使用者修改和重新发布代码(以其他协议形式),允许闭源商业发布和销售。
使用Apache Licence协议,需要遵守以下规则:需要给代码的用户一份Apache Lience;如果你修改了代码,需要在被修改的文件中说明;在延伸的代码中 需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明;如果再发布的产品中包含了Notice文件,则需要在Notice文件中带有Apache Lience。你可以在Notice中增加自己的许可,但不可以表现为对Apache Lience构成更改。

参考:https://www.cnblogs.com/devgis/p/16377235.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值