GNU库通用公共许可证

类别:软件工程 点击:0 评论:0 推荐:
+---------------------------------------------------------------+
|   译者的声明: |
| 本文是GNU Library(Less)General Public License的中文译文.|
| 本文由王立在1999年8月翻译。 |
| |
| 本人在翻译时为确保译文与原文在含义上一致性付出了最大 |
|   努力,但是本人不能对: |
| 由于译文与原文在含义上的差异而造成的任何误解; |
| 或对译文的误解; |
|   所造成的任何直接的、间接的损失承担任何责任。 |
| |
| 王立 1999年8月 |
+---------------------------------------------------------------+

      GNU库通用公共许可证
                       1991.六月.第二版

版权所有(C)1989,1991  Free  Software  foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
允许任何人复制和发布这一许可证原始文档的副本,但绝对不允许对它进行
任何修改。

[这是库通用公共许可证的第一个发布版本。它被称为第二版是因为它是和
通用公共许可证第二版一同发布的。]

     序言
  大多数软件许可证决意剥夺你的共享和修改软件的自由。相反,GNU通用
公共许可证力图保证你的共享和修改自由软件的自由--保证自由软件对所有
用户是自由的。
  本许可证,库通用许可证,适用于一些特殊设计的自由软件基金会软件和
那些库的开发者决定适用本许可证的库。你也可以把它用于你开发的库。
  当我们谈到自由软件(free software)时,我们指的是自由而不是价格。
我们的GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,
你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时
能够得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还
保证你知道你能做这些事情。
  为了保护你的权利,我们需要作出规定:禁止任何人不承认你的权利,或
者要求你放弃这些权利。如果你修改了库或者发布了库的副本,这些规定就
转化为你的责任。
  例如,如果你发布这样一个库的副本,不管是收费的还是免费的,你必须
将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源程序;
如果你把该库与某个程序进行连接,你必须把完整的目标文件提供给接受者,
以使他们在修改了库并重新进行了编译之后可以重新与该库进行连接。并且
将这些条款给他们看,使他们知道他们有这样的权利。
  我们采取两项措施来保护你的权利:
    (1)给软件以版权保护。
    (2)给你提供许可证。它给你复制,发布和修改这些软件的法律许可。
  同样,为了保护发布者,我们需要清楚地让每个人明白,自由库软件没有
担保(no warranty)。如果由于其他某个人修改了库,并继续加以传播。
我们需要它的接受者明白:他们所得到的并不是原来的版本。任何由其他人
引入的任何问题,不应损害原作者的声誉。
  最后,任何自由软件不断受到软件专利的威胁。我们希望避免这样的风险,
自由软件的再发布者以个人名义获得专利许可证。从而在事实上将软件变为
私有。为防止这一点,我们必须明确:任何专利必须以允许每个人自由使用
为前提,否则就不准许有专利。
  大多数GNU软件,包括某些库,采用的是普通的GNU通用公共许可证,该许
可证是为应用程序而设计的。本许可证,GNU库通用公共许可证,适用于特定
任务的库。本许可证与普通许可证有相当大的不同;请确保完整地阅读它,
而不要假定在任何方面它都和普通许可证相同。
  我们为某些库引入单独的公共许可证是因为它们通常会混淆我们所说的对
一个程序的修改或增强和仅仅使用该程序之间的区别。从某种意义上说,在
不修改库的情况下与一个库进行连接,仅仅是使用该库,这与运行一个工具
程序或应用程序是相似的。可是,从文字和法律的意义上说,连接后的可执
行程序是组合的起来的作品,是原始库的一个派生作品,并且普通的通用公
共许可证就是这样对待它的。
  因为库混淆了上述区别,大多数开发者并不使用库,因此对库使用普通公
共许可证不能有效地推进软件的共享。我们认为更少的限制有助于更好地共
享软件。
  但是,如果不对与非自由软件进行连接的行为施加任何限制,那么将剥夺
