开源运动发展史与开源许可证(BSD、GPL、Apache、MIT、木兰(中国))的那些事儿

2022-08-18 21:20:03 浏览数 (1)

关于作者

作者简介:张帅,公众号:Flowlet,WeChat:yorkszhang

2022年1月份,Apache SkyWalking社区在其blog上实锤字节跳动的火山引擎里面违反Apache 2.0许可证,重新发布了Apache SkyWalking开源软件。

2021年8月份,波兰科技爱好者 Patrycja 在推特发文称,智能设备公司UMIDIGI 旗下 UMIDIGI F2手机(基于 Android 10)的内核源码因违反GPLv2协议,希望UMIDIGI公开源码。一名自称为 Ben 的UMIDIGI内部员工表示,Patrycja 可以在工作时间到他们深圳的办事处来索取源代码,但是 Ben 特别强调了他们的员工只会说中文,并附上了公司地址:深圳市南山区塘岭路1号金骐智谷大厦4楼405-407。

随后,知名网红「Naomi Wu 机械妖姬」表示可以提供帮助,来到UMIDIGI公司的办公区,要求他们提供手机操作系统的内核源码,此事件在网上引起热议。

2018年数字天堂(北京)网络技术有限公司起诉柚子(北京)科技有限公司的APICloud 软件抄袭了其按照 GPL 许可证分发的 HBuilder 开发工具软件源代码,侵犯了其著作权,要求赔礼道歉。经北京知识产权法院初审、北京高级人民法院二审,柚子(北京)科技有限公司最终被判停止侵权并赔偿 71 万元。

很多人就会有疑问?根据GPL 协议规定,任何第三方有权在 GPL 协议授权下使用其代码并构建衍生软件产品。开源软件既然可以免费使用为啥还构成侵权?

在中国互联网出海,开源合规的背景下,无论是在开发项目中使用其他开源代码,还是计划将自己的软件以开源方式进行分发,都值得认真了解下开源软件及其许可证。本文将从以下几点讲述开源运动发展史与开源许可证的关系以及国内目前开源运动的相关发展。

1、开源运动发展史。

Phase I:C语言和Unix的诞生

Phase II:Unix的商业化和自由软件的诞生

Phase III:Linux的诞生和Linux加入GNU

Phase IV:开放源码(Open-Source)定义的出现

Phase V:开源领域的两大阵营:FSF与OSI

2、什么是开源许可证(Open Source License)。

Part I:开源许可证分类(Copyleft & Permissive)

Part II:CopyRight vs Copyleft vs Permissive vs Creative Common

3、常见开源许可证(MIT、BSD、GPL、Apache)与开源许可证选择

Part I:常见的开源许可证(MIT、BSD、GPL、Apache)介绍

Part II:开源许可证之间的区别与如何选择

4、中国开放原子基金会与木兰许可证。

1、开源运动的发展

从历史发展的角度,开源项目的演进,大致经历了几个阶段:

  • 第一阶段: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等概念。

Copyright:指软件的著作权(也称版权)和其它一切权利归软件作者所私有,用户只有使用权,没有其它如复制、重新修改发布等权利。

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:主张自由软件是必须100%提供源码,但是“自由软件”并不是完全免费,发布“自由软件”的作者可以选择适当的收费(收费价格需合理),也可以免费。

FSF发布的License许可证协议被广泛使用的就是GPL协议与LGPL协议,目前最新版本是3.0,GPL协议对使用自由软件源码再开发的人基本要求是:如果再发布新软件,必须公开源代码;而LGPL会宽松一些,不需要完全公开源代码。

OSI:认为“自由软件”对于个人开发者来说很喜欢,但是对于企业来说想继承发展“自由软件”会有一些顾忌,因为使用了“自由软件”的源码,新的项目的源码也需要公开,许多商业公司是不愿意的。

OSI目的是在原教旨主义开源 (最早的开源运动发起和推动者们) 与软件工业/商业之间激烈矛盾中,寻求更平衡的体系和治理机制。OSI通过制定不同的开源许可标准,让商业公司也可使用开源软件,而不必公开其源代码,从而推动开源软件的发展。目前OSI 组织批准过的许可大概有 90 种,包括 Apache License v2、GPL v2、MIT/BSD 等。

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 许可证类似:

(1)需要给代码的用户一份 Apache Licence。

(2)如果你修改了代码,需要在被修改的文件中说明。

(3)在延伸的代码中(修改开源代码衍生的代码)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。

(4)如果再发布的产品中包含一个 notice 文件,则在 notice 文件中需要带有Apache Licence。你可以在 notice 中增加自己的许可,但不可以表现为对Apache Licence构成更改。

(5)Apache Licence 也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

  • 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

MIT 许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称 “ X 条款”(X License)或 “ X11 条款”(X11 License)。

MIT是最宽松的自由软件许可证之一。基本上,只要您添加了原始mit许可证和版权声明的副本,就可以和BSD许可证那样,对原始软件进行许可范围内的任何操作,也相当于可以”为所欲为”。如果你在开放源代码时,只想保留版权,而无需其他任何的限制,那么你可以选择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做了以下优化:

(1)许可证内容以中英文双语表述,中英文版本具有同等法律效力,方便更多的开源参与者阅读使用,简化了中国使用者进行法律解释时的复杂度。

(2)许可证明确授予用户永久性、全球性、免费的、非独占的、不可撤销的版权和专利许可,并针对目前专利联盟存在的互诉漏洞问题,明确规定禁止“贡献者”或“关联实体”直接或间接地(通过代理、专利被许可人或受让人)进行专利诉讼或其他维权行动,否则终止专利授权。

(3)许可证明确不提供对“贡献者”的商品名称、商标、服务标志等的商标许可,保护“贡献者”的切身利益。

(4)许可证经技术专家和法律专家共同修订,在明确合同双方行为约束的前提下尽可能地精简条款、优化表述,降低产生法律纠纷的风险。

  • MulanPSL v2对MulanPSL v1的改进:

(1)增加“语言”条款,声明了“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本任何冲突不一致,以中文版为准。

(2)为适应一些国家对担保免责条款的显著性要求,MulanPSL v2 在英文版中采用大写突显担保免责条款。

(3)为了减少英文表述的产生的歧义问题和语言习惯问题,MulanPSL v2 修订了“软件”(software)和“关联实体”(Affiliates)的定义,以及“授予专利许可”(Grant of Patent License)条款的相关表述。

(正文完)

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

转载与投稿

文章转载需注明:Flowlet

欢迎云计算、SDN、NFV、互联网IT等方向的大牛投稿。

后台回复【加群】,加入高手如云群,探讨技术。

| 温馨提示 |

欢迎分享、收藏、点赞、转发。

0 人点赞