2022 中国开源发展蓝皮书——开源的基本概念

核心提示第一章 开源的基本概念人们常常使用“自由开源软件”这个统一概念:FLOSS,但是开源与自由软件是从两个角度看待同一事物,开源侧重于技术层面,自由软件侧重于被许可的权利。人们在开发软件时,欲利用、移植或剪裁现有的开源、自由软件资源,这是允许的

第一章 开源的基本概念

人们常常使用“自由开源软件”这个统一概念:FLOSS,但是开源与自由软件是从两个角度看待同一事物,开源侧重于技术层面,自由软件侧重于被许可的权利。人们在开发软件时,欲利用、移植或剪裁现有的开源、自由软件资源,这是允许的,但有一个制约条件,即人们不能违背开源、自由软件许可证的规定,中断或破坏被应用、移植或剪裁的开源、自由软件自由传播的特征,也就是说,人们不可侵犯开源、自由软件的知识产权。

图1:开源许可证与自由软件许可证的区

今天,开源的发展比自由软件的发展更接地气、更蓬勃,普及度也更高。

1.1 开源的定义和特征

1.1.1开源的定义

开源一词于1998年2月3日由Chris Peterson提出,“Open Source”的概念出自当时著名的黑客社区Debian的社长Bruce Perens起草的“Debian Free Software Guidelines"。

1998年2月下旬,Eric Raymond和Bruce Perens共同创立”Open Source Initiative“。OSI承担的首要任务之一是起草开源定义,并使用它来开始创建OSI批准的许可证列表。

对确立”Open Source"定义有决定意义的时间是1998年4月7日在美国加州Palo Alto由18位“自由软件运动领袖”召开的FreeWare高层会议,通过了传播开源的必要性。会议由Tim O'Reilly主持,Brian Behlendorf,Guido van Rossum、Larry Augustin,全部许可证可参见链接。

1.4.3 国外主流开源许可证解读

GNU通用公共许可证

GPL通用公共许可证是一个许可证家族的泛称,是一个被广泛适用的自由软件许可协议条款,为使用者提供了足够的复制、分发、修改的权利:

. 可自由复制;

. 可自由分发,提供他人下载;

. 可用来盈利,分发软件过程中收费;

. 可自由地修改。

GPL当前主要有GPL v2和GPL v3两个版本。这组许可证地共同特征在于其”传染性“:任何基于GPL代码编写地软件都必须成为开源软件。换言之,使用了任何GPL代码的软件,无论GPL代码占比多少,都必须将完整的源代码公开,并允许他人修改、发布。

GPL v2许可证存在一些漏洞,例如它不能阻止一个软硬件结合的系统种通过对硬件部分施加限制,间接组织用户在该硬件上运行软件的修改版本;没有阻止用户在该硬件上运行软件的修改版本;没有包括关于专利的约定,导致时间种出现Microsoft-Novell专利协议这类试图将专利申请用作于对付自由软件社群的武器的现象。

为解决这些问题,GPL v3于2007年发布。除填补上述漏洞,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

LGPL叫做GNU宽通用公共协议,对产品所保留的权利比GPL少,适用于非开源产品的开源类库或框架,并可以不继承LGPL协议,使用其他的开源协议。

LGPL的特点在于,链接到该软件库的然间可以不适用LGPL或GPL,换言之,可以不公开源代码。LGPL的这一特性消除了在GPL软件商用的最大障碍。尽管如此,基于该库修改而得到的软件仍然需要遵循GPL许可证。

Mozilla Public License

MPL允许在其授权下的源代码与其他授权的文件进行混合,包括私有许可证。在MPL授权下的代码文件必须保持MPL授权,并且保持开源,即允许在派生项目中存在私有模块,同时保证核心文件的开源。使用MPL授权的软件并不受专利的限制,其可以自由使用、修改,并可自由的重新发布。带有专利代码的版本仍然可以使用、转让甚至出售。

BSD许可证系列

BSD许可证是由UC Berkeley首倡和维护的,版本繁多,目前常用版本包括原始的BSD-4、BSD-3以及简化的BSD-2。BSD属于宽松许可证,与MIT许可证接近但更加宽松,甚至跟共有领域更为接近。在最简化的BSD-2许可证下,保留著作权声明、许可证内容及免责声明即可;只要满足许可证设定的条件,就可以自由地修改并发布代码。

BSD-3许可证在BSD-2许可证地基础上增加了禁止背书条款;BSD许可证进一步增加了广告条款。

MIT许可证

MIT许可证之名源自首倡者MIT麻省理工学院,又称”X许可协议“或”X11许可协议“。

据统计,2015年GitHub上高达45%的项目使用MIT许可证。近几年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年底,已有万余项国内自主开源项目支持MulanPSL v2,得到Linux基金会、Apache软件基金会、华为、阿里巴巴、开源中国、CSDN等开源组织、公司和代码托管平台的支持应用,1万7千余代码仓应用

木兰公共许可证再宽松版基础上增加了其传染性,对开源软件的分发增加了限制性要求。木兰公共许可证和木兰宽松许可证间存在较大差异,均以第2版为例,其差别几种再”分发限制“上。木兰公共许可证类似GPL具有传染性,要求接受者必须开放源代码。而木兰宽松许可证的”分发限制“中仅要求保留代码中的许可证声明,宁为要求再次分发时的许可证设置,不具有”传染“特质。木兰公共许可证与国外主流许可证的异同见表2。

木兰宽松许可证与木兰公共许可证的共同特点是:采用中英文表述,且具有同等法律效力;遵从柏树间接原则,容易理解;明确授予版权和专利权,不受与商标权。而区别在于前者能与现有的其他许可证友好兼容,后者对开源软件的分发条件又限制性要求,对云计算和SaaS等新兴技术的分发也有条件限制。

表3 木兰公共许可证与国外主流许可证对

1.4.5 开源许可证的选用逻辑

选择开源许可证时,可以从三层阶梯的五个问题入手:他人修改代码后,是否可以闭源;新增代码是否采用同样许可证;是否需要对源码的修改之处,提供说明文档;每一个修改过的文件,是否都必须放置版权说明;衍生软件的广告是否可以用你的名字促销。

图3 开源许可证选用逻辑
 
友情链接
鄂ICP备19019357号-22