Boost C++ 库

...世界上最受赞誉和设计精良的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ 编码标准

Boost 软件许可证

简介

Boost 软件许可证 指定了所有 Boost 库和工具的使用条款和条件。

历史

随着 Boost 的发展,每个 Boost 文件都有自己的许可证变得难以管理。用户抱怨每个许可证都需要审查,如果 Boost 库包含许多不同的许可证,则审查非常困难或不可能。Boost 版主和维护人员花费了过多的时间来处理许可证问题。Boost 开发人员经常复制现有的许可证,而没有真正了解许可证措辞是否满足法律需求。

为了澄清这些许可证问题,Boost 版主寻求了美国马萨诸塞州剑桥市哈佛大学法学院 伯克曼互联网与社会研究中心 的帮助。 要求制定一项单一的 Boost 许可证,以满足 Boost 许可证的传统要求,特别是

  • 必须易于阅读和理解。
  • 必须允许免费复制、使用和修改软件以用于任何用途。
  • 必须要求许可证与软件源代码的所有副本(包括再分发)一起出现。
  • 不得要求许可证与可执行文件或库的其他二进制用途一起出现。
  • 不得要求源代码可用于库的可执行文件或其他二进制用途。

此外,还研究了其他常见的开源许可证,以了解正在处理的其他问题,并根据良好的法律实践提出了补充要求。结果就是 Boost 软件许可证

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

基本原理

以下基本原理由撰写 Boost 软件许可证的律师 Devin Smith 提供。为了简洁起见,它经过了略微的编辑。编辑添加的部分以方括号显示。

通用软件许可证的益处

如果 Boost 的目标之一是简化使用和采用 Boost 提供的各种库,那么尝试标准化库提供给用户的许可证确实是有意义的。(我在下面对可能的简化版许可证提出了一些建议。)

[标准化许可证不会]必然解决满足企业许可证持有人问题。每个公司都会有自己的担忧,这些担忧基于他们自己使用软件许可和分发的经验,并且如果他们谨慎行事,他们会希望仔细审查每个许可证,即使他们已被告知所有这些许可证都是标准的。我预计,除非我们在起草标准 Boost 许可证方面非常聪明(或幸运),否则标准许可证将无法满足所有公司的法律部门的要求。我想,例如,一些公司会绝对坚持要求许可方提供所有权保证并为第三方知识产权侵权索赔提供赔偿。其他人可能希望获得功能保证。(如果我为这些公司提供建议,我会指出他们没有为代码支付任何费用,并且从可能没有雄厚财力的个别程序员那里获得此类保证本身并没有那么有价值,但其他律师可能会不同意。)

但这可以通过以下方式解决:不是试图制定完美的标准许可证,而是告知公司,如果他们不喜欢标准许可证,可以联系作者协商不同的,甚至是有偿的许可证。

采用标准许可证的另一个好处是帮助确保许可证从法律角度实现了作者的意图。例如,boost.org 上提供的许多[原始]库许可证都没有放弃所有权保证,这意味着如果代码侵犯了第三方的权利,并且用户被该第三方起诉,则作者可以说会被用户起诉。我认为作者可能希望否认这种责任。

简化版许可证

在没有任何程度上贬低已在[Boost 版主中]传播的许可证草案的情况下,我想提出 Boost 可以让库作者采用的另一种“简化版”许可证。David [Abrahams] 表达了希望尽可能保持简单,并尽可能少地偏离过去做法的愿望,这是我对草案的尝试。

此许可证与 BSD 许可证和 MIT 许可证非常相似,应满足开源计划的开源定义:(i)许可证允许免费再分发,(ii)分发的代码包含源代码,(iii)许可证允许创建衍生作品,(iv)许可证不歧视任何人或群体,(v)许可证不歧视任何领域,(vi)权利适用于程序被再分发给的所有人,(vii)许可证不特定于某个产品,以及(viii)许可证在技术上是中立的(即,它不[需要]明确的同意姿态来建立许可方与被许可方之间的合同)。

此许可证授予所有者版权下(以及隐含的专利许可)的所有权利,否认使用代码的所有责任(包括知识产权侵权责任),并要求代码的所有后续副本[除了机器可执行的目标代码],包括部分副本和衍生作品,都包含许可证。

常见问题

Boost 程序员应如何将许可证应用于源文件和头文件? 根据以下模板添加注释,将适当的文本替换为斜体部分:

//          Copyright Joe Coder 2004 - 2006.
// Distributed under the Boost Software License, Version 1.0.
//    (See accompanying file LICENSE_1_0.txt or copy at
//          https://boost.ac.cn/LICENSE_1_0.txt)