这些软件的使用者从这些自由的库中得到任何收益。本库通用许可证力图允
许非自由软件的开发者在保留其软件的用户对与之连接的自由库进行修改的
自由的前提下使用自由的库。(我们还没有发现如何在改动头文件的情况下
达到这一点,但我们已经在修改库中实际的函数的情况下获得了成功。)希
望本许可证能够加快自由库的开发。
  关于复制、发行和修改的精确条款与条件在下面给出。请对"基于库的作品"
和"使用库的作品"之间的区别加以特别的注意。前者包括了从库中派生出来的
代码,而后者仅仅指与库一同工作。
  值得一提的是:采用普通通用公共许可证而不采用本许可证的库也是可能
存在的。

GNU库通用公共许可证有关复制,发布和修改的条款和条件
  0. 本许可证适用于任何这样的库软件:它的版权持有者或其它任何授权机
构声称该库是按照库通用公共许可证(也可以被称为"本许可证")发布的,
并且该声明被包含在该库软件中。每个获得许可的人(licensee)都被称为"你"。
  一个"库"指的是一组预备的软件函数和/或数据。提供它们目的是便于和使
用其中某些函数和数据的应用程序进行连接以构成可执行程序。
  下面提到的"库"指的是任何按照以下条款发布的软件库或作品。"基于库的
作品"指的是库本身或在版权法意义下的任何从库中派生的作品:就是说,可
以是包括库或者库的一部分的作品,还可以是逐字逐句地、或者带有修改地、
或者直截了当地翻译到其它的语言。(在下文中,任何翻译作品都被包含在
条款"修改"中。)
  作品的"源代码"意味着对其修改的最佳形式。对于库来说,完全的源代码
就是它包含的所有模块的所有源代码,以及任何相关的界面定义文件,以及
用于控制安装和编译过程的脚本。
  许可证条款不适用于复制,发布和修改以外的活动;它们超出了本许可证
条款的范围。运行使用库的程序的活动不受本许可证条款的限制。对于这样
的程序的输出,仅仅在该程序的输出内容构成了基于该库的作品的情况下(
用于书写库的工具的输出除外),才适用于本条款。是否适用取决于库被用
来做什么和程序用库来做什么。
  1. 如果你在的库每个副本中适度突出地发表适当的版权声明并拒绝提供任何
担保,并且保持本许可证的声明和拒绝担保的声明的完整,并且与库一同发布
本许可证,那么你就可以通过任何媒体完整地复制和发布你所得到库的全部源
代码。
  你可以对散发物理副本收费,你还可以按照你的意愿提供授权保护以作为收
费的报偿。
  2. 如果你满足了以下所有条件,你就可以对你的副本、库的副本或者它的
任何一个部分进行修改,从而形成基于库的作品,并且按照条款1复制和发布
这项作品。
    a) 被修改的作品本身必须是软件库。
    b) 你必须在被修改的文件中突出地声明你对该文件的所做的任何修改
和修改的日期。
    c) 你必须允许你的作品作为整体由任何第三方按照本许可证的条款自由
使用。
    d) 如果被修改的库中的某项功能涉及到由使用该功能的应用程序提供
的某个函数或数据(在使用该功能时作为参数传递的数据或函数除外),那么
你必须付出真诚的努力以保证在应用程序没有提供这些函数或数据的情况下,
该功能仍然可以工作,并且按照原意完成其完成的所有工作。(例如,一个库
中计算平方根的函数有着与应用程序完全无关的良好定义。因此,第2节d)要
求:该函数所使用的、由任何应用程序提供的函数或表格必须是可有可无的:
如果应用程序没有给出它们,平方根函数必须仍然计算平方根。)
  该要求适用于被修改作品的整体。如果可以确认该作品的某个部分不是从库
中派生的,并且可以被合理地认为是独立和分离的作品,那么在你作为独立的
作品发布它时,本许可证和其中的条款并不适用于它。但是在你把它作为基于
库的作品的一部分进行发布的时候,作为整体它必须按照本许可证发布。不论
其中各个部分是由谁写的,对于其他许可证获得者来说许可都扩展到了整个作
品。
  因此,本条款的意图不在于索取权利或剥夺完全由你创作的作品的权利;而
