常见问题

非官方翻译版本有:

本页列出了处理许可时的常见问题及其答案以及版权,特别是REUSE的采用。请注意这里没有什么是法律建议。

概述

我没有时间。你能给我最快的总结吗?

我们希望改进人们许可其软件项目的方式,以便它是简单、全面、明确且机器可读。我们建议实现这一目标的三个步骤:

1.选择并提供许可证

选择一个自由软件许可证用于您的项目。在中查找许可证的SPDX标识符SPDX公司许可证列表。下载您的许可证文本来自的许可证许可证列表数据存储库并将其放入许可证/目录。

2.在每个文件中添加版权和许可信息

然后,对于所有文件,编辑标题以包含以下内容:

#SPDX-FileCopyrightText:[年][版权所有人]<[电子邮件地址]>##SPDX许可证标识符:[Identifier]

3.确认REUSE合规性

使用REUSE工具自动化一些这些步骤,并检查您是否一切都正确。

什么是SPDX?

SPDX代表软件包数据交换。它是一个项目由Linux基础和岩石在此基础上构建REUSE。SPDX定义了共享版权的标准化方式以及在项目和人员之间授权信息。最重要的是重复使用,SPDX保持SPDX许可证列表,其中为许多许可证定义标准化标识符。

版权

版权是一种法律结构,授予某人对创造性工作。最重要的专有权是在名称中:制作副本。只有版权持有者才能提供其为人们工作。你不需要做任何事情来获得版权。只要你做一件创造性的作品,你会立刻获得它的版权。

通常作者是版权所有者,但通常版权是转让的提交人的雇主。

Creative Commons在其经常问题.

如果您希望其他人能够自由使用、学习和共享您的代码,您必须根据许可证发布。

通常,我们建议您使用SPDX-FileCopyrightText:[年][版权所有人]<[联系地址]>。您可以选择删除除版权之外的项目支架,必须始终包括在内。我们建议您包括所有项目,然而。

该规范包括关于版权确切格式的一节通知。请参阅规范下一个问题.

本规范列出了以下有效的版权声明:

SPDX文件版权文本:2019 Jane Doe<jane@example.com>SPDX文件版权文本:©2019 John Doe<john@example.com>SPDX-FileCopyrightText:示例项目的参与者<https://project.example.com>SPDX-FileCopyrightText:2023 Alice Hack和(其他)Project X的贡献者<https://git.example.com/alicehack/projectx/CONTRIBUTORS.md>SPDX-SnippetCopyrightText:(C)合作示例<info@coop.example.com>©示例公司<https://corp.example.com>版权所有2016,2018-2019 Joe Anybody版权所有(c)Alice,保留部分权利

其中,强烈推荐前两个。其他主要存在与现有惯例兼容。

一般来说,有四个选项供您选择:

  1. 首次出版年份。
  2. 最新出版物的年份。
  3. 所有年份的出版物,范围(例如2017-2019年)或单独条目(例如,2017年、2018年、2019年)。
  4. 不包括任何年份。

你选择哪一个选项最终取决于你。这个文章为使用文件首次发布年份提供了一个很好的理由。

哪些文件受版权保护?

所有原创文件均受版权保护。本质上,如果有人坐下来在键盘上输入自己的原始想法,那么个人拥有该输出的版权。常见的例子是源代码,文档、音频和视频。

然而,也有一些边缘情况。例如,程序打印(“你好,重复使用!”)可能达不到原创的门槛。同样,数据文件和配置文件也可能不满足该阈值。对于这些文件,请参见这个问题.

在这些资源中,我们区分了版权所有者和作者。作者(也称为创作者)是指坐下来并创作了一部作品。把作者想象成程序员、作家或艺术家。

版权所有者是对该作品拥有独占权的人。通常,作者和版权所有者是相同的。然而,如果作者是由雇主支付报酬来创造工作,雇主通常是版权所有者。

请记住,在某些司法管辖区,“作者”一词通常用作“版权所有者”的同义词。在其他司法管辖区,作者保留一些对其作品的权利,即使他们不是版权所有者。

