第一章是开源的基本概念。
人们经常使用“自由和开源软件”的统一概念:FLOSS,但是开源和自由软件从两个角度看同一个东西。开源侧重于技术层面,自由软件侧重于许可权。当人们开发软件时,他们希望使用、移植或剪辑现有的开源和自由软件资源。这是允许的,但有一个限制,即人们不能违反开源和自由软件许可的规定,中断或破坏应用、移植或剪辑的开源和自由软件自由传播的特性。也就是说,人们不能侵犯开源和自由软件的知识产权。

今天,开源的发展比自由软件更接地气,更有活力,更受欢迎。
1.1开源的定义和特征
1.1.1开源的定义
开源一词是由Chris Peterson在1998年2月3日提出的,“开源”的概念来自于当时著名黑客社区Debian的总裁Bruce Perens起草的“Debian自由软件指南”。
1998年2月下旬,Eric Raymond和Bruce Perens共同创立了开放源码倡议。OSI的首要任务之一是起草一个开放源码定义,并使用它开始创建一个由OSI批准的许可证列表。
确立“开源”定义的决定性时间是1998年4月7日在美国加州帕洛阿尔托召开的免费软件高层会议,会议通过了传播开源的必要性。会议由蒂姆·奥莱利、布莱恩·贝伦多夫、吉多·范·罗苏姆和拉里·奥古斯汀主持。查看所有许可证的链接。
1.4.3国外主流开源许可证解读
GNU通用公共许可证
GPL通用公共许可证是许可证家族的通称。这是一个广泛使用的自由软件许可协议,它为用户提供了复制、分发和修改的充分权利:
.可以自由复制;
.可以自由分发,提供给他人下载;
可以用于盈利,在分发软件的过程中收取费用;
.可以自由修改。
目前GPL有两个版本:GPL v2和GPL v3。这组许可证的共同特点是它们的“传染性”:任何基于GPL代码编写的软件都必须成为开源软件。换句话说,使用任何GPL代码的软件,无论GPL代码占多大比例,都必须公开完整的源代码,并允许他人修改和发布。
GPL v2许可证存在一些漏洞。例如,它不能阻止一个软硬件结合的系统通过对硬件施加限制来间接组织用户在硬件上运行软件的修改版本。不阻止用户在该硬件上运行软件的修改版本;没有关于专利的协议,这导致了微软-Novell专利协议的现象,它试图利用专利申请作为武器来对抗自由软件社区。
为了解决这些问题,2007年发布了GPL v3。除了以上漏洞,GPL v3的兼容性更强。自由软件基金会已经明确表示GPL v3与Apache2.0许可证兼容。
首席软件律师Eben Moglen作为首席创作者,主张将GPL v2升级到GPL v3。唯一反对这个升级活动的是Linux创始人Linus Torvalds。经过开源社区的激烈争论,最终妥协:一些开源组织和企业实现GPL v3的升级版本(如Apache、Novell等。),而其他的则继续实现GPL v3(比如Linux)。
目前,使用GPL许可证的重要项目包括Linux内核和MySQL等。,但新项目一般选择更宽松的许可证。
公共许可证
LGPL被称为GNU通用公共协议,它比GPL保留更少的产品权利。适用于非开源产品的开源类库或框架,可以使用其他开源协议代替LGPL。

