Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

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 许可证中包含此类条款。

为什么版权声明中没有“保留所有权利”?(Why doesn't the copyright message say "All rights reserved"?) Devin Smith 说:“我认为它不属于任何被许可的东西(软件、电子文档等)的版权声明。它属于出售的书籍,事实上,所有权利(例如,复制书籍等)都保留给出版商或作者。我认为它不应该出现在 BSD 许可证中。”

我是否必须对琐碎的文件进行版权/许可?(Do I have to copyright/license trivial files?) 即使是只包含空 main() 的测试文件也应该有版权。没有版权的文件会让公司律师感到紧张,这会阻碍其被采用。Boost 中统一的版权和许可越多,人们在公司服务器上安装 Boost 发布 CD 时遇到的问题就越少。

我可以在 Boost 之外的自己的项目中使用 Boost 许可证吗?(Can I use the Boost license for my own projects outside Boost?) 当然可以;对许可证本身的使用没有任何限制。

开源 (OSI) 标识Boost 许可证是“开源”吗?(Is the Boost license "Open Source"?) 是的。开源促进会 于 2008 年初认证了 Boost 软件许可证 1.0

过渡(Transition)

为了简化代码库向新的通用许可证的过渡,一些人决定对其所有贡献授予通用许可以使用新许可证。这有望帮助维护者在列表中包含足够多的名称后切换到新许可证,而无需针对每个更改一遍又一遍地询问。请考虑将您的姓名添加到列表中。

致谢(Acknowledgements)

Dave Abrahams 领导了 Boost 开发更好许可证的工作。法律团队由哈佛法学院伯克曼互联网与社会中心临床项目主任Diane Cabell 领导。律师 Devin Smith,Nixon Peabody LLP,撰写了 Boost 许可证。哈佛法学院的 Eva Chan 贡献了对 Boost 问题的分析和各种法律文件的草案。Boost 成员审查了许可证草案。Beman Dawes 编写了此网页。