1.3 开源和GPL
Linux是开源软件,这是促使Linux广泛使用的一个重要因素。如果你想了解更多开源运动的历史和文化,请看Eric S. Raymod的书(见本章末尾),该书引人入胜且富有见地。
Linux内核基于GNU GPL[1](General Public License,通用公共许可证)的条款进行授权,这导致了一个常见的误区:Linux是免费的。事实上,GNU GPL第3版[2]的第2段声明:“当我们谈论自由软件时,我们指的是自由,而不是指价格上的免费。”大多数的职业开发经理都同意:你可以免费下载Linux,但是在一个嵌入式平台上开发和部署任何操作系统都是有代价的(这个代价通常很大)。在这方面,Linux并不例外。
GPL非常简短且通俗易懂。这里列出了它的一些重要特点。
- 许可证是自我存续的。
- 许可证给予用户运行程序的自由。
- 许可证给予用户研究和修改源代码的权利。
- 许可证允许用户分发原来的代码以及他所做的修改。
- 许可证有病毒的特性。也就是说,如果你把GPL软件分发给某个人,GPL会给予他和你相同的权利。
如果软件是基于GPL条款发布的,它必须永远附带这个许可证[3]。即使代码被大幅改动(这是许可证允许甚至是鼓励的),GPL要求改动后的代码也必须以相同的许可证发布。这样做的目的是为了保证软件的自由使用,包括修改后的软件(或通常所说的派生软件)的自由使用。
不管软件是如何获取的,GPL允许无限制地分发该软件,而无须支付任何专利费或按件收取的许可费。这并不意味着软件厂商不能够对GPL软件收费——收费是合理和普遍的商业行为。这表明一旦拥有GPL软件,你可以修改和重新分发这个软件,不管这个软件是否被修改过。然而GPL规定,软件的修改者如果决定发布修改后的软件,则必须以GPL的条款发布。无论以什么形式发布派生软件,比如交付给客户,都必须遵守这个规定。
免费和自由
在讨论开源软件的自由特性(free nature)时,常常会提及两个流行的短语:“free as in freedom”和“free as in beer”(本书作者非常喜欢后者)。[4]GPL的存在保证了软件的自由。它确保了你使用、学习和修改这个软件的自由。它也确保了当你分发修改后的代码给某个人时,他同样也获得这些自由。这个概念已经被广泛接受和理解。
很多人对Linux存在一个误解,那就是Linux是免费的。你可以免费获得Linux,你也可以花几分钟的时间下载一个Linux内核。然而,正如任何一个职业开发经理所理解的,在产品设计中使用任何软件都是有一定代价的。这些代价包括软件的获取、整合、修改、维护和支持。除此之外,你还需要花费其他费用,从而获得和维护一个配置正确的工具链、程序库、应用程序以及和你选择的硬件架构兼容的专用交叉开发工具。很快你会发现,为了开发和部署嵌入式Linux系统,配置其所需的软件工具和开发环境并不是件轻松的事情。