在于行使控制对派生作品和由集体创作的基于库的作品的发布的权力。
  另外,把不基于库的其它作品和库或基于库的作品一起放在同一个存储体或
发布媒体的同一卷上,并不能将其它作品也置于本许可证的约束范围之内。
  3. 你可以为库的特定的副本选择普通GNU通用公共许可证的条款来代替本许
可证中的条款。为此,你必须对所有引用本许可证的声明进行修改,以使它们
全部引用GNU通用公共许可证第二版而不是本许可证。(如果有比普通GNU通用
公共许可证第二版更新的版本,你可以按照你的意愿使用新的版本。)请不要
对本声明进行任何其它的改动。
  一旦你对特定的副本实施了以上改动,这改动对于那个副本来说就是不可撤
销的,因此普通GNU通用公共许可证将适用于所有随后的副本和从该副本派生的
任何作品。
  这种选择在你希望把库的一部分代码拷贝到一个不是库的程序中去时是有用的。
  4. 你可以在第1节和第2节的条款的约束下以目标代码或可执行的形式复制和
发布库(或者在第2节的条款的约束下复制和发布库的一部分或库的派生作品),
只要你随之提供在常用软件交流媒体上按照第1节和第2节的条款发布的机器可读
的、与目标代码或可执行形式相对应的完整源代码。
  如果目标代码是通过提供对指定位置的访问权的形式发布的,那么即使第三
方没有对目标代码所的对应源代码提出要求,也应该提供同样的访问权以从同一
个位置获得满足源代码发布需要的源代码的副本。
  5. 一个通过编译或连接的形式与库一起工作,并且不包含从库的任何部分派
生出的任何代码的程序,被称为"使用库的作品"。这种独立而且不是从库中派生
出来的作品,不受本许可证条款的限制。
  然而,与"使用库的作品"相连接而创建的可执行程序是库的一个派生(因为它
包括了库的一部分),而不是"使用库的作品"。因此该可执行程序要受到本许可
证条款的限制。第6节给出了发布这类可执行程序的条款。
  当"使用库的作品"使用了作为库的一部分的头文件中的材料,尽管其源代码不
是从库中派生出来的,但它的目标代码却可能是从库中派生出来的作品。如果作
品可以在没有库的情况下进行连接或者作品本身就是一个库,目标代码是否是从
库中派生的作品就是十分重要的。法律没有精确地定义进行这种判断的界限
(threshold)。
  如果这类目标文件仅仅使用了库的数值参数、数据结构设计、访问函数、简短
的宏和简短的内联函数(10行或少于10行),那么对该目标文件的使用就是不受
限制的,而不论它在法律上是否是派生的作品。(包括该目标代码和库的一部分
的可执行文件仍然适用于第6节的条款。)
  否则,如果作品是从库中派生出来的,你可以按照第6节的条款发布该目标代码。
任何包括那项作品的可执行代码也需要按照第6节的条款进行发布,而不论它是否
直接和库本身进行连接。
  6. 作为上一节的一个例外,你还可以与库一同编译或连接"使用库的作品"以生
成包括库的一部分的作品,并且按照你所选择的条款(该条款必须允许使用者为
了自身的使用而修改该作品并允许通过反向工程对该修改进行调试)发布该作品。
  你必须在该作品的每个副本中给出突出的声明,以说明库被该作品所使用、库
是按照本许可证发布的、对库的使用是按照本许可证的条款实施的。你还必须给
出本许可证的副本。如果作品在执行期间显示版权声明,你必须把对库的版权声
明包括在其中,并且给出参考条目以引导用户获得本许可证。此外,你还必须完
成以下任务之一:
    a) 与作品一同给出在作品中被使用的库(必须按照上述第1节、第2节发布)