这里的核心问题是:在什么时候我应该将自己视为版权持有文件?这由你决定。这可能会有所帮助一致并将标签添加到您接触的每个文件中,但可能更多在你的项目中达成共识是很有价值的。

许可

什么是许可证?

版权与软件有关的一个问题是,它制作软件默认情况下不可共享。许可证改变了这一点。许可证定义了术语版权持有人允许许可接收人使用软件。

如果许可证允许接收人使用、学习、分享和改善软件,然后该软件是自由软件.

什么是版权许可?许可证?

自由软件许可有两大类;copyleft和许可证。

版权许可授予您使用、学习、共享和改进作品的权利软件在一个严格的条件下。如果您对程序进行任何更改并与其他人共享您的程序版本,您必须共享您的在与原始许可相同的许可下进行更改。众所周知的copyleft许可证是这个GNU通用公共许可证版本.

许可证授予您相同的自由软件权利,但没有包括此条件。有人可能会随意拿许可的软件,对其进行更改,并保留更改后的版本专有的。众所周知的许可证是Apache许可证,版本2.

我应该选择哪个许可证?

始终选择一个自由软件许可证,即向接收者提供的许可证使用、研究、共享和改进软件的自由。除此之外您选择的许可证由您决定。如果您正在为现有项目捐款,您应该在与项目相同的许可证下发布更改。否则自由软件基础,choosealicense.com、和连接.eu有一些好的建议。请注意,这些资源都强调了不同的价值观,也有各自的偏见。

最重要的是,如果你重视自由,你应该选择一个许可证软件自由软件.

什么是许可例外,我该如何处理它们?

许可例外是对许可的添加或更改,通常用于允许使用原始代码中不允许的代码许可证。它通常由编译器使用,编译器代码的一部分可能会在这里结束在生成的二进制文件中。该例外可能会放弃对部分代码的权利以二进制文件结束。

例外情况的处理与许可几乎相同。为了组合使用以下标记标记文件:SPDX-License-Identifier:GPL-3.0或later,GCC-例外-3.1.

您可以在以下位置找到常见异常的列表:SPDX许可证例外情况.

许可兼容性是如何工作的?

自由软件许可证通常在细节上有所不同,但始终赋予您以下权利使用、学习、共享和改进软件。许多许可证都是兼容的,这意味着您可以在同一个项目中使用来自多个许可证的代码,并且仍然能够同时遵守每个许可证的条款。

一些许可证是比其他人更不宽容,这意味着在两个许可证下包含代码的组合作品必须有效遵守最不允许的许可证条款。

一些许可证具有互斥要求。例如CC-BY-NC-4.0许可证具有禁止将作品用于商业目的的条款,以及GPL-3.0级激光有一个条款说你不能施加GPL中没有的额外限制许可证。因为GPL许可证没有关于商业目的的条款,这两个许可证不能同时得到尊重,它们被视为不相容的。

究竟哪些许可证是兼容的是一个难题取决于你想要什么。整合不同许可的工作可能意味着必须遵守您不想遵守的许可条款。

具体来说,与GNU GPL有关,此GNU文章GNU的许可证列表可以帮助你工作out兼容性。

值得注意的是,REUSE不能帮助您解析许可证兼容性。REUSE的目标是帮助您全面申报您的授权元数据,而不是检查元数据是否正确或有效。为此需要不同的工具和流程。

我还要把我的许可证信息放在哪里?

将所有单个文件标记为SPDX许可证标识符标签有很长的路要走明确传达项目的许可信息,但它有助于以自然语言交流许可信息。项目的自述文件,请随时提供许可证摘要信息,或者简单地将读者重定向到您的许可证/目录。

此外,许多软件包托管网站希望您声明许可包裹信息。例如REUSE的pyproject.toml文件工具声明以Python打包所需的格式使用的所有许可证基础设施。

我只有一个许可文件。我还应该创建一个LICENSES目录吗?

对。这可能看起来无关,但它可以防止将来在不同情况下出现混淆采用许可代码。通过将所有许可证保存在一个目录中程序用户很容易找到他们需要遵守的所有许可证眨眼之间。

