没有开源软件,现在的互联网根本无法存在,开源的历史可以追溯到ARPANET建立。开源在今天已经不再是一个时髦的词了,对于互联网的开发者来说,它现在就像空气和水一样,就在我们的生活中。
如今的主流开源参与者,不再只是个人爱好者,更多的是著名IT企业的员工,商业公司也纷纷支持。IT企业投入了大量人力在各个开源社区和项目上,包括开发测试,项目协调,运营推广等。
什么是开源
从软件的版权属性和发布方式上看,软件的分类如下:
开源软件被定义为描述其源码可以被公众使用的软件,并且此软件的使用,修改和分发也不受许可证的限制。开放源码软件通常是有copyright的,它的许可证可能包含这样一些限制:蓄意的保护它的开放源码状态,著者身份的公告,或者开发的控制。
简单的说,开源就是源代码开放和开源许可协议的选择。开源意味着用户可以免费运行,自由学习,免费二次分发以及自由修改改进。
开源许可协议及选择
开源许可协议大概有上百种,例如:
Apache License 2.0 (Apache-2.0)
3-clause BSD license (BSD-3-Clause)
GNU General Public License (GPL)
GNU Lesser General Public License (LGPL)
MIT license (MIT)
Mozilla Public License 2.0 (MPL-2.0)
Eclipse Public License (EPL-1.0)
...
但是,常见的开源许可大约10种,主要有类似GPL,类似BSDL和类似MPL等。
GPL
GPL给软件以版权保护,使用GPL,可以获得复制、发布和修改这些软件的法律许可。
GPL的特殊性是 copyleft 与自由的病毒式传播。在所有开源许可证中,GPL 的最大特色在于它的“copyleft”规则。 它严格地控制基于自由软件的集合作品或者衍生作品,GPL 第 1 条将其称为“基于程序的作品”,发布规则很简单,只要使用了 GPL 下的自由软件,那么衍生作品以及集合作品的发布都要基于GPL 之下。
类似的开源许可证AGPL、LGPL…等等,是一种相对理想的是实用主义。
BSDL
BSDL主要适用于 Apache 服务器和基于 BSD 的操作系统项目(FreeBSD、 OpenBSD、 NetBSD),不排斥对开源软件的商业利用,有实用主义的观点。
BSDL 的特殊性是被许可人的绝对自由,对被许可人做了最少的限制,只要尊重原作者, 合理恰当地标明了源代码的出处,被许可人将不受限制于将这些源代码用在自己的程序中而按自己的要求进行程序的发布和软件的许可、产生衍生作品后仅以目标码的形式发布,等等。这意味着可以从 BSDL 的开源软件中衍生出私有软件。
类似的开源许可证有Apache 、MIT等等。