请在上述注释块之前和之后留空一行。如果版权和许可证消息不在不同的行上,也没有问题;在任何情况下都不应有其他插入文本。请勿在任何地方包含“保留所有权利”。

已经考虑了其他许可源文件的方式,但其中一些无意中导致许可证的法律要素失效。使用固定的语言引用许可证有助于企业法律部门评估 Boost 发行版。强烈不鼓励在许可证引用语言方面发挥创意,但在使用空格方面谨慎更改是可以的。

相反,许可证应如何应用于文档文件? 与应用于源文件的方式非常相似:用户应该看到上面模板中指示的完全相同的文本,唯一的区别是应该链接到 LICENSE_1_0.txt 的本地副本和网络副本。如有疑问,请参考此页面的 HTML 源代码。

Boost 程序员应如何维护版权消息? 版权仅针对达到一定原创性阈值的更改提出主张。因此,版权信息仅涵盖创意的表达。更改的作者可以自行决定是否将自己添加到版权信息中。通常,当有人接管库的维护或开发现有库的新版本时,会添加新的权利要求人。原则上,永远不要删除以前的版权声明——只需添加新的声明和/或权利要求人。

Boost 许可证与 GNU 通用公共许可证 (GPL) 有什么区别? Boost 许可证允许创建用于任何用途的衍生作品,而无需法律要求发布您的源代码。其他区别包括 Boost 不需要复制目标代码再分发的版权信息,以及 Boost 许可证不是“病毒式”的:如果您将自己的代码与一些 Boost 代码一起分发,Boost 许可证仅适用于 Boost 代码(及其修改版本);您可以根据您喜欢的任何条款许可自己的代码。GPL 也长得多,因此可能更难理解。

为什么使用短语“由源语言处理器生成的可执行机器代码”? 为了区分我们不需要复制版权和许可证的情况(例如目标库、共享库和最终程序可执行文件)与仍然需要复制的情况(例如分发源代码的自解压存档或预编译头文件)。更详细的措辞因不具备法律必要性且降低了可读性而被拒绝。

为什么许可证的“免责声明”段落完全大写? 这些特定条款的大写是美国法律为消费者保护而规定的。(Diane Cabell)

版权和许可证是否也涵盖接口? 库的概念接口不受此影响。头文件中表达的特定表示形式受此影响,文档、示例、测试程序以及库附带的所有其他材料也受此影响。但是,不同的实现可以自由使用相同的逻辑接口。接口问题已经在法庭上争论过多次;请咨询律师以了解更多详细信息。

为什么许可证不允许版权持有者对受保护的软件申请专利? 任何根据此许可证条款分发其代码的人都不能反过来起诉用户侵犯专利。(Devin Smith)

Boost 的律师充分了解 GPL 和 CPL 等许可证中的专利条款,如果他们认为这些条款在法律上有用,他们会在 Boost 许可证中包含这些条款。

为什么版权信息中没有说“保留所有权利”? Devin Smith 说“我认为它不应出现在任何(软件、电子文档等)已获得许可的版权声明中。它应该出现在出售的书籍中,实际上,所有权利(例如复制书籍等)都由出版商或作者保留。我认为它不应出现在 BSD 许可证中。”

我是否必须对微不足道的文件进行版权/许可? 即使是仅包含空 main() 的测试文件也应该有版权。没有版权的文件会让企业律师感到不安,这是阻碍采用的障碍。Boost 的版权和许可越统一,人们在将 Boost 发布的 CD 挂载到公司服务器上时遇到的问题就越少。

我可以在 Boost 之外的自己的项目中使用 Boost 许可证吗? 当然可以;对许可证本身的使用没有限制。

开源 (OSI) 徽标Boost 许可证是否“开源”? 是的。开源计划 在 2008 年初认证了 Boost 软件许可证 1.0

过渡

为了简化代码库向新的通用许可证的过渡,一些人决定为他们对使用新许可证的所有贡献提供 全面许可。希望这可以帮助维护人员在列表包含足够多的名称后切换到新的许可证,而无需针对每次更改重复请求。请考虑将您的姓名添加到列表中。

鸣谢

Dave Abrahams 领导了 Boost 提升许可证质量的努力。法律团队由哈佛大学伯克曼互联网与社会研究中心临床项目主任 Diane Cabell 领导。律师 Devin Smith,Nixon Peabody LLP,撰写了 Boost 许可证。哈佛大学法学院的 Eva Chan 为 Boost 问题提供了分析,并起草了各种法律文件。Boost 成员审查了许可证草案。Beman Dawes 编写了此网页。