WebKit 许可
WebKit 是开源软件,部分内容根据 LGPL 和 BSD 许可授权,可在此处查看。
GNU 宽通用公共许可证
第2版,1991年6月
版权所有 (C) 1991 自由软件基金会 (Free Software Foundation, Inc.)
美国马萨诸塞州波士顿富兰克林街51号五楼,邮编02110-1301
每个人都被允许复制和分发本文档的原文副本
,但不得对其进行修改。
(这是库 GPL 的第一个发布版本。它被
编号为2,因为它与普通 GPL 的第2版配套。)
前言
大多数软件的许可证旨在剥夺您共享和修改软件的自由。与此相反,GNU 通用公共许可证旨在保证您共享和修改自由软件的自由——以确保所有用户都能自由使用该软件。
本许可证,即库通用公共许可证,适用于一些经特别指定的自由软件基金会软件,以及任何其他作者决定使用它的库。您也可以将其用于您的库。
当我们谈论自由软件时,我们指的是自由,而非价格。我们的通用公共许可证旨在确保您拥有分发自由软件副本的自由(如果您愿意,可以为此服务收费),确保您可以获得或在需要时获得源代码,确保您可以修改软件或将其部分用于新的自由程序;并且您知道您可以做这些事情。
为了保护您的权利,我们需要制定限制,禁止任何人剥夺或要求您放弃这些权利。如果您分发或修改库的副本,这些限制会转化为您的某些责任。
例如,如果您分发库的副本,无论免费还是收费,您都必须给予接收方我们授予您的所有权利。您必须确保他们也能收到或获得源代码。如果您将程序与库链接,则必须向接收方提供完整的目标文件,以便他们在修改和重新编译库后,能够将其与库重新链接。并且您必须向他们展示这些条款,以便他们了解他们的权利。
我们保护您权利的方法分两步:(1) 对库拥有著作权,以及 (2) 向您提供本许可证,该许可证赋予您复制、分发和/或修改库的合法权限。
此外,为了保护每个分发者,我们希望确保每个人都明白本自由库不提供任何担保。如果库被他人修改并传播,我们希望接收方知道他们所获得的并非原始版本,这样他人引入的任何问题就不会影响原始作者的声誉。
最后,任何自由程序都不断受到软件专利的威胁。我们希望避免分发自由软件的公司单独获得专利许可,从而实际上将程序转化为专有软件的危险。为了防止这种情况,我们已经明确规定,任何专利都必须允许所有人自由使用,否则根本不应获得许可。
大多数 GNU 软件,包括一些库,都受普通 GNU 通用公共许可证的约束,该许可证是为实用程序设计的。本许可证,即 GNU 库通用公共许可证,适用于某些指定的库。本许可证与普通许可证有很大不同;请务必完整阅读,不要假定其中任何内容与普通许可证相同。
我们为某些库提供单独的公共许可证的原因是,它们模糊了我们通常在修改或添加程序与简单使用程序之间所做的区分。将程序与库链接,而不改变库本身,在某种意义上只是简单地使用库,类似于运行实用程序或应用程序。然而,从文本和法律意义上讲,链接后的可执行文件是一个组合作品,是原始库的派生品,而普通通用公共许可证也将其视为此类。
由于这种模糊的区分,将普通通用公共许可证用于库未能有效促进软件共享,因为大多数开发人员不使用这些库。我们得出结论,较弱的条件可能更有利于促进共享。
然而,非自由程序的无限制链接将剥夺这些程序用户从库本身的自由状态中获得的所有好处。本库通用公共许可证旨在允许非自由程序的开发人员使用自由库,同时保留您作为此类程序用户修改其中包含的自由库的自由。(我们尚未发现如何就头文件中的更改实现这一点,但我们已就库实际功能中的更改实现了这一点。)希望这将导致自由库的更快发展。
复制、分发和修改的具体条款和条件如下。请密切注意“基于库的作品”和“使用库的作品”之间的区别。前者包含源自库的代码,而后者仅与库协同工作。
请注意,库也可能受普通通用公共许可证而非本特殊许可证的约束。
复制、分发和修改的条款和条件
0. 本许可证协议适用于任何包含著作权所有者或其他授权方声明其可根据本库通用公共许可证(也称“本许可证”)条款分发的软件库。每个被授权人均被称作“您”。
“库”是指为了方便与应用程序(使用其中一些功能和数据)链接以形成可执行文件而准备的软件功能和/或数据的集合。
下文中的“库”指根据这些条款分发的任何此类软件库或作品。“基于库的作品”指库本身或著作权法下的任何派生作品:即,包含库或其一部分的作品,无论是原封不动的、经过修改的,和/或直接翻译成另一种语言的。(此后,翻译无限制地包含在“修改”一词中。)
作品的“源代码”是指为对其进行修改而优选的形式。对于库而言,完整的源代码意味着其包含的所有模块的所有源代码,加上任何相关的接口定义文件,以及用于控制库编译和安装的脚本。
除复制、分发和修改之外的活动不受本许可证的约束;它们超出其范围。运行使用库的程序的行为不受限制,此类程序的输出仅在其内容构成基于库的作品时才受涵盖(独立于在编写该作品的工具中使用库)。这是否属实取决于库的功能以及使用库的程序的功能。
1. 您可以按照您收到库的完整源代码的方式,在任何介质上复制和分发其原文副本,前提是您在每个副本上显眼且适当地发布适当的著作权声明和免责声明;保持所有提及本许可证和无任何担保的声明完整无缺;并随库一起分发本许可证的副本。
您可以对物理传输副本的行为收取费用,并且您可以自行选择提供担保保护以换取费用。
2. 您可以修改您的库副本或其任何部分,从而形成基于库的作品,并根据上述第1节的条款复制和分发此类修改或作品,前提是您还满足所有这些条件:
- a) 修改后的作品本身必须是一个软件库。
- b) 您必须使被修改的文件带有醒目的声明,说明您修改了这些文件以及任何修改的日期。
- c) 您必须使整个作品根据本许可证的条款免费授权给所有第三方。
- d) 如果修改后的库中的某项功能引用了由使用该功能的应用程序提供的函数或数据表,而不是作为调用该功能时传递的参数,那么您必须真诚地努力确保,在应用程序未提供此类函数或表的情况下,该功能仍然可以运行,并执行其任何有意义的部分。(例如,库中计算平方根的函数其用途完全独立于应用程序且定义明确。因此,第2d款要求本函数使用的任何应用程序提供的函数或表必须是可选的:如果应用程序不提供,平方根函数仍必须计算平方根。)
这些要求适用于修改后的整个作品。如果该作品中可识别的部分并非源自库,并且可以合理地被视为独立的、分离的作品,那么当您将这些部分作为独立作品分发时,本许可证及其条款不适用于这些部分。但是,当您将相同的部分作为基于库的整体作品的一部分进行分发时,整个作品的分发必须遵守本许可证的条款,本许可证对其他被授权人的权限延伸至整个作品,因此也延伸至每个部分,无论其作者是谁。
因此,本节的目的不是主张权利或质疑您完全由您自己编写的作品的权利;相反,其目的是行使控制基于库的派生作品或集体作品分发的权利。
此外,在存储或分发介质的卷上,仅仅将不基于库的另一作品与库(或与基于库的作品)聚合,并不会使该另一作品落入本许可证的范围。
3. 您可以选择将普通 GNU 通用公共许可证的条款而非本许可证应用于库的给定副本。为此,您必须修改所有提及本许可证的声明,使其提及普通 GNU 通用公共许可证第2版,而非本许可证。(如果普通 GNU 通用公共许可证出现了比第2版更新的版本,那么如果您愿意,可以指定该版本。)请勿对这些声明进行任何其他更改。
一旦在给定副本中做出此更改,则对该副本而言不可逆转,因此普通 GNU 通用公共许可证适用于从该副本制作的所有后续副本和派生作品。
当您希望将库的部分代码复制到非库的程序中时,此选项很有用。
4. 您可以根据上述第1和第2节的条款,以目标代码或可执行形式复制和分发库(或其部分或根据第2节的派生作品),前提是您随其附带完整的相应的机器可读源代码,该源代码必须根据上述第1和第2节的条款在通常用于软件交换的介质上分发。
如果目标代码的分发是通过提供从指定地点复制的访问权限进行的,那么提供从相同地点复制源代码的同等访问权限,则满足分发源代码的要求,即使第三方没有被强制要求将源代码与目标代码一同复制。
5. 一个不包含库任何部分派生品,但设计通过与库编译或链接来协同工作的程序,被称为“使用库的作品”。此类作品,就其本身而言,并非库的派生作品,因此不属于本许可证的范围。
然而,将“使用库的作品”与库链接会创建一个可执行文件,该文件是库的派生品(因为它包含库的一部分),而非“使用库的作品”。因此,该可执行文件受本许可证的约束。第6节规定了此类可执行文件的分发条款。
当“使用库的作品”使用了库中头文件的内容时,该作品的目标代码可能成为库的派生作品,即使源代码不是。如果该作品可以在不链接库的情况下进行链接,或者该作品本身就是一个库,那么这一点尤其重要。这是否属实的界限并未由法律精确定义。
如果此类目标文件仅使用数值参数、数据结构布局和访问器,以及小型宏和小型内联函数(长度为十行或更少),则目标文件的使用不受限制,无论其是否在法律上构成派生作品。(包含此目标代码以及库部分的,可执行文件仍将受第6节的约束。)
否则,如果作品是库的派生品,您可以根据第6节的条款分发作品的目标代码。包含该作品的任何可执行文件也受第6节的约束,无论它们是否直接与库本身链接。
6. 作为上述各节的例外,您也可以将“使用库的作品”与库编译或链接,以生成包含库部分的作品,并根据您选择的条款分发该作品,前提是这些条款允许客户为自己使用而修改作品,以及为调试此类修改而进行逆向工程。
您必须在作品的每个副本中给予醒目声明,说明作品中使用了库,并且库及其使用受本许可证的约束。您必须提供本许可证的副本。如果作品在执行时显示著作权声明,您必须将库的著作权声明包含在其中,并提供引导用户查阅本许可证副本的引用。此外,您必须执行以下操作之一:
- a) 随作品附带库的完整相应的机器可读源代码,包括作品中使用的任何更改(必须根据上述第1和第2节分发);并且,如果作品是与库链接的可执行文件,则附带完整的机器可读“使用库的作品”,作为目标代码和/或源代码,以便用户可以修改库,然后重新链接以生成包含修改后库的修改后的可执行文件。(理解是,修改库中定义文件内容的用户不一定能够重新编译应用程序以使用修改后的定义。)
- b) 随作品附带一份书面提议,有效期至少三年,以向同一用户提供上述第6a款中指定的材料,收费不超过执行此分发的成本。
- c) 如果作品的分发是通过提供从指定地点复制的访问权限进行的,则提供从相同地点复制上述指定材料的同等访问权限。
- d) 验证用户已收到这些材料的副本或您已将副本发送给该用户。
对于可执行文件,“使用库的作品”的所需形式必须包括从中复制可执行文件所需的任何数据和实用程序。然而,作为一项特殊例外,分发的源代码无需包含通常随运行可执行文件的操作系统的主要组件(编译器、内核等)一起分发(无论是源代码还是二进制形式)的任何内容,除非该组件本身随可执行文件一起提供。
这种要求可能与不通常随操作系统提供的其他专有库的许可限制相矛盾。这种矛盾意味着您不能在您分发的可执行文件中同时使用它们和库。
7. 您可以将基于库的作品的库功能与其他不受本许可证约束的库功能并排放置在一个单一的库中,并分发这样一个组合库,前提是基于库的作品和其它库功能的单独分发是允许的,并且您执行以下两项操作:
- a) 随组合库附带一份基于库的相同作品的副本,未与任何其他库功能组合。此副本必须根据上述各节的条款进行分发。
- b) 在组合库中给予醒目声明,说明其一部分是基于库的作品,并解释在哪里可以找到同一作品的未组合形式。
8. 除非本许可证明确规定,否则您不得复制、修改、再许可、链接或分发库。任何试图以其他方式复制、修改、再许可、链接或分发库的行为均属无效,并将自动终止您在本许可证下的权利。然而,根据本许可证从您那里获得副本或权利的各方,只要他们完全遵守,其许可将不会被终止。
9. 您无需接受本许可证,因为您尚未签署。然而,没有其他任何内容授权您修改或分发库或其派生作品。如果您不接受本许可证,这些行为将受到法律禁止。因此,通过修改或分发库(或任何基于库的作品),即表示您接受本许可证的此项行为,以及其关于复制、分发或修改库或基于库的作品的所有条款和条件。
10. 每次您重新分发库(或任何基于库的作品)时,接收方会自动从原始许可方获得一份许可,可以根据这些条款和条件复制、分发、链接或修改库。您不得对接收方行使此处授予的权利施加任何进一步的限制。您不负责强制第三方遵守本许可证。
11. 如果因法院判决或专利侵权指控或任何其他原因(不限于专利问题),对您施加(无论是通过法院命令、协议或其他方式)与本许可证条件相矛盾的条件,则这些条件不能免除您遵守本许可证条件的义务。如果您无法在同时履行本许可证项下的义务和任何其他相关义务的情况下进行分发,那么结果是您根本不能分发库。例如,如果专利许可不允许所有直接或间接通过您接收副本的人免版税地重新分发库,那么您满足该许可和本许可证的唯一方法就是完全停止分发库。
如果本节的任何部分在特定情况下被认定为无效或不可执行,则本节的其余部分旨在适用,并且本节整体旨在适用于其他情况。
本节的目的不是诱导您侵犯任何专利或其他财产权主张,也不是质疑任何此类主张的有效性;本节的唯一目的是保护通过公共许可实践实施的自由软件分发系统的完整性。许多人在相信该系统的一致应用下,为通过该系统分发的各种软件做出了慷慨贡献;作者/捐赠者有权决定是否愿意通过任何其他系统分发软件,而许可方不能强加该选择。
本节旨在彻底阐明被认为是本许可证其余部分的后果。
12. 如果库的分发和/或使用在某些国家因专利或著作权接口而受到限制,则将库置于本许可证下的原始著作权所有者可以添加明确的地理分发限制,排除这些国家,以便分发仅允许在未被排除的国家内或之间进行。在这种情况下,本许可证将该限制纳入其中,如同其已写入本许可证正文一样。
13. 自由软件基金会可能不时发布修订版和/或新版库通用公共许可证。此类新版本在精神上将与当前版本相似,但可能在细节上有所不同,以解决新问题或顾虑。
每个版本都有一个独特的版本号。如果库指定了适用于它和“任何更高版本”的本许可证版本号,您可以选择遵循该版本或自由软件基金会发布的任何更高版本的条款和条件。如果库未指定许可证版本号,您可以选择自由软件基金会曾发布的任何版本。
14. 如果您希望将库的某些部分整合到其他分发条件与本许可证不兼容的自由程序中,请致函作者请求许可。对于自由软件基金会拥有著作权的软件,请致函自由软件基金会;我们有时会为此做出例外。我们的决定将以两个目标为指导:维护我们自由软件所有派生品的自由地位,以及普遍促进软件的共享和重用。
无担保
15. 由于本库是免费许可的,在适用法律允许的最大范围内,本库不提供任何担保。除非另有书面声明,著作权所有者和/或其他方按“原样”提供本库,不附带任何形式的明示或暗示担保,包括但不限于适销性担保和特定用途适用性担保。关于库的质量和性能的全部风险由您承担。如果库被证明存在缺陷,您将承担所有必要的服务、维修或更正费用。
16. 除非适用法律要求或有书面约定,在任何情况下,著作权所有者或任何其他可能根据上述规定修改和/或重新分发库的方,均不对您承担因使用或无法使用库而引起的任何损害赔偿责任,包括任何一般、特殊、偶然或后果性损害赔偿(包括但不限于数据丢失或数据不准确,或您或第三方遭受的损失,或库无法与其他任何软件协同运行),即使此类所有者或其他方已被告知发生此类损害的可能性。
条款和条件结束
如何将这些条款应用于您的新库
如果您开发了一个新库,并希望它能对公众产生最大的用处,我们建议将其制作成每个人都可以重新分发和更改的自由软件。您可以通过允许根据这些条款(或者,替代地,根据普通通用公共许可证的条款)重新分发来实现这一点。
要应用这些条款,请将以下声明附加到库中。最安全的方法是将其附加到每个源文件的开头,以最有效地传达免责声明;并且每个文件应至少包含“著作权”行和一个指向完整声明所在位置的指针。
WebKit 开源网页浏览器引擎。
版权所有 (C) 2015 苹果公司 (Apple, Inc.)
本库是自由软件;您可以重新分发它和/或
根据自由软件基金会发布的 GNU 宽通用公共
许可证的条款修改它;可以是
许可证的第2版,或(由您选择)任何更高版本。
分发本库是希望它会有用,
但不提供任何担保;甚至不提供
适销性或特定用途适用性的暗示担保。请参阅 GNU
宽通用公共许可证以获取更多详细信息。
您应该已随本库收到一份 GNU 宽通用公共
许可证的副本;如果没有,请致函
自由软件基金会 (Free Software Foundation, Inc.),美国马萨诸塞州波士顿富兰克林街51号五楼,
邮编02110-1301。
BSD 许可
版权所有 (C) 2009 苹果公司。保留所有权利。
允许以源代码和二进制形式进行再分发和使用,无论是否修改,但必须满足以下条件:
- 源代码的再分发必须保留上述著作权声明、本条件列表以及以下免责声明。
-
二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述著作权声明、本条件列表以及以下免责声明。
本软件由苹果公司及其贡献者“按原样”提供,不提供任何明示或暗示的担保,包括但不限于适销性担保和特定用途适用性担保。在任何情况下,苹果公司或其贡献者均不对任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务;使用、数据或利润损失;或业务中断)承担责任,无论其成因如何,也无论基于何种责任理论,无论是合同、严格责任还是侵权(包括疏忽或其他),即使已被告知可能发生此类损害。