然而,除此之外,您可以保留您的许可证/复制如果您需要,请提交想要。请参阅这个问题.

我应该在我的许可证文件中放置注释标题吗?

您不应该编辑许可证文件。请参阅这个问题.

我应该编辑许可证文件吗?

您不应该编辑许可证文件。使用现有许可证时应该一字不差地复制它。

一些许可证,如MIT和BSD系列许可证,有一行表示“版权所有(c)[年份][版权所有人]”。请参阅问题关于如何处理这些许可证。

有很多原因可以解释为什么您不应该更改许可证文本,但如果您这样做了如果更改文本,则应为此许可证使用不同的SPDX标识符。请参阅这个问题.

如果您发现某些信息不正确,您可以自由调整。否则,留下版权声明和许可通常是一个好主意免责声明完好无损。但这里并没有一刀切的答案。

我可以从缩小的代码(例如JavaScript)中删除许可证和版权信息吗?

你可以,但你可能不应该。许多小型飞机都有一个选项,允许您可以保留标题注释。如果存在此选项,则应使用它,尤其是当您使用授权您包含许可证的许可证时免责声明。

我是否需要在存储库中同时包含GPL-3.0或GPL-3.0?

GPL系列的成员在SPDX许可证列表中单独列出为-即使许可证文本相同,也只能是和-或-later。如果你有代码仅包含在其中一个许可证下,我们建议您只包含一个许可证。

如果您在only许可证和-or-later许可证下都有代码,我们建议您分别包含这两个许可证。

如果我只使用LGPL-3.0阶激光,是否还应包括GPL-3.0阶激光文本?

LGPL许可证文本是GPL许可证文本的附录。如果您提供只有向下游发送LGPL许可证文本,您实际上没有向他们提供完整的许可证。因此,您还应该提供您的许可证/目录。可重复使用过梁投诉您的文件都没有使用GPL-3.0或激光许可证。要解决选择一个要授权的文件LGPL-3.0阶或GPL-3.0阶.

REUSE是否有助于我获得依赖项的许可?

不,这超出了重用的范围。如果您需要检查您的项目尊重其所有依赖项的许可证,无论您是否无意中引入了带有不需要的许可证的依赖项,您需要不同的工具和流程。上列出的一些工具比较页面可能会对你有所帮助。

我该如何…

…安装REUSE工具?

请参阅安装说明和附带的工具文档https://reuse.readthedocs.io/en/stable/readme.html#安装.不足之处是:

$pipx安装重用美元pipx ensurepath$reuse--帮助

…创建软件BOM表

安装重用工具并运行重用spdx-o重用.spdx在项目根目录中创建SPDX公司文件.

…是否将版权和许可信息添加到未注释的文件?

二进制文件(如图像或视频)或某些文本文件(如JSON)无法使用REUSE标题进行注释,但它们仍应具有版权和许可信息。

有两种方法可以将信息与此类文件关联:

  1. 在其旁边添加带有后缀的文件.许可证(例如。cat.jpg.许可证对于一个名为猫.jpg)并在该文件中写入注释头。这个原始文件的内容随后被忽略,这在在某些情况下。
  2. 通过授权文件REUSE.toml公司,一个REUSE配置文件。

…批量许可整个目录?

如果可能,您应该向每个文件添加REUSE头。然而,有在某些情况下,不希望或不可能将REUSE头添加到目录中的每个文件。例如:

  • 不允许您编辑这些文件(因为它们是测试文件,或者来自第三方)。
  • 正在添加.许可证文件会破坏构建系统,尤其是图像和视频。

您可以使用REUSE.toml公司文件,通常放置在项目的根目录,但可以将其放置在相对于文件的任何位置。文件示例如下:

版本=1

