diff --git "a/\343\200\2122022\344\270\255\345\233\275\345\274\200\346\272\220\345\217\221\345\261\225\350\223\235\347\232\256\344\271\246\343\200\213V0.8\347\211\210/\347\254\2541\347\253\240 \345\274\200\346\272\220\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265.md" "b/\343\200\2122022\344\270\255\345\233\275\345\274\200\346\272\220\345\217\221\345\261\225\350\223\235\347\232\256\344\271\246\343\200\213V0.8\347\211\210/\347\254\2541\347\253\240 \345\274\200\346\272\220\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265.md" index 4d8ad02f96d622339122873676b9b401be2db041..ed7f20b7b2624bebe93f5989b25808ef7826874f 100644 --- "a/\343\200\2122022\344\270\255\345\233\275\345\274\200\346\272\220\345\217\221\345\261\225\350\223\235\347\232\256\344\271\246\343\200\213V0.8\347\211\210/\347\254\2541\347\253\240 \345\274\200\346\272\220\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265.md" +++ "b/\343\200\2122022\344\270\255\345\233\275\345\274\200\346\272\220\345\217\221\345\261\225\350\223\235\347\232\256\344\271\246\343\200\213V0.8\347\211\210/\347\254\2541\347\253\240 \345\274\200\346\272\220\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265.md" @@ -1,25 +1,24 @@ # 第一章 开源的基本概念 +人们常常使用“自由开源软件”这个统一概念:FLOSS(Free/Libre Open Source Software),但开源与自由软件是从两个角度看待同一事物,开源侧重于技术层面,自由软件侧重于被许可的权利。人们在开发软件时,欲利用、移植或剪裁现有的开源、自由软件资源,这是允许的,但有一个制约条件,即人们不能违背开源、自由软件许可证的规定,中断或破坏被应用、移植或剪裁的开源、自由软件自由传播的特征(在自由传播时,自由软件许可证比开源许可证的规定更为严酷),也就是说,人们不可侵犯开源、自由软件的知识产权。 + +![](https://img-blog.csdnimg.cn/7461b6c621c04ba198dcbe10c56e4bec.png)
*图1 开源许可证与自由软件许可证的区别* + +今天,开源的发展比自由软件的发展更接地气、更蓬勃,普及度也更高。 + ## 1.1 开源的定义和特征 ### 1.1.1 开源的定义 -开源(Open Source)—词于1998年2月3日由Chris Peterson提出,“Open Source”的概念出自当时著名的黑客(Hacker)社区Debian的社长Bruce Perens起草的“ Debian Free Software Guidelines”(DFSG)。 +开源(Open Source)—词于1998年2月3日由Chris Peterson提出,“Open Source”的概念出自当时著名的黑客(Hacker)社区Debian的社长Bruce Perens起草的“ Debian Free Software Guidelines”(DFSG)。 1998年2月下旬,Eric Raymond和Bruce Perens共同创立"Open Source Initiative"(OSI)。OSI承担的首要任务之一是起草开源定义(OSD),并使用它来开始创建OSI批准的许可证列表。 -对确立“Open Source”定义有决定意义的是在1998年4月7日在美国加州Palo Alto由18位“自由软件运动领袖”召开的Freeware高层会议,通过了传播开源的必要性。会议由Tim O'Reilly主持,Brain Behlendorf(Apache创始人)、Linus Torvalds(Linux创始人)、Guido van Rossum(Python创始人)、Eric Raymond(著名记者、OSI首届主席)等参加。 +对确立“Open Source”定义有决定意义的是在于1998年4月7日在美国加州Palo Alto由18位“自由软件运动领袖”召开的FreeWare高层会议,通过了传播开源的必要性。会议由Tim O’Reilly主持,Brian Behlendorf(Apache创始人之一)、Guido van Rossum(Python创始人)、Larry Augustin(Source Forge创始人)、Eric Raymond(著名记者、OSI首届主席)、Michael Tiemann(后来任OSI主席、Red Hat CTO)、Jon “maddog” Hall(后来任LPI主席)等参加,Linus Torvalds(Linux创始人)在当日未及参加18人会议,他在次日闻讯后支持这次会议,并给予Open Source非常重要的版权许可说明。 随着时代的变迁,开源的定义内涵也在不断演进。目前的共识是:开源是促进信息技术创新的重要途径,是将源代码、设计文档或其他创作内容开放共享的一种技术开发和发行模式。技术领域的开源包含源代码+软硬件设计文档源代码、源数据等技术和资源的开放共享,源代码仍然是开源的主要内容。 在开源模式下,通过许可证的方式,使用者在遵守许可限制的条件下,可自由获取源代码等,并可使用、复制、修改和再发布。 -本质上,开源模式是一种依托互联网平台,大规模群体智慧通过共同参与和协作,不断累积智慧,实现持续创新的方法。该方法中,项目的核心开发人员与大规模的外围群体紧密合作,他们通过互联网来共享资源、开展协同开发、管理代码等,由此使得项目开发的效率、应对需求变化的能力大幅提升。 - -人们常常使用“自由开源软件”这个统一概念:FLOSS(Free/Libre Open Source Software),但开源与自由软件(见图1)是从两个角度看待同一事物,开源侧重于技术层面,自由软件侧重于被许可的权利。人们在开发软件时,欲利用、移植或剪裁现有的开源、自由软件资源,这是允许的,但有一个制约条件,即人们不能违背开源、自由软件许可证的规定,中断或破坏被应用、移植或剪裁的开源、自由软件自由传播的特征(在自由传播时,自由软件许可证比开源许可证的规定更为严酷),也就是说,人们不可侵犯开源、自由软件的知识产权。 - -![](https://img-blog.csdnimg.cn/3b5b60cdc1f948c2ab1afc5b8da2d350.png) -
*图1 开源许可证与自由软件许可证的区别* - -今天,开源的发展比自由软件的发展更接地气、更蓬勃,普及度也更高。  +本质上,开源模式是一种依托互联网平台,大规模群体智慧通过共同参与和协作而不断累积,实现持续创新的方法。该方法中,项目的核心开发人员与大规模的外围群体紧密合作,他们通过互联网来共享资源、开展协同开发、管理代码等,由此使得项目开发的效率、应对需求变化的能力大幅提升。 ### 1.1.2开源的特征 @@ -33,11 +32,11 @@ * 绿色指支持绿色可再生能源、绿色环境和零边际成本效应; * 民主化指在新兴协同共享中,创新和创造力的民主化正在孵化一种新的激励机制,这种机制很少基于经济回报,而更多地基于推动人类的经济生活方式,缩小收入差距,实现全球民主化。为避免原创技术的流失,不能单纯限制孵化阶段开源代码的自由传播,可通过开源的商业模式、安全模块、运维举措、生态系统所构筑的屏蔽层来解决。 -作为一种创新协作模式,开源已经不仅仅是开放源代码的软件技术开发,还包括更为广泛的开放技术领域及协同创新的理念与机制,总体包括开放科学、开源软件、开源硬件、开源技术、开源文化、开源经济等。“互联网+基于知识社会的创新 2.0”是开源创新的基础理论(2005年由中国开源软件推进联盟提出,后来获得全球开源界领袖们的确认),与工业 4.0、工业互联网机制相通,与元宇宙(Metaverse)概念相似。利用开源渠道,将高阶社会(知识社会,虚拟化的实验空间)中的技术、管理、资源等要素,作用于低阶社会(现实的工业社会,物理空间)中的业态(生产的、技术的、经济的、社会的),促使其产生0→1的爆发性重构。 +作为一种创新协作模式,开源已经不仅仅是开放源代码的软件技术开发,还包括更为广泛的开放技术领域及协同创新的理念与机制,总体包括开放科学、开源软件、开源硬件、开源技术、开源文化、开源经济等。“互联网+基于知识社会的创新2.0”是开源创新的基础理论(2005年由中国开源软件推进联盟提出,后来获得全球开源界领袖们的确认),与工业4.0、工业互联网机制相通,与元宇宙(Metaverse)概念相似。利用开源渠道,将高阶社会(知识社会,虚拟化的实验空间)中的技术、管理、资源等要素,作用于低阶社会(现实的工业社会,物理空间)中的业态(生产的、技术的、经济的、社会的),促使其产生0→1的爆发性重构。 ### 1.1.3 开源的范畴 -时至今天,开源已成为开源软件、开源硬件、开源生态、开源技术、开源社区、开源经济、开源商业模式、开源理念、开源文化、开源教育、开源许可证、开源基金会、开源孵化器、开源数字化治理体系、开源标准等的总称。 +时至今日,开源已成为开源软件、开源硬件、开源生态、开源技术、开源社区、开源经济、开源商业模式、开源理念、开源文化、开源教育、开源许可证、开源基金会、开源孵化器、开源数字化治理体系、开源标准等的总称。 ## 1.2 世界开源发展简史 @@ -47,9 +46,9 @@ * 1969年之前,Bell实验室和MIT、GE合作启动开发一个多任务多用户的操作系统Multics,为UNICS操作系统诞生创造条件。 * 1969年,UNIX原型——UNICS(UNiplexed Information and Computing System)诞生。 -* 1973年,Dennis Ritchie发明C语言,用C语言将UNICS重写并更名为UNIX,UNIX正式诞生。 +* 1973年,Dennis Ritchie用新发明的C语言将UNICS重写并更名为UNIX,UNIX正式诞生。 * 1969-1977年,UNIX相继推出V1-V6版本,向社会开放源代码。 -* 1977年开始进入“后UNIX”时代,UNIX演化为UNIX(闭源,即AT&T-UNIX)和BSD(开源,即BSD-UNIX)。主流的开源BSD操作系统有386BSD、FreeBSD、NetBSD、OpenBSD。 +* 1977年开始进入“后UNIX”时代,UNIX演化为UNIX(闭源,即AT&T-UNIX)和BSD(开源,即BSD-UNIX)。主流的开源BSD操作系统有386BSD、FreeBSD、NetBSD、OpenBSD。 因此,世界开源的历史始自1970年开启的“前UNIX”,至今52年,开源在事实上已经历了半个世纪的发展历程。 @@ -59,22 +58,22 @@ GNU系统是一套向上兼容UNIX的完全自由的操作系统。GNU代表“G * 1983年9月27日,Richard Stallman提出了GNU工程的初始声明,意图找回在早期计算机社区中广泛存在的合作精神,通过除去专属软件所有者设置的障碍而使得合作再次成为可能。 * 1984年1月,Richard Stallman从MIT离职并开始编写GNU软件,同年9月开始GNU Emacs的工作。 -* 1985年,Richard Stallman发表《GNU宣言》,吸收“前UNIX”和BSD的开源成果,开发推出Emacs等编译器等自由软件(Free Software)。同年10月,自由软件基金会(FSF)正式成立。 +* 1985年,Richard Stallman发表《GNU宣言》,吸收“前UNIX”和BSD的开源成果,开发推出Emacs编译器等自由软件(Free Software)。同年10月,自由软件基金会(FSF)正式成立。 -“Free Software”中的“Free”关乎自由,而不是价格,是指可以付费或不付费得到GNU软件。一旦得到了软件,便拥有了使用它的四项特定自由。可以自由按照自己的意愿运行该软件;可以自由复制软件并将其送给朋友和同事;可以自由通过对源代码的完全控制而改进程序;可以自由发布改进的版本从而帮助社区建设。 +“Free Software”中的“Free”关乎自由,而不是价格,是指可以付费或不付费得到GNU软件。一旦得到了软件,便拥有了使用它的四项特定自由:可以自由按照自己的意愿运行该软件;可以自由复制软件并将其送给朋友和同事;可以自由通过对源代码的完全控制而改进程序;可以自由发布改进的版本从而帮助社区建设。 ### 1.2.3 Linux简史 -Linux的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。 +Linux的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX操作系统、Minix操作系统、GNU计划、POSIX标准和Internet网络。 * 1977年,UNIX的重要分支——BSD在UC Berkeley诞生。开发者是SUN公司创办者Bill Joy。 * 1984年,Andrew S. Tanenbaum为能续进行学术教育研究,重新开发了一个基于“前UNIX”和BSD4.3的开放源代码操作系统——Minix,这是Linux最开始的前身。 * 1985年,GNU开源计划和FSF基金会成立。在这个时间前后,涌现了很多重要的软件和协议,如GPL协议、GCC C编译器、Emacs编辑器、Glibc、bash shell等,为Linux后来的发展创造了肥沃的土壤。 * 1991年,芬兰本科生Linus Torvalds在Minix和GNU成果的基础上,开发并以GNU GPL许可方式发布了开放源代码操作系统Linux v0.01。 -* 1992年1月5日,Linux v0.12 release 版本的内核重新以GNU GPL的协议发布。原来的许可证是禁止任何商业用途的。通过这次协议变更,发布和出售Linux成为可能。5月21日 , Peter MacDonald发布第一个独立的Linux安装包SLS。 +* 1992年1月5日,Linux v0.12 release版本的内核重新以GNU GPL的协议发布。原来的许可证是禁止任何商业用途的。通过这次协议变更,发布和出售Linux成为可能。5月21日 , Peter MacDonald发布第一个独立的Linux安装包SLS。 * 1993年6月17日,Slackware Linux由Patrick Volkerding发布,这是第一个取得广泛成功的Linux发行版。8月16日 ,Ian Murdock(Debian中的“ian”)发布了第一个Debian Linux发行版。Debian是最有影响力的Linux发行版之一,是MEPIS、Mint、Ubuntu等的鼻祖。8月19日 ,Matt Welsh写的《Linux Installation and Getting Started》第1版出版,这是第一本关于Linux的书籍。 * 1994年3月14日 ,Linux内核V1.0发布,它支持基于i386单处理器的计算机系统。8月15日 , William R. Della Croce, Jr.申请了“Linux”商标,9月进行了注册。11月3日,Red Hat共同创始人Marc Ewing宣布可以以49.95美元的零售价格获得Red Hat Software Linux的CD-ROM和30天的安装支持。 -* 1996年5月9日 ,吉祥物Tux诞生(见图2)。6月9日,Linux内核V2.0发布,这是第一个在单系统中支持多处理器的稳定内核版本。Linux从此成为很多公司的重要选择。10月14日 ,Mattias Ettrich发起KDE项目,此前UNIX和Linux都没有统一的桌面系统,编写桌面软件非常复杂。 +* 1996年5月9日 ,吉祥物Tux诞生。6月9日,Linux内核V2.0发布,这是第一个在单系统中支持多处理器的稳定内核版本。Linux从此成为很多公司的重要选择。10月14日 ,Mattias Ettrich发起KDE项目,此前UNIX和Linux都没有统一的桌面系统,编写桌面软件非常复杂。 ![](https://img-blog.csdnimg.cn/addff322f8754f3c9324942d5496dc22.png)
*Linux的吉祥物Tux* @@ -97,7 +96,7 @@ Linux的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX 1991年,中国与AT&T Bell Laboratories USL/USG合作,引进UNIX SVR 4.2版本源代码(全球唯一,但属于“后UNIX”闭源时期),并发布了中文版本,合作组建了中国UNIX公司;中方同时也引进“前UNIX”开放的源代码。 -1999年,中科红旗、中软网络、冲浪平台在引进Red Hat公司Linux发行版的基础上,分别推出最早的Linux中文版本。 +1999年,中科红旗、中软网络、冲浪平台在引进红帽公司Linux发行版的基础上,分别推出最早的Linux中文版本。 因此,中国开源的发展历史具有两个里程碑节点:1991年、1999年,至今31年、23年,可以分为启蒙、萌芽、发展、加速四个时代。 @@ -123,13 +122,15 @@ Linux的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX 1999年底,时任中国科学院软件所副所长的孙玉芳老师牵头筹建北京中科红旗软件有限公司和北京红旗中文贰仟有限公司,分别基于Linux和OpenOffice进行中文版红旗Linux和RedOffice的研制。孙玉芳老师英年早逝,一生发表操作系统相关论文180余篇,编著和译著操作系统原理相关著作140余册,他指导过的诸多硕士/博士生现已成为开源产业的中坚力量。 -1999年,中国开发者社区CSDN在蒋涛的努力下成立了,并于2000年创办《程序员》杂志(后于2021年升级为《新程序员》)。 +1999年,中国开发者社区CSDN在蒋涛的努力下成立,并于2000年创办《程序员》杂志(后于2021年升级为《新程序员》)。 2000年2月,在科技部国家高技术研究发展计划(863计划)的支持下,由一批国内高校、研究院所、IT企业联合发起成立了共创软件联盟。共创软件联盟在开源许可证规则下对863计划的软件成果进行开源培育和孵化,并提出以开放源代码的协同创新模式作为中国基础软件发展的主要路径,对我国开源产业发展起到了重要的推动作用。 -2002年,黄建忠以CJacker的ID在中国Linux公社发布了基于Redhat8再发布的Magic Linux版本——这是国内第一个Linux社区发行版。在这个阶段,部分中国开发者开始尝试向国际上游社区贡献代码。但同时,国内Linux企业对开源技术采用拿来主义,忽视开源社区、商业模式和开源知识产权等方面的投入和积累,导致在国际社区中出现了许多针对中国Linux发行商只是开源使用者的评价,直到2008年,这种印象才得以扭转。 +2002年,黄建忠以CJacker的ID在中国Linux公社发布了基于Redhat8再发布的Magic Linux版本——这是国内第一个Linux社区发行版。 -2004年,中国开源软件推进联盟成立,陆首群教授被推举为联盟主席,在陆首群主席的大力推进下,为推动开源在中国的发展而不懈努力,也启动了中国与日本、韩国以至全球在发展开源的方面国际合作。联盟的国际智囊团聘请了几十位全球顶级开源专家以多种形式参与和推进中国开源建设,如此规模的智囊团在全球首屈一指,是开源界公认的顶级智库。可以说,联盟的成立和陆主席的领导加速了中国开源软件发展的速度,为碎片化的国内开源产业建立了统一的根据地,为国际开源生态和中国开源生态建立了纽带。 +在这个阶段,部分中国开发者开始尝试向国际上游社区贡献代码。但同时,国内Linux企业对开源技术采用拿来主义,忽视开源社区、商业模式和开源知识产权等方面的投入和积累,导致在国际社区中出现了许多针对中国Linux发行商只是开源使用者的评价,直到2008年,这种印象才得以扭转。 + +2004年,中国开源软件推进联盟成立,陆首群教授被推举为联盟主席,在陆主席的大力推进下,为推动开源在中国的发展而不懈努力,也启动了中国与日本、韩国以至全球在发展开源方面的国际合作。联盟的国际智囊团聘请了几十位全球顶级开源专家以多种形式参与和推进中国开源建设,如此规模的智囊团在全球首屈一指,是开源界公认的顶级智库。可以说,联盟的成立和陆主席的领导加速了中国开源软件发展的速度,为碎片化的国内开源产业建立了统一的根据地,为国际开源生态和中国开源生态建立了纽带。 2008年,以Kernel、Apache、GNOME、OpenOffice为代表的国际知名开源社区纷纷选择在北京召开全球技术峰会,作为他们进入亚洲的第一步(之前从未在亚洲国家召开顶级技术峰会)。这是对中国开发者在社区提交贡献的肯定。因此,我们认为2008年成了中国开源发展重要的分水岭。 @@ -139,21 +140,21 @@ Linux的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX 在2009年之后,伴随着云计算、物联网、大数据、移动互联网的快速发展,中国一批有实力有抱负的知名科技IT企业、互联网公司开始选择拥抱开源。Linux基金会执行董事Jim Zemlin曾表示:“这些中国科技公司无论从开源技术上,还是产业、经济发展上,已经走进世界领导者行列。” -在2009-2018年,中国开源呈现了百花齐放的繁荣局面,从开源开发者数量的激增,到开源社区的多样化(不再局限Linux等操作系统领域),再到知名科技企业自内而外的拥抱开源(内部实行开源治理,逐渐对外捐献开源项目,并向上游技术社区提交贡献)。2012年成立的中国开源云联盟(COSCL)和2016年成立的云计算开源产业联盟(OSCAR)就是典型的开源与云计算技术融合的产业联盟。这一阶段明显的特点在于不论是初创企业还是千百亿体量的科技巨头纷纷用开源技术来构建公司自身的技术堆栈,在技术上全面拥抱开源,并越来越重视对上游开源社区和开源基金会的投入与贡献。 +在2009-2018年这十年中,中国开源呈现了百花齐放的繁荣局面,从开源开发者数量的激增,到开源社区的多样化(不再局限Linux等操作系统领域),再到知名科技企业自内而外的拥抱开源(内部实行开源治理,逐渐对外捐献开源项目,并向上游技术社区提交贡献)。2012年成立的中国开源云联盟(COSCL)和2016年成立的云计算开源产业联盟(OSCAR)就是典型的开源与云计算技术融合的产业联盟。这一阶段明显的特点在于不论是初创企业还是千百亿体量的科技巨头纷纷用开源技术来构建公司自身的技术栈,在技术上全面拥抱开源,并越来越重视对上游开源社区和开源基金会的投入与贡献。 ### 1.3.4 加速时代 -2019年至今,中国开源进入了一个新的时代一一加速阶段。 +2019年至今,中国开源进入了一个新的时代一一加速时代。 根据Linux基金会有关Kernel.org社区贡献的统计,来自中国开发者的贡献已居全世界之首(Kernel 4.14至今)。中国开源发展进入深水区,开源生态的完整性、开源社区的成熟性、开源商业模式的多样性和复合性都在发生巨大变化。 由木兰开源社区牵头、多家单位联合参与起草的“中国第一个开源协议——木兰许可证”已经正式发布,前不久还被OSGJ翻译为日文版使用。由华为、百度、腾讯、360、浪潮等发起成立的开放原子开源基金会填补了中国没有开源基金会的空白,尽管它还不能与Linux基金会、Apache软件基金会相提并论,但在开源领域备受瞩目。 -在现阶段,部分领先的中国企业不满足于拥抱开源,他们正在很多创新领域跃跃欲试,希望通过开模式来对创新技术进行引领,如商汤的OpenMMLab计算机视觉开放算法、矩阵元的Rosetta隐私Al开源框架、阿里的RocketMQ海量信息中间件、京东的JD Chain开源区块链、百度的PaddlePaddle深度学习平台和Apollo自动驾驶平台、海尔卡奥斯COSMOPlat工业互联网平台的工业APP开发框架开源项目等。同时,在现阶段出现了一些原生的开源明星项目,如Apache SkyWalking、Apache Echarts、Apache loTDB、TiDB,其中一些优秀的开源项目如TiDB备受资本市场的推崇,创造了全球数据库融资历史新的里程碑。 +在现阶段,部分领先的中国企业不满足于拥抱开源,他们正在很多创新领域跃跃欲试,希望通过开源模式来对创新技术进行引领,如商汤的OpenMMLab计算机视觉开放算法、矩阵元的Rosetta隐私Al开源框架、阿里的RocketMQ海量信息中间件、京东的JD Chain开源区块链、百度的PaddlePaddle深度学习平台和Apollo自动驾驶平台、海尔卡奥斯COSMOPlat工业互联网平台的工业APP开发框架开源项目等。同时,在现阶段出现了一些原生的开源明星项目,如Apache SkyWalking、Apache Echarts、Apache loTDB、TiDB,其中一些优秀的开源项目如TiDB备受资本市场的推崇,创造了全球数据库融资历史新的里程碑。 ## 1.4 开源软件与知识产权 -至此,我们对开源的定义和发展史有了基本的认识,在继续深入了解之前,有必要关注开源软件与知识产权的知识。 +至此,我们对开源的定义和发展史有了基本的认识,在继续深入了解之前,有必要关注开源软件与知识产权的关系。 ### 1.4.1 软件知识产权的主要内涵 @@ -164,9 +165,11 @@ Linux的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX * 专利权包括软件的技术设计,如程序设计方案、处理问题的方法、各项有关技术信息等方面的权利。 * 商标权则是指软件的名称标识方面的权利。 -软件需要有硬件平台的支撑才可以运行,而在硬件平台上运行的软件基本上是目标码(二进制格式),从而造成软件源码和二进制目标码的分离和割裂,而软件作为通用商品进行销售或分发时主要提供的只是二进制文件,这也成为主流的软件销售和分发方式,并主要通过随软件一起发布的最终用户许可协议(End User License Agreement,EULA)对软件的使用、修改和分享及其他相关事宜作出规定。 +软件需要有硬件平台的支撑才可以运行,而在硬件平台上运行的软件基本上是目标码(二进制格式),从而造成软件源码与二进制目标码的分离和割裂,而软件作为通用商品进行销售或分发时主要提供的只是二进制文件,这也成为主流的软件销售和分发方式,并主要通过随软件一起发布的最终用户许可协议(End User License Agreement,EULA)对软件的使用、修改和分享及其他相关事宜作出规定。 + +EULA指的是一家公司的软件与软件的使用者所达成的协议,是软件应用程序作者或者发布者与应用程序使用者之间的合法合同。 -EULA指的是一家公司的软件与软件的使用者所达成的协议,是软件应用程序作者或者发布者与应用程序使用者之间的合法合同。EULA一般主要规定用户不可以盗版软件,并没有对用户明确涉及对应软件源代码的处置问题——除非特定情况,销售的二进制形式的软件并不提供对应软件源代码;即使偶有提供,但对用户基于该源代码的复制、修改和二次分发等作了严格限制或者禁止。 +EULA一般主要规定用户不可以盗版软件,并没有对用户明确涉及对应软件源代码的处置问题——除非特定情况,销售的二进制形式的软件并不提供对应软件源代码;即使偶有提供,但对用户基于该源代码的复制、修改和二次分发等作了严格限制或者禁止。 针对上述对软件源代码的处置方式,出现了一种开放、协同、共享的软件发展模式——通过开源软件许可证对软件源代码的复制、修改、再分发等权益,对商标、专利、著作权等内容进行进一步规范,这也是对软件知识产权发展的一个重要补充。 @@ -193,9 +196,10 @@ GPL通用公共许可证是一个许可证家族的泛称,是一个被广泛 GPL当前主要有GPL v2和GPL v3两个版本。这组许可证的共同特征在于其“传染性”:任何基于GPL代码编写的软件都必须成为开源软件。换言之,使用了任何GPL代码的软件,无论GPL代码占比多少,都必须将完整的源代码公开,并允许他人修改、发布。 -GPLv2许可证存在一些漏洞,例如它不能阻止一个软硬件结合的系统中,通过对硬件部分施加限制,间接阻止用户在该硬件上运行软件的修改版本;没有包括关于专利的约定,导致实践中出现Microsoft-Novell专利协议这类试图将专利申请用作于对付自由软件社群的武器的现象。 +GPL v2许可证存在一些漏洞,例如它不能阻止一个软硬件结合的系统中,通过对硬件部分施加限制,间接阻止用户在该硬件上运行软件的修改版本;没有包括关于专利的约定,导致实践中出现Microsoft-Novell专利协议这类试图将专利申请用作于对付自由软件社群的武器的现象。 为解决这些问题,GPL v3于2007年发布。除填补上述漏洞,GPL v3兼容性更好。自由软件基金会明确表示GPL v3与Apache 2.0 许可证兼容。 +自由软件首席律师Eben Moglen作为主创者,主张将GPL v2升级为GPL v3。唯一反对这项升级活动的是Linux(Kernel)创始人Linus Torvalds。在经历开源界激烈辩论后最终妥协:一部分开源组织/企业执行升级版GPL v3(如Apache、Novell等),另一部分开源组织/企业继续执行GPL v2(如Linux等)。 目前,使用GPL许可证的重要项目包括Linux内核和MySQL等,但新兴项目一般会选用更宽松的许可证。 @@ -229,13 +233,13 @@ Apache许可证是一种“宽松”(Permissive)的许可证,目前常用 具体而言,Apache 2.0许可要求保留版权和许可声明,但允许许可作品、修改和更大的作品在不同的条款和没有源代码的情况下分发,只是未修改的部分仍然需要保留Apache许可证。除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合。 -由于上述利好条件,Apache 2.0成为了相当多流行的开源项目的许可证,最著名的例子之一就是Kubernetes。 +由于上述利好条件,Apache 2.0成为了相当多流行开源项目的许可证,最著名的例子之一就是Kubernetes。 -不同开源许可证就许可、条件和限制的比较参见[链接](https://choosealicense.com/appendix/)。常见开源许可证的对比汇总见表1。 +不同开源许可证就许可、条件和限制的比较参见https://choosealicense.com/appendix/。主要常见开源许可证的对比汇总见下表。 -![](https://img-blog.csdnimg.cn/2f3dbcc832b244199a2ba00ba9b99ed9.png)
*表1 常见开源许可证的对比汇总* +![](https://img-blog.csdnimg.cn/fb717a6cc7ef48f986f81c079d7836a0.png)
*表1 常见开源许可证的对比汇总* -可以看出,除了允许商业性使用、分发和修改外等常见特征外,开源许可证还有两个共同点。一是开发者不承担保证责任(瑕疵担保责任)。开源代码通常都是免费提供的,因此开发者不应为他人使用该软件造成的损失而承担责任。二是要求保留著作权标记。开源软件并不意味着放弃著作权。相反,开源许可证的强制效力来源,恰恰来自于作者对开源软件的著作权。 +可以看出,除了允许商业性使用、分发和修改等常见特征外,开源许可证还有两个共同点。一是开发者不承担保证责任(瑕疵担保责任)。开源代码通常都是免费提供的,因此开发者不应为他人使用该软件造成的损失而承担责任。二是要求保留著作权标记。开源软件并不意味着放弃著作权。相反,开源许可证的强制效力来源,恰恰来自于作者对开源软件的著作权。 因此,许可证一般都要求以适当的形式保留著作权标记(包括许可证正文以及作者署名)。 @@ -245,20 +249,20 @@ Apache许可证是一种“宽松”(Permissive)的许可证,目前常用 **木兰宽松许可证(MulanPSL)** -MulanPSL v2于2020年通过OSI认证,是全球首个由我国主导的国际通用中英文双语许可证,与Apache 2.0许可证有良好的兼容性,最大限度鼓励专利和版权开放,并于2021年发布日文版。截止2020年底,已有超过1万余项国内自主开源项目支持MulanPSL 2.0,得到Linux基金会、Apache基金会、华为、阿里、开源中国、CSDN等开源组织、公司和代码托管平台的支持应用,1万7千余代码仓应用(Gitee 11000+,Github 7000+)。其中典型应用有OpenEuler、OpenGauss、方舟编译器、XiOUS等。木兰宽松许可证与国外主流许可证的异同见图3。 +MulanPSL v2于2020年通过OSI认证,是全球首个由我国主导的国际通用中英文双语许可证,与Apache 2.0许可证有良好的兼容性,最大限度鼓励专利和版权开放,并于2021年发布日文版。截止2020年底,已有超过1万余项国内自主开源项目支持MulanPSL v2,得到Linux基金会、Apache基金会、华为、阿里、开源中国、CSDN等开源组织、公司和代码托管平台的支持应用,1万7千余代码仓应用(Gitee 11000+,GitHub 7000+)。其中典型应用有OpenEuler、OpenGauss、方舟编译器等。 -![](https://img-blog.csdnimg.cn/d806392891da4d55ac82a866e467da85.png)
*图3 木兰宽松许可证与国外主流许可证的异同* +![](https://img-blog.csdnimg.cn/e61912da974744d4b176b12a31fd32c4.png)
*表3 木兰公共许可证与国外主流许可证对分发的限制* **木兰公共许可证(MulanPubL)** -木兰公共许可证在宽松版基础上增加了其传染性,对开源软件的分发增加了限制性要求。木兰公共许可证和木兰宽松许可证间存在较大差异,均以第2 版为例,其差别集中在“分发限制”上。木兰公共许可证类似GPL具有传染性,要求接受者必须开放源代码。而木兰宽松许可证的“分发限制”中仅仅要求保留代码中的许可证声明,并未要求再次分发时的许可证设置,不具有“传染”特质。 +木兰公共许可证在宽松版基础上增加了其传染性,对开源软件的分发增加了限制性要求。木兰公共许可证和木兰宽松许可证间存在较大差异,均以第 2 版为例,其差别集中在“分发限制”上。木兰公共许可证类似GPL具有传染性,要求接受者必须开放源代码。而木兰宽松许可证的“分发限制”中仅仅要求保留代码中的许可证声明,并未要求再次分发时的许可证设置,不具有“传染”特质。 -木兰宽松许可证与木兰公共许可证的共同特点是:采用中英文表述,且具有同等法律效力;遵从表述简洁原则,容易理解;明确授予版权和专利权,不授予商标权。而区别在于前者能与现有的其他许可证友好兼容,后者对开源软件的分发条件有限制性要求,对云计算和SaaS等新兴技术的分发也有条件限制。木兰公关许可证与国外主流许可证的异同见图4。 +木兰宽松许可证与木兰公共许可证的共同特点是:采用中英文表述,且具有同等法律效力;遵从表述简洁原则,容易理解;明确授予版权和专利权,不授予商标权。而区别在于前者能与现有的其他许可证友好兼容,后者对开源软件的分发条件有限制性要求,对云计算和SaaS等新兴技术的分发也有条件限制。 -![](https://img-blog.csdnimg.cn/64980ffc1f16487695282334f7631c53.png)
*图4 木兰公共许可证与国外主流许可证对分发的限制* +![](https://img-blog.csdnimg.cn/143b4459f58a429886adf8a0d57cc74d.png)
*图4 木兰公共许可证与国外主流许可证对分发的限制* ### 1.4.5 开源许可证的选用逻辑 -选择开源许可证时,可以从三层阶梯的五个问题入手(见图5):他人修改代码后,是否可以闭源;新增代码是否采用同样许可证;是否需要对源码的修改之处,提供说明文档;每一个修改过的文件,是否都必须放置版权说明;衍生软件的广告是否可以用你的名字促销。 +选择开源许可证时,可以从三层阶梯的五个问题入手:他人修改代码后,是否可以闭源;新增代码是否采用同样许可证;是否需要对源码的修改之处,提供说明文档;每一个修改过的文件,是否都必须放置版权说明;衍生软件的广告是否可以用你的名字促销。 ![](https://img-blog.csdnimg.cn/64f07a711bde45e7ab0f564b1b8792eb.png)
*图5 开源许可证选用逻辑*