Free Software Licenses自由软件许可证

botbot
最后编辑于 01月08日 开发

软件许可证种类繁多,基本分为两类,Free Software Licenses和Nonfree Software Licenses。

Free Software Licenses,正确的翻译是自由软件许可证,而不是免费软件许可证。Nonfree Software Licenses则就是非自由软件许可证了。

Free Software,即自由软件,意味着使用者有使用、研究、复制、修改和改进、发布的自由。当然,你得有源代码才能研究和修改软件。自己逆向工程研究的就不需要源代码了。

自由软件许可证又根据是否是Copyleft License,分为两大类。Copyleft许可证,修改后的代码必须在同一许可证下发布。非Copyleft许可证,修改后的代码可以保留所有权,但需要说明代码来源。Copyleft,就是和Copyright对着干的,是一种自由软件的授权方式,允许开发者自由修改和发布作品,但修改和发布的作品也必须同样遵守Copyleft。

常用的软件许可证,有GPL、LGPL、Apache、BSD、MIT这五大类。下图来自David A. Wheeler,矢量箭头表示单向兼容性。

GPL,即GNU GPL,GNU General Public License。GNU英文是非洲牛羚的意思,又表示GNU is Not Unix,是一个自由的操作系统,官方网站是www.gnu.org。

GPL是目前使用最多的一种软件许可证,它是一种Copyleft许可证,要求修改的作品以及使用了GPL库的作品,也必须根据GPL发布。GPL有两个版本,GPLv2和GPLv3,二者并不兼容。

GPL允许你在二进制代码发布前,源代码可以不公开,但二进制代码发布之后,你应该提供源代码的拷贝、或提供一个三年内有效的获取源代码的说明、或提供一个源代码网络下载地址,以遵守GPL。

LGPL,即GNU LGPL,Lesser General Public License。它也是一种Copyleft许可证,多被各种代码库使用,修改后的库也必须根据LGPL发布,但和GPL不同的是,使用了LGPL库的作品,可以保留所有权而不需要根据LGPL发布。C语言中的各种库基本都是LGPL。

至于Apache、BSD(Berkly Software Distribution)、MIT(Massachusetts Institute of Technology),都是非Copyleft许可证,也就是说,你可以修改源代码并对修改的结果保留所有权。

完整理解整个许可证体系,和完整理解公钥基础设施PKI体系一样,非专业人士会感到很复杂和晦涩。几十年的发展积累,各种分支和衍生,确实很难短时间内搞清楚。

这是gnu.org的一个关于许可证的列表,包括软件许可证、文档许可证,以及其它各种许可证,非常全面:
http://www.gnu.org/licenses/license-list.html

登录注册后才能评论。