认识GPL/LGPL

来源:互联网 发布:c语言的头文件是什么 编辑:程序博客网 时间:2024/06/02 02:27
         GNU是“GNU is Not Unix”的递归缩写。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 )的缩写形式。

       GPL(General Public License)和LGPL( Lesser General Public License)是GNU的两种License。越来越多的自由软件(Free Software)使用GPL作为其授权声明,如果对GPL一点都不了解,有可能在使用自由软件时违反了GPL的授权。如果是个人或不正规的公司倒也无所谓,但如果是有规模的公司,恐怕会有被起诉的风险。这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。GPL通过如下途径实现这一目标:

1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
2.如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。
3.GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接(源代码形式)。对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
所以后来GNU推出了LGPL许可。LGPL 是GPL的一个为主要为类库使用设计的开源协议,LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库,而不需要开源商业软件的源代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议(注解:采用LGPL的代码,一般情况就是一个第三方库,如果开发人员仅用了它的功能,而没有对库本身进行任何修改,那么开发人员也不必公布自己的商业源代码。但是开发人员修改了这个库的源代码,那么修改的这部分库的代码必须开源,并且遵循LGPL协议)。因 此LGPL协议的开源 代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只要这些代码是动态连接的就没有限制。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)
GPL/LGPL协议的最终目都是保护开发者的知识产权,避免他人直接利用开源的代码开发类似的产品。



原创粉丝点击