Boost C++ 库

...世界上最受推崇和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

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)许可证在技术上是中立的(即,它不[需要]明确表示同意才能在许可人和被许可人之间建立合同)。

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

FAQ

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 的本地副本和 Web 副本都应该链接到。如有疑问,请参考此页面的 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 领导。律师 Nixon Peabody LLP 的 Devin Smith 撰写了 Boost 许可证。哈佛法学院的 Eva Chan 贡献了对 Boost 问题的分析和各种法律文件的草稿。Boost 成员审查了许可证草案。Beman Dawes 撰写了此网页。