zoukankan      html  css  js  c++  java
  • 开源软件的许可(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 通过如下途径实现这一目标:

    • 1、 它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
    • 2、如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。
    • 3、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则增加了对此做法的约束。

  • 相关阅读:
    Asp.Net Web API 2第八课——Web API 2中的属性路由
    Asp.Net Web API 2第七课——Web API异常处理
    Asp.Net Web API 2第六课——Web API路由和动作选择
    Asp.Net Web API 2第五课——Web API路由
    开始学习python
    BMI 小程序 购物车
    深浅copy 文件操作
    字典 dict 集合set
    基本数据类型 (str,int,bool,tuple,)
    python 运算符
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423212.html
Copyright © 2011-2022 走看看