开源运动发展史与开源许可证(BSD、GPL、Apache、MIT、木兰(中国))的那些事儿
关于作者
作者简介:张帅 腾讯云,WeChat:yorkszhang
2018年数字天堂(北京)网络技术有限公司起诉柚子(北京)科技有限公司的APICloud 软件抄袭了其按照 GPL 许可证分发的 HBuilder 开发工具软件源代码,侵犯了其著作权,要求赔礼道歉。经北京知识产权法院初审、北京高级人民法院二审,柚子(北京)科技有限公司最终被判停止侵权并赔偿 71 万元。
很多人就会有疑 问?根据GPL 协议规定,任何第三方有权在 GPL 协议授权下使用其代码并构建衍生软件产品。开源软件既然可以免费使用为啥还构成侵权?
1、开源运动发展史。
Phase V:开源领域的两大阵营:FSF与OSI
2、什么是开源许可证(Open Source License)。
Part I:开源许可证分类(Copyleft & Permissive)
3、常见开源许可证(MIT、BSD、GPL、Apache)与开源许可证选择
Part I:常见的开源许可证(MIT、BSD、GPL、Apache)介绍
从历史发展的角度,开源项目的演进,大致经历了几个阶段:
第一阶段:C语言和Unix的诞生。
1969年,也就是APPANET成立的那一年,AT&T贝尔实验室的Ken Thompson(肯·汤普森)发明了Unix。
肯·汤普森曾经参与Multics的开发,Mulitics是源自ITS的操作系统,用来对当时一些较新的操作系统理论,如把操作系统较复杂的内部结构隐藏起来,提供一个界面,使得程序员能不用深入了解操作系统与硬件设备,也能快速编程。Unix在系统设计上,借用了Multics。同年,肯·汤普森的同事Dennis Ritchie(丹尼斯·里奇)发明了C语言。
丹尼斯·里奇(中)和肯·汤普森于 1999 年从克林顿总统那里获得国家技术奖章
C的设计原则在于好用,自由和弹性。于是,他们用C把原来用汇编语言写的Unix重写了一遍。虽然与当时流行的LISP和ITS相比,C和Unix的最大优点在于可移植性和简单易用。Unix的出现为黑客利用网络提供了方便,Unix迅速流行起来。Unix被认为是开源文化的基础,因为Unix后来的商业化,直接导致自由软件的诞生。
第二阶段:Unix的商业化和自由软件的诞生。
在Unix逐渐流行的时候,商业力量起了决定性作用。1984年AT&T解散了,UNIX正式成为一个商品。美国麻省理工学院(MIT)人工智能实验室(AI Lab)的领袖人物,Richard M. Stallman(理查德·斯托曼)认为人们应该拥有使用软件的天生自由,一直坚决反对将实验室的研究成果商业化,同时不满当时大量软件肆意的添加版权保护而与金钱挂钩的现象。于是在1984年,Stallman发起了自由软件运动计划。该计划所提倡的思想是:软件及其代码应当允许大家自由使用、复制分发、研究学习。
理查德·斯托曼
自由软件运动的主要项目就是著名的GNU(GNU是“GNU’S Not Unix”的首字母缩写)项目。其中,Stallman编写了GNU Emacs(一个编辑器,至今仍然在UNIX和Linux流行),GCC(C/C++编译器),GDB(调试工具)和GNU Make(构建工具),他称之为“自由软件”。之后1985年,Stallman创立了自由软件基金会(Free Software Foundation, FSF),用来筹集资金帮助开发GNU项目。
同年9月,Stallman在net.unix-wizards新闻组上正式发表了著名的《GNU宣言》(GNU Manifesto),解释为何发起自由软件运动。
随着GNU项目的发展,自由软件不断涌现,为了保护编写者的劳动成果,Stallman请了律师Eben Moglen,帮助他设计了一套方法,这就是现在著名的GNU GPL(GNU General Public License,GNU通用公共协议证书),并创造性地提出了Copyleft等概念。
第三阶段:Linux的诞生和Linux加入GNU。
1989年,那时还是芬兰赫尔辛基大学学生的Linus Torvalds在PC机上开发了新的Unix变种,而后到1991年10月5日,第一个Linux Kernel(freax)在网上公开,Linus在FTP站内为其建立了子目录,名称为Linux(Linus’s Unix),至此,Linux诞生了。
Linux与Linus
1992年,Linux正式宣布遵循GPL规则,加入GNU项目。之后,Linux开始被称作GNU/Linux。
Linux的加入,为自由软件世界提供了可以代替昂贵的Unxi,且方便好用的操作系统,也成为了自由软件运动的分水岭。之后自由软件运动开始风靡世界,越来越多的开发者参与其中。
第四阶段:开放源码(Open-Source)定义的出现。
由于GNU和GPL强烈的反商业情绪,因此被许多人所排斥,尤其是商业社区。显然,这对自由软件的发展和普及是很不利的。与Stallman那么讨厌商业化软件不同,多数自由软件开发者倾向于温和,并开始聚在一起探讨如何使自由软件进一步发展。
1997年,美国程序员Eric Steven Raymond(埃里克·雷蒙)写了一篇名为《大教堂与市集》(The Cathedral and the Bazaar)的短文,首先提出了开放源代码软件这个概念,并专门对自由软件的商业模式加以描述和讨论。这本书也被誉为:开源运动的《圣经》。
与Stallman强调自由软件道义方面的初衷不同的是,Raymond认为自由软件存在的意义并不是要替代现存的商业软件,他相信共享源代码可以产生更好的结果。
Raymond的这些论文很快得到了一些大公司的回应,随后,1998年,Bruce Perens和Eric S.Raymond等人发起设立“开放源代码促进会”(Open Source Initiative, OSI),目的是尽可能统一开源软件的认证标准。
至此,在开源领域形成了两大主要阵营:FSF(Free Software Foundation,自由软件基金会) 和 OSI(Open Source Initiative,开放源代码促进会),他们对开源有着不同的理念。
第五阶段:开源领域的两大阵营:FSF与OSI。
FSF 与 OSI作为推广和维护开源秩序的非盈利组织,维护着 “开源” 的定义以及主要的开源软件协议递交、讨论与审核。只要条款被审核通过是符合开放源代码定义的,就可以称之为开放源码授权条款,采用开放源码条款散布授权的软件即是开放源码软件,若一份商业产品中包含有开放源码软件,其包装上可以标上开放源码促进会的证明标章,认识这个标章的消费者就可以知道产品中有使用到开放源码软件,进而因为开放源码软件特有的优点而购买产品。
2、什么是开源许可证
Part I:开源许可证分类(Copyleft & Permissive)
首先需要明确的是,开源软件源代码的著作权既没有被放弃也没有过期,其修改和发行等仍然要受到著作权法或者开源软件许可证的制约。
我们接触到的开源软件一般都有对应的开源许可证(Open Source License)对软件的使用、复制、修改和再发布等进行限制。许可证即授权条款,开源许可证就是保证开源软件这些限制的法律文件,目的在于规范受著作权保护的软件的使用或者分发行为。开源许可证是开源软件生态系统的基础,可以促进软件的协同开发。
常见的开源许可证主要有 Apache、MIT、BSD、GPL、LGPL、MPL、SSPL 等,可以大致分为两大类:宽松自由软件许可证(Permissive free software licence)和著佐权许可证(Copyleft license)。其中,Apache、MIT、BSD 都是宽松许可证,GPL 是典型的强著佐权(Copyleft )许可证,LGPL、MPL 是弱著佐权(Copyleft )许可证。
Part II:CopyRight vs Copyleft vs Permissive vs Creative Common
CopyRight(著作权,又称版权)
Copyright:指软件的版权和其它一切权利归软件作者所私有,用户只有使用权,没有其它如复制、重新修改发布等权利。
Copyright符号标记
著作权源于信息时代早期,最初指印刷出版之权,是印刷术发明催生起的复制(Copy)权(Right)。后来随着科学技术发展,种类渐增,逐渐开始保护文学作品作者权利、作者的表演权利等等。1994年,计算机程序被明文提出应该作为文学作品受到保护,1996年这一规定被世界知识产权组织在全球范围内推行。
Copyleft(著佐权许可证)
Copyleft:通常被译作“著佐权”,即通过许可证的形式,补足、辅佐著作权(Copyright)不足的版权授权,相当于一种权利与义务的契约。RMS 1983年9月创建 GNU 项目,1984年发表《GNU 宣言》,抨击封闭源码行为,也创造了“Copyleft”一词。
Copyleft符号标记
“Copyleft”思想脱胎于 RMS 的知识产权观——他认为知识产权是一种社会赋权,权利人应该被允许通过契约的方式,自由转让软件权利,如复制、修改、再发布的权利。所以 RMS 提出,自由软件在承认著作权的基础上,可以通过许可协议,与公众共享作品的其它权利。
1989年,RMS 与一群律师起草了世界上第一个开源软件协议——GNU 通用公共协议证书(GNU General Public License, GNU GPL )。证书的序言体现了“Copyleft”的思想。
一是承认软件的著作权;二是提供许可协议,来获得复制、发布、修改的法律许可。用户可以获得权利人通过许可证放弃的权利,但也必须遵守许可证的规定才能行使,如果不遵守开源软件规定,便是侵犯了开源软件著作权,其著作权人就有权要求对方停止相关行为及其他。
至此,“Copyleft”一词有了实际载体。而这也是现在开源许可协议既可以保护开源软件作者著作权,又可以为开发者提供修改、再发布权利的法律思想源头和基础。
在自由软件许可中增加copyleft条款后,该自由软件除了允许用户自由使用,修改,发布以外,copyleft条款还要求作者所许可的人对修改后的派生作品要求使用相同的许可条件授予作者,以保障其后续所有派生作品都能被任何人自由使用,而不违背第一作者的初衷。
Permissive(宽松自由软件许可证)
是一种对软件的使用、修改、传播等方式采用最低限制的自由软件许可协议条款类型。这种类型的软件许可协议将不保证原作品的派生作品会继续保持与原作品完全相同的相关限制条件,从而为原作品的自由使用、修改和传播等提供更大的空间。
Copyleft与Permissive最大的区别在于:在软件被修改并再发行时, Copyleft许可协议要求软件不得用于商业性质的活动,且不得闭源(后续的衍生子软件也得遵循该条款),而 Permissive许可协议不要求公开源代码(衍生软件可以变为专有软件)。
Creative Commons(CC:知识共享协议)
CC的创始人是Lawrence Lessig,他认为,“美国人多少是有些精神分裂的”,一方面,他们重视自由,鼓励共享,但另一方面,他们却采取极端保护主义的版权法律架构,保护知识的垄断。Copyright动不动all rights reserved,Copyleft却几乎all rights released,这都是比较极端的做法,Lessig试图走出一条灵活的、有弹性的中间路线,让作者根据自己的偏好,选择保护“部分权利”。
他于2001年创立了知识共享组织(Creative Commons),开展CC的维护和推广,目前CC的版本为4.0版本(2013年发布)。
CC符号标记
CC一般不用于软件,也不宜用于软件。CC通常用于文字、图像、音乐、视频等。CC有4个选项可以选择和组合,这四个选项分别是:BY(署名)、NC(非商业性使用)、ND(禁止演绎)、SA(相同方式共享)。
CopyRight vs Copyleft vs Permissive vs Creative Common
3、常见的开源许可证介绍
根据专门提供开源软件合规服务的 Whitesource 的调查报告,以下为2021最受欢迎的开源许可证份额百分比:
2021开源许可证份额百分比
Part I:常见的开源许可证(MIT、BSD、GPL、Apache)介绍
GPL
GPL是最受欢迎的开源许证之一。该许可证由理查德·斯托曼(Richard M. Stallman)所创建,用于保护GNU软件的自由使用。GPL是Copyleft类型的许可协议,这意味着基于GPL组件编写的任何软件都必须以开源的方式进行发布。
GPL允许自由地“使用、复制、修改和发布”,但修改和发布后的软件也必须是可以自由“使用、复制、修改和发布”的。因此GPL大大限制了商业软件使用GPL授权的软件,如果非法使用,将面临起诉的风险。目前 gpl 授权的项目有:Linux、Emacs、Gcc等。GPL 的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码作为闭源的商业软件发布和销售,即必须也是开源和免费,这就是所谓的”传染性”。
Apache
Apache 许可证(Apache License),是一个由 Apache 软件基金会发布的自由软件许可证。这是一个由强大社区支持的流行且广泛部署的许可证。Apache许可证允许您自由使用,修改和分发任何Apache许可产品。
Apache许可证和 BSD许可证类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和 BSD 许可证类似:
BSD
BSD 许可协议( Berkeley Software Distribution license )是自由软件中使用广泛的许可协议之一。1970年代由伯克利加州大学的学生比尔·乔伊创建。BSD许可证非常宽松,它允许无限制地重用全部或部分软件,以集成到自由软件或所有者中。
一般情况下,GPL的条款尊重bsd许可的所有政策,因此BSD许可的代码可以根据GPL许可发布,而无需原始作者授权许可。但反过来,未经原始作者许可,不得将GPL许可的代码发布到bsd许可的代码中,因为BSD许可证不完全遵循GPL施加的所有限制。
通常,BSD许可证将给使用者很大的自由度,基本上可以理解为”我可以为所欲为”。你可以自由使用源代码,尽情地修改并再次发布,或者作为专有软件再发布。但这种“为所欲为”的行为也是有前提条件的,当你发布使用了 BSD协议的代码,或以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:(1)如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 bsd 协议。
(2)如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的 BSD协议。
(3)不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
MIT
Part II:开源许可证之间的区别与如何选择
乌克兰程序员Paul Bagwell,画了一张分析图,说明了我们应该如何选择哪种开源许可证以及各大开源许可证之间的差异,阮一峰进行了汉化,此图清晰明了的说明了各个开源许可证之间的区别。
4、中国开放原子基金会与木兰开源许可证
2020 年 6 月,由阿里巴巴、百度、华为、浪潮、360、腾讯、招商银行等多家龙头科技企业联合发起的中国首个开源基金会——开放原子基金会(OpenAtom Foundation)成立。
开放原子基金会会主要提供基础服务、法律服务、IT基础设施服务、社区运营管理等四大类别服务,截至目前已有鸿蒙OS、XuperChain、Pika、TKEStack等来自阿里巴巴、百度、华为、浪潮、腾讯、360 和招商银行等企业的7大项目加入孵化。
2019年8月,GitHub封禁了部分国家、地区的开发者账号。从克里米亚地区的俄罗斯籍开发者到全部伊朗境内开发者再到定居芬兰的伊朗籍开发者,统统遭遇了账号被封无法创建私有库并且已经创建的私有库遭到关闭,且并未得到提前通知,没有给出任何缓冲备份时间。
在这种背景下,中国开源云联盟官网上线了“木兰宽松开源许可证“(MulanPSL)。截至目前,“木兰宽松许可证”第1版(MulanPSL v1)已在Linux基金会、开源中国、华为方舟等国内外重点开源社区和开源项目中得到支持和应用。
2020年2月14日,“木兰宽松许可证”第2版(MulanPSL v2)经过严格审批,正式通过开源促进会(OSI)认证,被批准为国际类别开源许可证(International licenses)。意味着其正式具有国际通用性,可被任一国际开源基金会或开源社区支持采用,并为任一开源项目提供服务。与此同时,“木兰”是中英文双语,对本土开发者理解和使用开源许可证具有一定优势。
与众多开源许可证相比,MulanPSL v1做了以下优化:
MulanPSL v2对MulanPSL v1的改进:
(正文完)
end
Reference:
https://skywalking.apache.org/blog/2022-01-28-volcengine-violates-aplv2/
https://pingcap.com/zh/blog/introduction-of-open-source-license
https://sspai.com/prime/story/oss-license-explained
https://36kr.com/p/1381000522169728
https://blog.csdn.net/goodshanzi/article/details/120567319
https://moqod-software.medium.com/understanding-open-source-and-free-software-licensing-c0fa600106c9
https://moqod.com/blog/understanding-open-source-and-free-software-licensing/
https://baijiahao.baidu.com/s?id=1665536968387234930&wfr=spider&for=pc
https://www.10qianwan.com/articledetail/880663.html
https://blog.csdn.net/vigor2323/article/details/118948537
https://cloud.tencent.com/developer/article/1593556
转载与投稿
文章转载需注明:Linux极客技术会。
欢迎云计算、SDN、NFV、互联网IT等方向的大牛投稿。
后台回复【加群】,加入高手如云群,探讨技术。
| 温馨提示 |
欢迎分享、收藏、点赞、转发。
点个在看你最好看