如何选择开源许可证?

作者: 阮一峰

日期: 2011年5月 2日

如何为代码选择开源许可证,这是一个问题。

世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPLBSDMITMozillaApacheLGPL----之中做选择,也很复杂。

乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。

下面是我制作的中文版,请点击看大图。


(完)

yazhouren我找的其他资料:

开源 != GPL。在GPL被发明以前,就已经存在很多优秀的开源的组织,产品,许可证,和软件了,最著名的,请搜索 “BSD”(或者 freebsd、openbsd等等都行)。
至于为什么库一级的代码为什么要采取 LGPL,这完全是开发者自己的选择,或者说,在某种程度上是迫不得已,因为如果所有只要沾上 GPL 就必须 GPL 的话,那商业公司还活不活?没有了商业公司,谁给你钱做研究?谁给你提供硬件?目前人类社会的生产力水平还不足以大步跨入共产主义吧?LGPL 可以看作是GPL对商业的妥协,如果没有这个妥协,GNU 的一切到现在为止很可能还是RMS自己屋子里的一个玩具而已。

Linux 内核基于GPL第2 版。在内核社区,人们一直在争论是否应该支持GPL的最新版本GPL v3 。目前的趋势似乎是反对采取GPL v3 。

 

通过系统调用访问内核服务的 Linux 应用程序没有被看作衍生的工作, 因此并不受限于 GPL。而库则采用GNU轻量级通用公共许可证(GNULesser General Public License , LGPL),其限制要少于 GPL 。专有软件也允许与 LGPL下的库动态链接 。

GNU 项目的主要支撑者-- 自由软件基金会,创造了GNU公共许可证 (GNU PublicLicense , GPL), 它 也 被 称为 copyleft[ ② ] , 以 防止有人中途将自由软件转化为专有软件 。 如果某人修改 了 copyleft 的软件 ,就必须以 copyleft 的方式分享他的软件 。 GNU 系统中的 Linux 内核以及像GNU 编译器( GNU Compiler Collection , GCC ) 等大部分组件都以 GPL 发布 。 因此,如果你修改了内核, 你就必须在社区分享此修改 。 基本上,你必须以 copyleft 的形式将授予你的权利传递出去。

yazhouren我的理解:我认为GCC等工具,我们只是使用,而不会去调用GCC的什么功能或函数接口,所以GCC GPL许可证对于我们开发软件没有影响

当我们在linux上开发软件时,我们只是调用一些库和linux的系统调用。调用系统调用没有被看为衍生的工作,所以我们写的代码不用遵循GPL。当调用库时,我们就可以根据库采用的协议的种类来看我们的权限。一般的库采用LGPL,所以我们可以使用该库源代码接口,来编写我们的程序,而我们的程序不用开源。如果改动了库的源代码,必须把库源代码开源!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值