开源软件被定义为描述其源码能够被公众使用的软件,而且此软件的使用,修改和分发也不受许可证的限制。开放源码软件一般是有copyright的,它的许可证可能包含这样一些限制:蓄意的保护它的开放源码状态,著者身份的公告,或者开发的控制。linux
简单的说,开源就是源代码开放和开源许可协议的选择。开源意味着用户能够免费运行,自由学习,免费二次分发以及自由修改改进。服务器
没有开源软件,如今的互联网根本没法存在,开源的历史能够追溯到ARPANET创建。开源在今天已经再也不是一个时髦的词了,对于互联网的开发者来讲,它如今就像空气和水同样,就在咱们的生活中。ionic
现在的主流开源参与者,再也不只是我的爱好者,更多的是著名IT企业的员工,商业公司也纷纷支持。IT企业投入了大量人力在各个开源社区和项目上,包括开发测试,项目协调,运营推广等。工具
开源许可协议大概有上百种,可是,常见的开源许可大约10种,主要有相似GPL,相似BSDL和相似MPL等。学习
GPL测试
GPL给软件以版权保护,使用GPL,能够得到复制、发布和修改这些软件的法律许可。spa
GPL的特殊性是 copyleft 与自由的病毒式传播。在全部开源许可证中,GPL操作系统
的最大特点在于它的“copyleft”规则。 它严格地控制基于自由软件的集合做品或者衍生做品,GPL 第 1 条将其称为“基于程序的做品”,发布规则很简单,只要使用了 GPL 下的自由软件,那么衍生做品以及集合做品的发布都要基于GPL 之下。开放源代码
相似的开源许可证AGPL、LGPL…等等,是一种相对理想的是实用主义。设计
BSDL
BSDL主要适用于 Apache 服务器和基于 BSD 的操做系统项目(FreeBSD、 OpenBSD、 NetBSD),不排斥对开源软件的商业利用,有实用主义的观点。
BSDL 的特殊性是被许可人的绝对自由,对被许可人作了最少的限制,只要尊重原做者, 合理恰当地标明了源代码的出处,被许可人将不受限制于将这些源代码用在本身的程序中而按本身的要求进行程序的发布和软件的许可、产生衍生做品后仅以目标码的形式发布,等等。这意味着能够从 BSDL 的开源软件中衍生出私有软件。
相似的开源许可证有Apache 、MIT等等。
MPL
MPL是1998年初Netscape的 Mozilla 项目组为其开放源代码软件项目设计的开源许可证。
MPL的特殊性是在开源软件许可证谱系中接近于 BSDL,但它带有强烈的商业化特征,为公司保留了至关的权利,至关于集开源之力,都为我所用。
相似的开源许可证 Apple 公共代码许可证(1.2)、Sun 公司的SISSL和 Sun 公共许可证 (1.0)、Nokia 开放源代码许可证(1.0a)、 IBM公共许可证(1.0)等等。
Android 的开源许可体系
Android有关linux内核部分采用GPLv2协议开源,有关userspace采用ASLv2(Apache协议版本2 )协议开源。
GPL和非GPL的分界线在于一个 Bionic Libc 的库。 头文件由Linux内核的同名头文件自动生成,用来获取完成用户空间系统调用的必要信息。它只包含原头文件中的常数、结构和宏定义,所以,不包含版权信息。让 GPL 止步于内核空间被 Linux 内核的做者 Linus Torvalds以及其余的内核开发人员屡次澄清,普通系统调用为非 GPL 的做用范围。
Android 在用户空间与内核空间之间存在着硬件抽象层 HAL,HAL 类库本质上一种用户空间的驱动,其中的主要用途之一就是规避GPL。硬件厂家把须要保护的商业机密以及知识产权相关的逻辑放在 HAL 层,以二进制包的方式发布,不须要公开源代码。
PAX专利联盟是Google 增强它对 Android 控制力 的另外一种手段。手机厂商想要采用这些免费的专利,就不得不 预装 Play 商店及一系列Google 应用。
开源与专利
将开源代码修改后,本身申请软件专利是可能的,这取决于具体的开源许可证。MPL禁止将开放源代码以许可证形式许可后再去申请与这些源代码有关的专利的行为。BSD,Apache等对于专利申请没有限制。
就Ricoh,SISSL,NOKOS,AFL,Artistic,APSL等开源许可而言,贡献者将本身享有实质专利权的技术加入开源软件的,视为源代码的专利权人将该专有权利向公众许可。
使用代码扫描工具如Black DUCK或Openlogic等,可以对代码进行合规性检查,经过扫描源代码,发现并确认其中存在的开源代码,及其版本、许可证(License)信 息等,造成“材料清单”,让用户了解其代码。
原文:https://www.jianshu.com/p/e83f1f8a9da4