GNU 宽通用公共许可协议 v2.1 – 概述

2014-09-25 08:04:33       1621    原创
摘要:发布者:Rowan Wilson  日期:2005-11-10  最近更新:2012-05-14 GNU 宽通用公共许可协议 v2.1(简称“LGPL v2.1”)是常规的 GNU 通用公共许可协议(GPL)的演绎版。它起初被称为 GNU 程序库通用公共许可协议,由自由软件基金会(FSF)起草,旨在为特定环境下提供较弱(或更宽松的)著佐权形式。请访问 http://www.opensource.org/licenses/lgpl-license.php 查看该许可协议内容。为了配合GPL v3的发布,该许可协议的第三版 LGPL v3也于 2007 年由自由软件基金会发布。

LGPL 的背景

在计算机技术术语中,程序库(library)可用来描述被其他程序使用的一组软件功能。用这种方法,承担常见任务的程序代码就可以被放在程序库中,履行相同任务的程序编程者可以直接利用这个库的代码,从而避免自己再编写代码的冗余工作。程序库的功能要么是在编辑时复制到程序中,又或是如果有必要,执行程序时也可以访问程序库。如果您想使用他人程序库中的代码,您需要获得该程序库所有者的许可——毕竟,如果没有该程序库的功能,您的程序是不完整的,只有添加这些功能之后才能正常工作。如果程序库是在 GNU GPL 的条款下许可的,当您的程序使用这个库时就会变成库的衍生作品,因此必须在 GPL 下发布这个程序。

这意味着,如果有人编写程序时使用了 GPL 许可的程序库,那么该编程者或者永远无法发布该程序,或者只能在 GPL 下许可和发布。因此,没有闭源程序可随其使用的 GPL 许可程序库一同发布。当然,这就是 GPL 的预期效果。

但是,有时程序库的开发者在准许非自由软件使用程序库时,可能希望确保程序库本身能保持自由。如果作者试图创建一个特定软件解决方案标准的运行程序,同时希望创建的程序库能够在尽可能被广泛使用的同时不被重新许可或闭源,上述情况就会发生。GNU LGPL v2.1 的创建就是为了实现这些目的1。

 

LGPL v2.1 的主要功能

LGPL v2.1 与 GPL 的很多规定都保持一致。下文将讨论 LGPL v2.1 与 GPL 之间的不同点。

如果 GPL 真的强制要求所有衍生作品都必须在 GPL 下发布, LGPL v2.1 为此单独定义了一类作品,它们可能是演绎作品,但却能以任何方式许可。这类被称为使用程序库的作品基本都是一些为了利用LGPL许可程序库却在未编辑时不含该程序库中任何实际代码而编写的程序。这些作品可随 LGPL 许可程序库发布,不需要单独在 LGPL 下散布。相关程序在多大程度上应该包含程序库中代码在许可协议中并没有准确的定义,虽然给出了一些指导方针。

LGPL v2.1 在对衍生作品的种类和性质限制方面,也与 GPL 不同。被许可人可以修改 LGPL 许可程序库,但如果他们想发布修改版,修改版也必须是一个程序库。对 LGPL 许可程序库的修改不应损害程序库适用各种程序的兼容性(本条件针对的客体是对与特定程序的数据结构并不紧密关联的程序库功能进行编码的责任)。

如果使用程序库的作品符合这些条件,就可使用多种方式随 LGPL 许可程序库一起发布。许可协议的目的,是确保 接收者可以在修改 LGPL 许可程序库后使程序库仍然适用于使用它的作品(有可能闭源)。任何散布都必须包含程序库的源代码,以及程序库所有权的显著声明。它还必须满足以下条件之一:

•包含使用程序库的作品的源代码

•包含一种工具,允许使用程序库的作品与程序库的修改版兼容,当然前提是已修改的程序库仍保留其接口

通过让使用程序库的作品在执行时能够动态访问程序库的功能而不是让作品在编辑时将程序库的功能复制到自己的代码中,就能很容易得实现第二种选项。LGPL v2.1 明确建议采用这种方法来满足要求。

最后,LGPL v2.1 准许编程者发布混合库,混合库包含 LGPL 许可程序库的功能,以及非 LGPL 许可的其他功能。但是,必须同时提供未插入 任何LGPL 许可代码的程序库的副本,以及可获取未合并 LGPL 许可程序库的位置信息。

 

LGPL v2.1 的作用

这些项目列表旨在总结 LGPL v2.1 的重点内容,并非其功能的完整描述。LGPL v2.1 可实现以下操作:

•保持程序库的修改版为开源

•允许非开源软件使用程序库并随其一起发布

 

您应该使用 LGPL v2.1 吗?

自由软件基金会发布了一篇有关如何确定使用 GPL 还是 LGPL 的文章《为什么您不应将 LGPL 用于下一个程序库》。但是,一个项目的最佳许可协议应由该项目的策略来确定,并依赖于当时的具体情况。因此,如何解决这些问题不在本问的范围之内。

OSS Watch 发布了一篇文档,着重讲述在开源许可协议下提供代码需考虑的主要法律问题。

 

延伸阅读

链接:

•为什么您不应将 LGPL 用于下一个程序库 [http://www.fsf.org/licensing/licenses/why-not-lgpl.html]

•GNU 项目 [http://www.gnu.org/]

•自由软件基金会 [http://www.fsf.org/]

•开放源代码促进会 [http://www.opensource.org/]

________________________________________

 

1.也可通过技术方法获得类似的效果,主要涉及在不同的许可协议下许可和发布程序库的接口,以及程序库本身。在书籍或出版标准中,接口的发布也要做到在无需创建衍生作品的情况下实现该接口,因为案例法中有类似的说法——印刷书籍中授权的默示许可不同于软件中授权的明文许可。大家熟知的例子包括 C 标准库和各种数据库连接器(DBC)库。在各种情况下,提高多厂商的互操作性都是推动接口发布的因素。

 

本文由 OSS Watch 原创并经由Creative Commons Attribution-ShareAlike 2.0 England & Wales license许可证发布。

 

沪ICP备15046442号
蝉知1.6