的完整的、包括被修改的部分在内的源代码;并且,如果作品是一个与库连接生
成的可执行文件,那么完整的、机器可读的、使用库的作品也必须以目标代码或
者源代码的形式给出,以使用户可以修改库并且重新连接以创建包含了修改后的
库的修改了的可执行程序。(对那些修改了定义文件内容的用户来说不能使用修
改后的定义重新编译应用程序是可以理解的。)
    b) 与作品一同给出书面的说明(offer),有效期至少为三年,以把上面第
6节a)中的材料给予相同的用户,而不会付出比进行本发布更多的费用。
    c) 如果作品是通过提供对特定的位置的访问权的形式发布的,就应该提供
相应的访问权以从相同的位置获得上述指定资料的副本。
    d) 证实用户已经收到这些资料的副本或者你已经把这些资料的副本发送给
该用户。
  对于一个可执行文件,"使用库的作品"必须包括重新创建该可执行文件所需要
的所有数据和工具程序。然而,作为一个特殊的例外,被发布的源代码不需要包
括任何通常作为可执行文件运行的操作系统的一部分发布的成分(包括源代码形
式或二进制形式)(这些成分包括编译器、内核等等),除非该成分本身就是和
可执行文件在一起的。
  本条款可能与其它通常不作为操作系统的一部分的库的许可证关于所有权的限
制相冲突。这种冲突意味着你不能在你发布的可执行文件中同时使用它们和库程
序。
  7. 你可以把基于库的作品所基于的库工具和不适用本许可证的库工具并列放
在同一个库中,并且发布这个合并的库。但前提是单独地发布基于库的作品和单
独地发布的其它库工具分别地允许这种合并,并且你必须完成以下两个任务:
    a) 与组合的库一同给出基于库的同一作品的副本,并不与任何其它库工具
相结合。它必须按照上节的条款进行发布。
    b) 与组合的库一同给出关于本作品的一部分是基于库的事实的突出声明,
并且说明从哪里可以获得同一作品的未组合形式。
  8. 除非你明确表示遵循本许可证,否则你不能对库进行复制、修改、转发许
可证(sublicense)、与库相连接或者发布库。任何试图以其它方式进行复制、修
改、转发许可证、与库相连接或发布库的行为都是无效的,并且将自动中止本许
可证授予你的权力。但是,对那些从你那里按许可证条款得到副本和权利的人们,
只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。
  9. 因为你并未签署它,所以你不需要接受本许可证。可是,没有其它任何东西
可以授予你修改或发布库程序或者它的派生作品的权利。如果你不接受本许可证,
这种行为就被法律所禁止。因此,如果你修改或者发布库(或任何基于库的作品)
,你就表明你接受本许可证以及它的所有关于复制、发布或修改库(或基于库的作
品)的条款和条件。
  10. 在每当你重新发布库程序(或任何基于库的作品)时,接受者自动地从原始
许可证颁发者那里得到一份许可证,以按照这些条款和条件进行库的复制、发布、
与之连接或修改。你不能对接受者履行这里赋予他们的权利强加其他限制。你也没
有强求第三方履行许可证条款的义务。
  11. 如果由于法院判决或违反专利的指控或任何其他原因(不限于专利问题),
强加于你的条件(不管是法院判决,协议或其他)和许可证的条件有冲突。他们也
不能用许可证条款为你开脱。在你不能同时满足本许可证规定的义务及其他相关的
义务时,那么你将因此而根本不能发布库。唯一能同时满足两方面要求的办法是停
止发布库。例如,如果某个专利许可证不允许所有直接地或间接地从你那里获得副
本的人自由地重新发布库,那么你同时满足他们的唯一方式就是完全不能够发布这
个库。
  如果本条款的任何部分在特定的环境下无效或无法实施,就使用条款的其余部分。
并将条款作为整体用于其他环境。
  本条款的目的不在于引诱你侵犯专利或其他财产权的要求,或争论这种要求的有