LGPL的特点是这个软件库的链接可能不适用于LGPL或GPL,换句话说,开源代码可能不公平。LGPL的这一特性消除了GPL软件商业化的最大障碍。但是,基于这个库的修改的软件仍然需要遵循GPL许可。
Mozilla公共许可证
MPL允许其许可证下的源代码与其他授权文件混合,包括私有许可证。MPL授权下的代码文件必须保持MPL授权和开源,即衍生项目中允许私有模块存在,保证核心文件的开源。MPL许可的软件不受专利限制,可以自由使用、修改和再分发。带有专利代码的版本仍然可以使用、转让甚至出售。
BSD许可证系列
BSD许可证是由UC Berkeley发起和维护的,有很多版本。目前常用的版本有原版BSD-4、BSD-3和简化版BSD-2。BSD是一个松散的许可证,接近MIT许可证但更松散,甚至更接近通用域。在简化的BSD-2许可下,保留版权声明、许可内容和免责声明就足够了;只要满足许可证设定的条件,就可以自由修改和发布代码。
在BSD-2许可证的基础上;BSD-3许可证增加了禁止背书条款。BSD许可证进一步增加了广告条款。
麻省理工学院许可证
MIT license的名称来源于MIT麻省理工学院,又称“X许可协议”或“X11许可协议”。
据统计,2015年GitHub上高达45%的项目使用了MIT授权。近年来,麻省理工学院许可证的份额有所下降。2020年,它的第一个市场份额被Apache2.0取代,但它仍然是最受开发者欢迎的许可证之一。
MIT的特点是一个非常简单的条款,是开源协议中最宽松的一条:“被许可方有权使用、复制、修改、合并、出版、分发、分许可和/或销售软件和软件副本,并授予供应商同样的权利”,并要求被许可方保持同样的声明。
apache许可证
Apache许可证是一种“松散”的许可证。目前常用的版本是2.0,2020年将成为使用最多的许可证。“松散”是指不能保证所用软件的衍生版本仍然以自由软件的形式存在,即“在哪里使用就可以在哪里使用”。
具体来说,Apache2.0许可证要求保留版本和许可证声明,但允许在不同条款下发布许可作品、修改作品和更大的作品,并且不包含源代码,除非未修改的部分仍需要保留Apache许可证。除了未使用用户提供的版权许可,还有专利许可。对于那些涉及专利内容的开发者来说,这个协议是最合适的。
由于上述有利条件,Apache2.0已经成为相当一部分热门开源项目的许可证,其中最著名的例子就是Kubernetes。
不同开源许可的许可、条件和限制的比较见链接。主要开源许可证的比较总结见表1。
表1 常见开源许可证的对比汇总可以看出,除了允许商业使用、分发和修改的共同特征之外,开源许可证还有两个共同点。第一,开发商不承担担保责任。开源代码通常是免费提供的,因此开发者不应该为他人使用该软件造成的损失承担责任。第二,要求保留版权标志。开源软件不放弃版权。相反,开源许可的强制效力来源于开源软件作者的著作权。
因此,许可证通常要求以适当的形式保留版权标记。
1.4.4木兰开源许可的解释
木兰许可由中国电子标准化研究所开发,发布的版本包括木兰松散许可、木兰公共许可和木兰-木兰开放数据许可协议。
木兰松许可

MulanPSL v2于2020年通过OSI认证,是全球首个由中国主导的国际中英双语许可。由于Apache2.0许可证兼容性好,鼓励专利和版权最大限度开放,2021年发布了日文版。截至2020年底,已有超过10000个国内独立开源项目支持MulanPSL v2,得到Linux Foundation、Apache Software Foundation、华为、阿里巴巴、开源中国、CSDN等开源组织、公司和代码托管平台的支持和应用,超过17000个代码仓库应用。
在重新宽松版木兰公共许可证的基础上,增加其传染性,并对开源软件的分发提出限制性要求。花木兰公版和花木兰散版有很大的区别,都是基于第二版,区别在“发行限制”上。花木兰公共许可像GPL一样具有传染性,要求接受者开放源代码。但在木兰松许可的“分发限制”中,只要求保留代码中的许可声明,还不如要求再分发的许可设置,不具有“传染性”。木兰公共许可和国外主流许可的异同见表2。
花木兰宽松许可和花木兰公共许可的共同特点是:用英文和中文表述,具有同等法律效力;符合柏的间接原则,通俗易懂;明确授予版权和专利权,不受商标权限制。不同的是,前者对现有的其他许可友好兼容,后者对开源软件的分发条件有限制性要求,对云计算、SaaS等新兴技术的分发也有条件限制。
表3 木兰公共许可证与国外主流许可证对1.4.5开源许可证的选择逻辑
在选择开源许可证时,我们可以从三层阶梯上的五个问题入手:别人修改代码后源代码能否关闭;新代码是否采用相同的许可证;是否需要修改源代码,并提供说明文件;版权声明是否必须放在每个修改的文档上;衍生软件的广告能否以你的名义推广。
图3 开源许可证选用逻辑

