自由/开源软件有哪些授权方式?
自由/开源软件能与私有软件联合使用吗?
自由/开源软件在一系列不同的许可下发布。有两种主要的许可类型,在其基础上衍生的许可则数不胜数。这两种基本的许可是 GNU (“GNU's not Unix”的迭代缩写)通用公共许可(General Public License, GPL)和 BSD 类许可。详细的许可列表可以在 FSF 的网站上找到:http://www.fsf.org/licenses/license-list.html。
=GNU 通用公共许可(GPL)=
这个许可的目的是永久保护用户的自由。用户几乎可以对 GPL 程序做任何他们想做的事,包括复制、分发和修改。许可的条件主要在软件传播给另一个用户时发生作用。
用 GPL 授权发布软件的主要要求是:
GPL 软件占自由/开源软件的大多数,多达73%的自由/开源软件项目使用 GPL 授权[88]。在自由/开源软件中使用 GPL 的主要动力是一旦软件按 GPL 发布,它将永远具有 GPL 授权。任何人不能用附加的授权夺取用户重发布和修改程序的自由。商业软件公司因此不能在获取并修改 GPL 软件后将其在不同的私有软件授权下出售。
GPL 的全文可以在 http://www.fsf.org/licenses/gpl.html 找到。
=BSD 类许可=
BSD (Berkeley System Distribution,伯克利系统发布版本)类许可因为与加州大学伯克利分校最初的授权方式一脉相承而得名。这一类许可是最宽松的授权制度之一,因为它们允许用户在遵守以下条件的前提下对软件做任何事:
早期的这类授权需要在所有宣传材料中提及加州大学伯克利分校(或任何发布原始软件的组织),但这一条款在最新版本中已经去掉了。
包括一些关键组件在内的大量的自由/开源软件项目都在 BSD 类许可下发布,例如:
BSD 类许可的代码很容易整合到商业应用软件中。过去就连微软也在 Windows 代码的网络部分使用了一些 BSD 的代码 [91]。许多公司把 Apache 网页服务器作为它们软件产品的一部分。与 GPL 不同的是 BSD 类许可不要求发布源代码,因此允许公司隐藏自己对初始代码的修改。公司也不用给用户查看、修改或发布被公司修改的部分代码的权力。
附录二是关于不同软件授权的更详细的列表。
FOSS is released under a variety of different licenses. There are two primary types of licenses and countless variants. The two main licenses are the GNU (recursive acronym for GNU’s not Unix) General Public License and the BSD-style licenses. A more detailed listing of licenses can be found on the FSF’s website at http://www.fsf.org/licenses/license-list.html.
The GNU General Public License (GPL)
This is designed to ensure that user freedoms under this license are protected in perpetuity. Users are allowed to do pretty much anything they want to a GPL program, including copying, distributing and modifying. The conditions of the license primarily affect the user when it is distributed to another user.
Among the key provisions of distributing GPL software are:
The distributor of a GPL program must also make available the source code to the recipient.
Any changes made to a GPL program by the distributor must also be licensed under the GPL.
Distributors may not place any non-GPL restrictions upon the users they distribute the GPL program to.
Recipients of GPL software are granted the same rights to copy, modify and distribute the software as the original distributor.
GPL software forms a significant majority of FOSS: as much as 73 percent of FOSS projectsi. One of the main motivations for the usage of the GPL in FOSS is assurance that once something is released as FOSS, it will remain so permanently. It is not possible to add additional licensing to strip away a user’s right to redistribute or modify the program. A commercial software company cannot take a GPL program, modify it and then sell it under a different, proprietary license.
The full text of the GPL can be found at http://www.fsf.org/licenses/gpl.html.
BSD-style Licenses
BSD-style (Berkeley System Distribution) licenses are so named because they are identical in spirit to the original license issued by the University of California, Berkeley. These are among the most permissive licenses possible, because they basically permit users to do anything they wish with the software as long as:
Attribution is given to the original licensor by including the original copyright notice in source code files; and No attempt is made to sue or hold the original licensor liable for damages.
Earlier versions required the acknowledgement of the University of California, Berkeley (or whichever organization released the original software) in all promotional material but this requirement has been dropped in most recent versions.
A large number of FOSS projects, including several critical components, are licensed under BSD-style licenses. Examples include:
The Apache Web Server – the #1 web server used on the Internet todayi
The XFree86 Window System - the foundation of almost all graphical user interfaces in FOSS systems
FreeBSD, NetBSD and OpenBSD – all variants based on the original Berkeley System Distribution (BSD) version of Unix; all are widely used on the Internet, especially FreeBSD, which runs Yahoo and Microsoft’s Hotmail servicesii
It is fairly easy to incorporate BSD-style licensed code into commercial applications. Even Microsoft has used some BSD code in the networking portions of its Windows codeiii in the past. Many companies include the Apache web server as part of their commercial software offerings. Unlike the GPL, BSD-style licenses do not require the distribution of source code, allowing a company to hide its modifications to the original code. Nor are companies required to grant users the right to view, modify or distribute the company’s modifications to the code.
A more detailed listing of different software licenses can be found in Annex II.
将自由/开源软件和私有软件联合使用是可能的,具体取决于“联合使用”的方式和软件的授权。在所有的自由/开源软件授权中,GNU GPL 许可是最需要注意的。它这样定义“联合使用”:
“集成两个程序是指将它们放在同一张光盘或同一个硬盘中。我们将这个说法(……)用于不同的程序,而不是单个程序的不同组件。这种情况下,如果一个程序使用 GPL 授权,它对其他的程序没有影响。而合并两个模块是指将其连接在一起形成一个较大的程序,如果其中任何一个部件采用 GPL 授权,则整个合并后的程序也必须按照 GPL 发布。如果你不能或不愿那样做,就不能将它们合并[92]。”
就是说,如果在自由/开源操作系统环境下使用一个私有应用程序,这个私有程序并不受自由/开源软件系统的授权制约。比如运行在 GNU/Linux 系统下的甲骨文数据库就是如此。
而使用 Gnome 应用程序框架写一个 GUI 应用程序是另一类例子。Gnome 应用程序框架通过向开发者提供统一的功能,使他们不必从头开始,从而加快了 GUI 程序的开发。Gnome 是在 GPL 授权下发布的。因为完成后的应用程序(经过编译后)将含有 Gnome 应用程序框架的代码,整个程序就必须按照 GPL 发布。
其他授权一般远没有这样严格。使用 BSD 类授权写一个与上例相同的应用程序只需要在源代码中保留最初授权人的著作权信息。下表显示了发布与 GPL 和 BSD 类授权的软件联合使用的程序时的不同。
| GPL 授权 | BSD 类授权 | |
| 必须发布原始代码 | 是 | 否 |
| 必须发布用户创建的源代码 | 是 | 否 |
| 用户创建的源代码必须按 GPL 发布 | 是 | 否 |
Combining FOSS with proprietary software is possible, depending on the manner of “combination” and on the specific license of the software. Of all the common FOSS licenses, the GNU GPL license is the one that requires the most care. It defines “combination” as follows:
Mere aggregation of two programs means putting them side by side on the same CD-ROM or hard disk. We use this term (…) where they are separate programs, not parts of a single program. In this case, if one of the programs is covered by the GPL, it has no effect on the other program. Combining two modules means connecting them together so that they form a single larger program. If either part is covered by the GPL, the whole combination must also be released under the GPL—if you can't, or won't, do that, you may not combine them.iv
In this case, if one uses a proprietary application in a FOSS operating system environment, the proprietary application is unaffected by the licensing of the FOSS system. An example of this is running an Oracle database on a GNU/Linux operating system.
An example of combining programs would be writing a GUI application using the Gnome application framework. The Gnome application framework speeds up the development of any GUI program by supplying functionality developers who would otherwise have to write from scratch. Gnome is licensed under the GPL. Because the completed application program (after a compiler has been through it) would contain source code from the Gnome application framework, the entire application would have to be licensed under the GPL.
Other licenses are usually far less strict. Writing the same application above using a BSD-style license would only require keeping the attributions to the original licensor within the source code. The matrix below highlights the differences when distributing software combined with GPL or BSD-style licensed software:
GPL Licensed BSD License
Must distribute original source code Yes No
Must distribute user-created source code Yes No
User-created source code must be GPL’ed Yes No