效性。本条款的主要目的在于保护自由软件发布系统的完整性。它是通过对通用公
共许可证的应用来实现的。许多人坚持应用这一系统,已经为通过这一系统发布大
量自由软件作出慷慨的供献。作者/捐献者有权决定他/她是否通过任何其他系统
发布软件。许可证持有人不能强制这种选择。
  本节的目的在于明确说明许可证其余部分可能产生的结果。
  12. 如果由于专利或者由于有版权的接口问题使库在某些国家的发布和使用受到
限制,将此库置于许可证约束下的原始版权拥有者可以增加限制发布地区的条款,
将这些国家明确排除在外。并在这些国家以外的地区发布库。在这种情况下,许可
证包含的限制条款和许可证正文一样有效。
  13. 自由软件基金会可能随时出版通用公共许可证的修改版或新版。新版本和当
前的版本在原则上保持一致,但在提到新问题时或有关事项时,在细节上可能出现
差别。
    每一版本都有不同的版本号。如果库指定适用于它的许可证版本号以及"任何更
新的版本"。你有权选择遵循指定的版本或自由软件基金会以后出版的新版本,如果
程序未指定许可证版本,你可选择自由软件基金会已经出版的任何版本。
  14. 如果你愿意将库的一部分结合到其他自由程序中,而它们的发布条件不同。
写信给作者,要求准予使用。如果是自由软件基金会加以版权保护的软件,写信给
自由软件基金会。我们有时会反对它。我们的决定受两个主要目标的指导。这两个
主要目标是:我们的自由软件的派生作品继续保持自由状态,以及从整体上促进软
件的共享和重复利用。

没有担保
  15. 由于库准予免费使用,在适用法律准许的范围内,对库没有担保。除非另有
书面说明,版权所有者和/或其他提供库的人们"一样"不提供任何类型的担保。不
论是明确的,还是隐含的。包括但不限于隐含的适销和适合特定用途的保证。全部
的风险,如库的质量和性能问题都由你来承担。如果库出现缺陷,你承担所有必要
的服务,修复和改正的费用。
  16. 除非适用法律或书面协议的要求,在任何情况下,任何版权所有者或任何按
许可证条款修改和发布库的人们都不对你的损失负有任何责任。包括由于使用或不
能使用库引起的任何一般的,特殊的,偶然发生的或重大的损失(包括但不限于数
据的损失,或者数据变得不精确,或者你或第三方的持续的损失,或者库不能和其
他软件协调运行等)。即使版权所有者和其他人提到这种损失的可能性也不例外。

    最后的条款和条件
  如何将这些条款用到你的新程序

  如果你开发了新库,而且你需要它得到公众最大限度的利用。要做到这一点的最
好办法是将它变为自由软件。使得每个人都能在遵守条款的基础上对它进行修改和
重新发布(或者,使用普通的通用公共许可证的条款来替代)。
  为了做到这一点,给库附上下列声明。最安全的方式是将它放在每个源程序的开
头,以便最有效地传递拒绝担保的信息。每个文件至少应有"版权所有"行以及在什
么地方能看到声明全文的说明。

<用一行空间给出库的名称和它用来做什么的简单说明>
版权所有(C)  年份  <作者姓名>

  这一库是自由软件,你可以遵照自由软件基金会出版的GNU库通用公共许可证条
款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你的选择)
用任何更新的版本。
  发布这一库的目的是希望它有用,但没有任何担保。甚至没有适合特定目的的
隐含的担保。更详细的情况请参阅GNU库通用公共许可证。
  你应该已经和程序一起收到一份GNU库通用公共许可证的副本。如果还没有,写
信给:
  The Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  Boston,  MA 02111-1307, USA.
  还应加上如何和你通过电子或普通信件保持联系的信息。

  如果需要,你应该取得你的上司(如果你是程序员)或你的学校签署放弃程序
版权的声明。下面只是一个例子,你应该改变相应的名称:

  Yoyodyne公司以此方式放弃James Random Hacker所写的 'Frob'库(一个用于
拧关节的库)的全部版权利益。

  Ty Coon的签名, 1990.4.1
  Ty Coon,Vice付总裁

本文地址:http://com.8s8s.com/it/it35708.htm