开源软件的许可(License)

  • 自由软件基金会(Free Software Foundation):FSF

0. GNU

GNU (GNU is Not Unix 的递归缩写)计划,又称革奴计划,是由 Richard Stallman 在 1983 年 9 月 27 日公开发起的。它的目标是建立一套彻底自由的操做系统。Richard Stallman 最先是在 net.unix-wizards 新闻组上公布该消息,并附带《GNU 宣言》等解释为什么发起该计划的文章,其中一个理由就是要“重现当年软件界合做互助的团结精神”。程序员

为保证 GNU 软件能够自由地“使用、复制、修改和发布”,全部 GNU 软件都有一份在禁止其余人添加任何限制的状况下受权全部权利给任何人的协议条款,GNU 通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称 Copyleft)概念。编程

1985 年 Richard Stallman 又创立了自由软件基金会(Free Software Foundation)来为 GNU 计划提供技术、法律以及财政支持。尽管 GNU 计划大部分时候是由我的自愿无偿贡献,但 FSF 有时仍是会聘请程序员帮助编写。当 GNU 计划开始逐渐得到成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是以后被 Red Hat 兼并的 Cygnus Solutions。网络

  • 到了 1990 年,GNU 计划已经开发出的软件包括了一个功能强大的文字编辑器 Emacs 。
  • GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。以及大部分UNIX系统的程序库和工具。惟一依然没有完成的重要组件就是操做系统的内核(称为HURD)。

1991年 Linus Torvalds 编写出了与 UNIX 兼容的 Linux 操做系统内核并在 GPL 条款下发布。Linux以后在网上普遍流传,许多程序员参与了开发与修改。1992 年 Linux 与其余 GNU 软件结合,彻底自由的操做系统正式诞生。该操做系统每每被称为“GNU/Linux”或简称 Linux。(尽管如此 GNU 计划本身的内核 Hurd 依然在开发中,已经发布 Beta 版本。)编程语言

GNU 包含3个协议条款,编辑器

  • GPL:GNU通用公共许可证(GNU General Public License)
  • LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License), ) ,旧称 GNU Library General Public License (GNU 库通用公共许可证);
  • GFDL : GNU 自由文档许可证(GNU Free Documentation License )的缩写形式。

1. 所谓自由

这里指的自由,并非价格免费,这和价格无关而是使用软件对全部的用户来讲是自由的。GPL 经过以下途径实现这一目标:函数

  • 一、 它要求软件以源代码的形式发布,并规定任何用户可以以源代码的形式将软件复制或发布给别的用户。
  • 二、若是用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并所以而成为 GPL 软件,也就是说必须随应用程序一块儿发布源代码。
  • 三、GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其余非自由软件。
    因为 GPL 很难被商业软件所应用,它要求调用它的库的代码也得 GPL,所有开放,而且一同发布,不能直接链接。因此后来 GNU 推出了 LGPL 许可证
    在 GPL 与 LGPL 许可证保护下发布源代码的结果很类似,对旧代码所作的任何修改对于想知道这些代码的人必须是公开的,惟一真正的不一样之处在于私人版权代码是否能够与开放源代码相互链接,LGPL 容许实体链接私人代码到开放源代码,并能够在任何形式下发布这些合成的二进制代码。只要这些代码是动态链接的就没有限制。(使用动态连接时,即便是程序在运行中调用函数库中的函数时,应用程序自己和函数库也是不一样的实体)

2. 如何商用?

GPL 只是规定用户在获取你的程序的时候必须能够得到源代码,但并无规定必须免费GPL 能够免费,也能够收费),所以理论上说,你仍然能够收取费用。不过,因为 GPL 规定你不得阻止用户再分发,所以用户彻底能够从你这里买来代码以后再免费送给全部其它人,所以对于 GPL 代码想要收费发布难度是很大的,目前比较可行的办法是像 Redhat 那样,经过提供订阅和服务的方式来收费,提供一些额外的增值服务吸引用户交费。工具

固然,若是你的程序只是本身内部使用,并无分发给用户的话,那就不存在必须开源的问题了。程序的生成物是不被看做程序的一部分的,所以你使用一个开源的库搭建了一个网站,若是仅仅将生成物,也就是生成的 HTML 页面,展现给用户,而不出售网站自己的代码的话,是不须要开源的。网站

若是你的确须要发布你的程序,但又不想开源,规避 GPL 的方法是经过 LPC 或者 RPC 间接调用库里的接口。只要库和你的程序不运行在同一进程下,就不须要开源。操作系统

另外,你须要区分 GPL 和 LGPL。LGPL 的要求比 GPL 低,你能够动态连接一个 LGPL 的库而不须要开源你本身的程序,而 GPL 是不行的。 开放源代码

3. GPL 与 AGPL

GPL,是 General Public License 的缩写,是一份 GNU 通用公共受权非正式的中文翻译。它并不是由自由软件基金会所发表,亦非使用GNU通用公共受权的软件的法定发布条款─直有GNU通用公共受权英文原文的版本始具备此等效力。

AGPL(The GNU Affero General Public License),AGPL是GPL的一个补充, 在GPL的基础上加了一些限制。原有的GPL协议,因为如今网络服务公司兴起(如:Google)产生了必定的漏洞,好比使用GPL的自由软件,可是并不发布与网络之中,则能够自由的使用GPL协议却不开源本身私有的解决方案。AGPL则增长了对此作法的约束。

相关文章
相关标签/搜索