#resources/img中所有文件的简单全局/
[[注释]]路径=“资源/img/*”
SPDX文件版权文本=“2024 Jane Doe<jane@example.com>"
SPDX许可证标识符=“CC0-1.0”

#资源/vid/中的所有文件,具有多个版权所有者
[[注释]]路径=“资源/vid/*”
SPDX文件版权文本=[    “2024 Jane Doe<jane@example.com>",    “2024 John Doe<john@example.com>"
]SPDX许可证标识符=“CC-BY-4.0”

#tests/resources/中所有文件和目录的递归全局,
#这些文件的REUSE信息被覆盖。
[[注释]]路径=“测试/资源/**”
优先权=“覆盖”
SPDX文件版权文本=“2024 Jane Doe<jane@example.com>"
SPDX许可证标识符=“CC0-1.0”

#两个计算机生成的文件。
[[注释]]路径=[    “诗歌.锁”,    “requirements.txt”
]SPDX文件版权文本=“无”
SPDX许可证标识符=“CC0-1.0”

这个再利用规范更彻底地记录如何REUSE.toml公司可以使用。

…覆盖错误的REUSE信息?

您的文件可能包含错误的版权或许可标签。这可能是故意的,或者你有充分的理由不编辑这些文件。您有几个选项可以指示REUSE忽略错误信息并使用正确的信息。

  1. 使用这个重新使用IgnoreStart重复-忽略结束标签文件内部。
  2. 使用.许可证文件覆盖文件.
  3. 使用REUSE.toml公司文件使用优先级=“覆盖”键值。

…在不编辑标题的情况下向文件中添加其他REUSE信息?

有一种特定的拐角情况,其中文件可能包含有效的REUSE信息(通常是版权所有者),但您不希望编辑此文件的手动注释页眉,即使有更多信息应适用到此文件。这个拐角案例的一个很好的例子是.po型由提供的文件翻译人员。这些可能包含也可能不包含版权和许可信息,取决于翻译人员的翻译软件和设置。

您可以使用precence=“聚合”您的关键价值REUSE.toml公司文件。示例如下这个:

[[注释]]路径=“po/*.po”
优先权=“聚合”
SPDX文件版权文本=“我的项目参与者”
SPDX许可证标识符=“GPL-3.0或更高版本”

在上面的示例中,“我的项目的参与者”被添加到文件的版权所有人(如有),并在文件的许可证(如果有)。

……抄袭别人的作品?

如果其他人已将其作品提供给您使用和复制,您可以将他们的工作融入到你的项目中。当你把工作放在文件,您应该添加SPDX文件版权文本版权标签持有人和SPDX许可证标识符在其下的许可证的标记这部作品已经面世。

如果该作品的许可证与您的项目不同,您应该验证许可证是否兼容,并添加新的项目的许可证。

……复制以假名或昵称发表的作品?

您可以将笔名列为版权所有者。一些项目不允许匿名贡献。

在继续之前,务必首先确保您可以找到版权和其他地方的许可信息。某些项目仅在中包含此信息根目录或其README文件中。

如果你找不到版权声明,你可以试着自己猜一下作者的版权所有者。请参阅问题有关区别的更多信息。如有疑问,请联系作者进行澄清。

提交人可能希望匿名,这是他们的权利。可以写入无资产作为版权持有人.

如果作品没有许可证,则意味着你无权抄写。如果你认为这是一个错误,而作者显然是故意的为了能够复制这部作品,你应该联系作者并要求他们授权他们的工作。请随时向他们推荐https://reuse软件.

…从REUSE符合性测试中排除文件?

如果该文件是一个构建工件,并且您使用Git,只需确保该文件由您的.gitignore(.git忽略)文件。其他VCS忽略也是如此机制。

否则,您无法将文件排除在REUSE符合性测试之外。它会走的完全违背重用的目的:确保每个文件都有一个版权和许可证标签。

如果确实要排除文件,请考虑使用CC0-1.0级此的许可证文件。通过这样做,您将文件放在公共领域,或您所在国家的相等的.

如果您想从REUSE遵从性中“排除”整个目录测试,您可以使用REUSE.toml公司.

…将某些行排除在重复使用符合性测试之外?

为了使工具忽略包含可能错误地被检测为版权或许可声明,您可以将其包装在这两条评论重复-忽略启动重复-忽略结束.

请注意,这不能用来忽略有效的版权和许可您自己或第三方提供的信息。只能使用忽略块用于标记可能触发误报检测和错误的块。

包含混淆重复使用工具:

#SPDX文件版权文本:2021 Jane Doe
#
#SPDX-License-Identifier:GPL-3.0或激光

回声 “SPDX文件版权文本:$(日期+“%Y”)约翰·多伊”>文件.txt回声 “SPDX-License-Identifier:MIT”>>文件.txt

这就是可以忽略该节的方式:

#SPDX文件版权文本:2021 Jane Doe
#
#SPDX-License-Identifier:GPL-3.0或激光

#重复-忽略启动
回声 “SPDX文件版权文本:$(日期+“%Y”)约翰·多伊”>文件.txt回声 “SPDX-License-Identifier:MIT”>>文件.txt#重复-忽略结束

…处理不可复制的文件?

某些文件,例如由代码生成的文件,或不包含创意表达可能不受版权保护。然而,REUSE要求许可每个文件的信息,因此这里存在冲突。因为我们不允许排除文件,必须记录一些信息这样的文件。

您有两个选项:

  1. 只需使用此文件的常规版权和许可即可。什么都没有这阻止了你对自己的作品“声称”版权,即使是法院可能会假设这些文件是不可版权的。
  2. 使用CC0-1.0级许可证或另一个类似的公共领域奉献。

您可以选择使用版权标记,例如SPDX文件版权文本:无声称没有版权所有者。

这些文件的原因必须获得执照是因为理性的头脑可以关于原创性的门槛不同。你可以考虑这样一个文件不值得许可信息,但下游可能不同意并认为该文件属于版权所有,有效地禁止他们在没有许可证的情况下使用它。

需要注意的是,您只能将许可证应用于自己的作品。如果该文件是由其他人编写的,您应该声明他们的版权并标题中的license。如果没有此类信息,您应该联系作者。

……单独声明文件部分的版权和许可?

您可能会将一些第三方代码复制到较大的文件中。你可以将版权和许可添加到文件头,或者可以在线添加围绕这段新代码的注释片段。

这样一个带注释的代码段块必须以开头SPDX-Snippet开始标记其以…开头和结尾SPDX代码段结束标记代码段的结尾。

请注意,SPDX标签必须以开头SPDX代码段片段内部,这意味着片段中(唯一)正确的版权声明是SPDX-Snippet版权文本.SPDX许可证标识符是一个例外。

例子:

#SPDX-Snippet开始#SPDX-License-Identifier:麻省理工学院#SPDX-Snippet版权文本:2023 Jane Doe<jane@example.com>{$snippet_code_goes_here}#SPDX代码段结束

片段可以嵌套,这表示为SPDX-Snippet开始/SPDX代码段结束其他配对中的配对,以相同的方式括号嵌套在数学表达式中。如果是嵌套的片段,SPDX文件标记被认为应用于最内层的片段。例子:

#SPDX-Snippet开始#SPDX-License-Identifier:麻省理工学院#SPDX-Snippet版权文本:2023 Jane Doe<jane@example.com>{$snippet_code_under_MIT}#SPDX-Snippet开始#SPDX-License-Identifier:BSD-2-条款#SPDX-SnippetCopyrightText:版权示例公司{$snippet_code_under_BSD-2-子句}#SPDX代码段结束{$more_snippet_code_under_MIT}#SPDX代码段结束

进一步规定片段,例如通过注释“Foo类是从项目栏复制的”。

使用代码段的一个可能替代方法是从文件,并将其保存在自己的文件中。

…使用不在SPDX许可证列表中的许可证?

如果您有一个自定义或修改的许可证,但该许可证未显示在SPDX中许可证列表,将您的许可证放在文件中许可证/许可证参考-MyLicense.txt。通过使用前缀命名许可证许可证参考-,使用SPDX的工具仍然能够识别您的许可证。

在本例中,此自定义许可证涵盖的文件中的标头可能看起来如下所示:

#SPDX-License-Identifier:LicenseRef-MyLicense#SPDX文件版权文本:2017 Jane Doe<jane@example.com>

在处理的多个不同变体时,这可能也是必要的可自定义的许可证文本文件,如MIT或BSD.

请注意:强烈建议确定并批准使用许可证.

…使用自定义许可例外?

无法创建自定义异常。相反,你可以创建自定义许可证这嵌入了异常。

……正确申报多重许可?

您应该始终在许可证/目录。

应用于文件的正确SPDX许可证表达式取决于意图。如果其中的所有代码都是在多个许可证下许可的,并且被许可方可以选择使用哪种许可证SPDX-License-Identifier:MPL-1.1或GPL-2.0或L或LGPL-2.1或L,作为Firefox的部分功能。

如果文件中的所有代码都是在多个许可证下许可的,并且用户必须同时遵守所有许可,使用SPDX许可证标识符:LGPL-2.0或更高版本AND AML,可以在Simple中找到DirectMedia层(SDL)。

如果文件中的所有代码都是在一个或另一个许可证下许可的(例如,所有代码仅在GPL-2.0下,但有一个函数在MIT下),使用片段.

您可以阅读有关SPDX表达式的更多信息在中规范.

…处理包含版权声明的许可证文本,如MIT/BSD?

可以修改一些许可证文本,例如MIT或BSD系列许可证包含自定义版权声明。

如果您在这样的许可下发布代码,我们建议您添加项目的许可文本没有任何修改。一个很好的方法使用REUSE帮助工具(例如。,重用下载MIT). 而不是将版权声明插入许可文本本身,您可以将版权声明添加到项目的文件中遵循正常的重复使用最佳实践。

当重用来自使用MIT/BSD许可证的多个源的代码时很快就会遇到问题。麻省理工学院许可证和BSD许可证系列包含一个子句,该子句要求重分发者(即您)复制版权声明和许可证文本。例如,项目A和项目B可能两者都使用MIT许可,但实际的许可文件会有所不同,因为它们中嵌入了不同的版权声明。如果你想重复使用这两个项目中的代码,您可能不确定将副本放在何处这些项目的许可文件。

我们建议两种选择:

  1. 最实用的解决方案是将未修改的许可文本(即没有任何版权声明的许可证文本模板)许可证/文件夹。然后将上游项目的版权声明嵌入到和往常一样,您重用了相应的源代码文件。
  2. 更彻底和劳动密集型的解决方案是治疗其中任何一种带有修改过的版权声明的许可文本自定义许可证使用许可证参考然而,如果您重用来自许多第三方的代码根据这些许可证,您可能会得到许多这样的自定义许可证。

一些文件由许多人编辑,并且会有一个非常长的列表标题中的版权所有者。这可能在美学上令人不快,但没有错误。

如果你不想处理这么多版权声明Chromium等项目通过使用“版权所有(c)2013Chromium Authors”作为其版权标签。你可以考虑这样做,但是那么你应该在一个单独的文件中保存版权所有者和作者的列表在您的项目中。

为什么要重复使用

我真的需要在所有文件中包含许可和版权标题吗?我为什么要在乎?

拥有复杂版权和许可证的大型项目受益最多通过在混乱中塑造秩序和消除不明确许可证的歧义来重复使用。在每个文件中放置一个头文件是获得这种顺序的必要障碍以及清晰度。这种元数据需要放在某处,我们认为它应该尽可能接近数据,就像每个文件中的头一样。

但即使是较小的项目或具有简单许可证的项目也会从重用中受益。无论好坏,许可都是自由软件运动的基石。正是它使共享成为可能,在copyleft的情况下,它使我们能够保持软件免费。获得许可证很重要,否则人们就不会能够使用您的软件,REUSE是帮助您这个。

此外,即使您的项目很简单现在,情况可能并非总是如此。如果你从另一个不同授权的项目中复制了一些代码通常有义务正确分配和/或提供随附的许可证文本。通过尽早实现REUSE,可以更容易地识别代码第三方代码并正确跟踪这些内容。

最后,实现REUSE是对其他人的一项小服务。作为一名软件工程师,当您发现一些专门为您试图解决的问题,但您无法找到许可有效地使代码不可能重用。重新使用帮助您帮助其他开发人员重用您的代码,这是一个很好的自由软件的好处。

我习惯用不同的方式做事;我不能继续做我一直在做的事吗?

有些人第一次遇到REUSE时,会遇到以下几件事与他们习惯的截然不同。他们错过了冗长的法律宣传在文件顶部,想念复制/许可证根目录中的文件存储库,请这样想.许可证文件把目录弄得乱七八糟奇怪的是,即使是不重要的非代码文件也会获得许可头。这个在这种情况下,重复使用的差异看起来很奇怪。

REUSE的主要目标之一是与现有最佳实践兼容可能。然而,它明显地打破了一些旧传统。我们相信重复使用对它来说更好。通过开辟新的领域,重复使用变得更简单、更多全面,比我们试图做到的更明确保持与旧传统的兼容性。

没有什么可以阻止您在标题中添加长的法律广告或复制目录根目录中的文件无论如何尽管如此。这些东西可以做你喜欢的事。然而,再利用的其他方面是不可避免的。REUSE坚持认为每个文件都应该包含许可信息,因此,即使是最小的文件也具有许可元数据。这些东西是我们希望这些怪癖能够很快就变得司空见惯了,这样它们就不再那么奇怪了不再。

为什么REUSE不使用图片、SVG、文本文档等中的元数据字段。?

有几种文件格式支持在文件中存储元数据信息它本身,有些甚至包含版权和许可的字段。然而,我们确实如此出于实际原因,在REUSE中不支持这些:

  1. 对于人类和机器来说,发现这一点并不总是小事一桩信息。REUSE打算让寻找许可和版权变得简单信息。
  2. 一些工具编辑元数据字段,例如,使文件变小或删除潜在的敏感个人信息。这也可以擦掉你的或者其他人的版权信息,很难发现这个错误。
  3. 对于某些文件类型,存在竞争性和非标准化的存储方法元数据。

这个问题也与为什么我们不能使用版本控制来记录版权.

另一个问题,我们区分版权所有者和作者并不总是相同的。版本控制通常只记录作者身份,因此不适合执行以下任务录音版权。

另一个障碍是版本控制历史记录可能包含错误这样的错误需要重写历史,导致所有贡献者必须重新下载新的行李箱。

版本控制的另一个问题是责备命令通常(mis)用于逐行查找作者仅显示该行中的最后一次提交,即使只是修复输入错误或将代码块移动到其他位置。

发生了什么.重用/dep5?

REUSE当前使用REUSE.toml公司批量许可文件.但是在规范3.2版之前,使用了REUSE.重用/dep5,一个几乎是的文字复制环境保护部5/debian/版权.

在3.2版中,.重用/dep5虽然已弃用,但仍受支持与…互斥REUSE.toml公司。您可以使用重用转换器-dep5自动转换.重用/dep5将文件转换为语义等价的REUSE.toml公司文件。

.重用/dep5被放弃支持重复使用.toml出于各种原因:

  • debian/版权从来都不是一个有目的的游戏。Debian使用这个文件,以整体声明软件包的许可;REUSE使用它填充许可差距。
  • .重用/dep5如果文件的许可信息不明确信息在文件本身和.重用/dep5。哪个是否应用了信息?在3.2版中,此信息明确聚合。添加新键以显式声明优先级困难,因为…
  • .重用/dep5很难解析。中有一个Python模块蟒蛇,但格式是定制的,不灵活。REUSE的核心目标之一是机器可读,而这种自定义格式不利于实现这一目的。
  • TOML更加灵活。你可以写任何你想要的键值,可能是有助于自定义工作流。
  • TOML更容易编写。开发人员已经知道如何编写TOML,并且不需要让自己习惯于自定义格式。
  • REUSE.toml公司可以放置在相对于文件的任何位置,并且可以嵌套。这个对monorepos或monorepo-like项目有很大帮助。

为了兼容性,.重用/dep5将继续支持相当长一段时间的贬低;至少到2029年。