教程:如何遵守REUSE

本教程解释了如何制作软件项目的基本方法符合REUSE标准。在本文档末尾,您的所有文件都将清楚地他们的版权和许可已标记,您可以使用验证REUSE辅助工具。

通过三个简单的步骤可以使您的项目符合REUSE标准:

  1. 选择并提供许可证
  2. 将版权和许可证信息添加到每个文件
  3. 确认REUSE合规性

在本教程中,我们假设您的项目如下所示:

项目/├── 国际货币基金组织/   ├── 猫.jpg   └── 狗.jpg├── src公司/   └── 主.c├── .吉特忽略├── 生成文件└── 自述.md

如果您想自己复制本教程中的步骤计算机,您可以克隆例子储存库.分公司不合规的与上面的结构匹配,而主要的分支是成功的此存储库的结果。

对于这些步骤中的每一步,您首先将了解如何实现它们手动操作。然而REUSE助手工具支持您完成大多数任务,必要的命令也将列在可折叠的盒。我们建议先了解基本原理,然后再执行工具的命令。

1.选择并提供许可证

你需要做的第一件事是选择许可证。对于本教程,我们假设您选择了GNU通用公共许可证(GPL)v3.0或任何更高版本。不仅仅是简单的选择一个许可证,您需要将该许可证放在您的项目目录中。

您可以在SPDX许可证列表.SPDX是用于传输许可证和版权信息的开放标准。每个许可证都由缩写唯一标识SPDX许可证标识符。您的SPDX许可证标识符选择的许可证是GPL-3.0或激光。

您可以创建许可证项目根目录中包含所有您在项目中使用的许可证。然后从下载许可证这个许可证列表数据存储库并将其放入许可证目录。许可证的名称应为其SPDX许可证标识符,后跟文件扩展名(在此例如,GPL-3.0-or-later.txt)。

您可以使用初始化项目重用init。在交互式对话框,您可以定义项目的某些属性一个或多个许可证。最终,这些许可证将自动下载到正确的位置。

这个重用下载命令使您能够下载特定的许可证。重用下载GPL-3.0阶激光将完成任务如上述手册说明所述。正在运行重用下载--全部自动下载REUSE帮助工具所需的所有许可证检测到正在您的项目中使用。

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

现在您有了许可证,您需要在相关文件中指出这些文件属于该许可证的范围。您编辑的评论标题src/main。c(c)像这样的:

/**SPDX文件版权文本:2019 Jane Doe<jane@example.com>**SPDX-License-Identifier:GPL-3.0或激光*/

这个SPDX文件版权文本tag记录了的出版年份和版权所有者文件的内容。你可以阅读更多关于出版年份至使用什么版权所有者在常见问题解答中。

这个SPDX许可证标识符标记后跟一个有效的SPDX许可证表达式通常只有SPDX许可证的许可证标识符。

每个文件必须始终在标题中包含这两个标记。你可以这样做如果您有多个版权所有者或许可证,请多次使用标签。

在示例项目中,您还可以编辑生成文件自述.md使用这个标头信息,当然还有相应的注释语法。

这个重用addheader命令有助于添加许可和版权信息添加到您的文件中。对于上述任务,使用以下命令将完成以下工作:

重用addheader--版权=“无名氏<jane@example.com>”--许可证=“GPL-3.0级”src/main.c生成文件README.md

请参阅工具文档关于添加页眉有关注释样式和模板等更多选项

二进制文件和未注释文件

您还希望在GPL-3.0或激光下许可您的图像文件。不幸的是,图像和其他二进制文件没有注释头人们可以很容易地进行编辑。其他示例包括自动生成的文件和注释不重要的某些数据和配置文件。

有一个简单的技巧可以绕过这一点。创建文件cat.jpg.许可证dog.jpg.许可证,每个都包含有关许可证和版权所有者如上所述。

REUSE助手工具应自动检测二进制文件和因此自动创建相应的.许可证文件。

如果没有,或者您想强制执行,请添加--强制许可证addheader命令的参数。所以命令对于上述任务,可能如下所示:

重用addheader--版权=“无名氏<jane@example.com>"--许可证=“GPL-3.0级”--强制取消许可img/cat.jpg img/dog.jpg

更改许可信息

你发现猫和狗的照片没有根据GPL,但根据知识共享署名4.0国际,由马克斯·梅尔。

此许可证的SPDX许可证标识符为CC-BY-4.0。您可以创建文件许可证/CC-BY-4.0.txt,遵循您用于的相同步骤GPL-3.0级。

然后编辑cat.jpg.许可证dog.jpg.许可证可以这样说:

SPDX文件版权文本:2019 Max Mehl<max.mehl@fsfe.org>SPDX-License-Identifier:CC-BY-4.0

截至目前,该工具没有提供替换现有工具的方法符合REUSE的版权和许可信息。一次跑步这个添加页眉命令不会替换但会扩展.许可证带有两行附加文字说明Max Mehl和CC-BY-4.0许可证。因此,您必须手动更新这些内容。

然而下载之后的命令将允许您下载新许可证自动更新,因此重用下载CC-BY-4.0或者简单地重用下载--全部.

构建工件

当您编译程序时,您会生成一些构建工件,例如src/main。。您无需为这些用户提供任何许可信息文件夹。只需使用您的.gitignore(.git忽略)文件忽略这些构建工件。这个REUSE工具将尊重.gitignore(.git忽略).

不重要的文件

您的项目中可能会有找不到的文件特别是受版权保护的,例如配置文件,例如.gitignore(.git忽略)。凭直觉,您可能不想许可这些文件,但重用的基本思想是,所有文件都将清楚地显示版权和许可标记。

如果您不对该文件行使任何版权,可以使用CC0公司许可证。这是功能与将文件放入公共域相同。将文件编辑为包含:

#SPDX文件版权文本:2019 Jane Doe<jane@example.com>##SPDX-License-Identifier:CC0-1.0

因此,您必须在许可证/目录,就像之前的GPL-3.0-or和CC-BY-4.0一样。

有关受版权保护的文件的更多信息,请参阅重复使用常见问题.

如前所述添加页眉下载命令将完成上述步骤:

重用addheader--版权=“无名氏<jane@example.com>"--许可证=“CC0-1.0”.gitignore(.git忽略)
重用下载--全部

结果

您的项目树现在如下所示:

项目/├── 国际货币基金组织/   ├── 猫.jpg   ├── cat.jpg.许可证   ├── 狗.jpg   └── dog.jpg许可证├── 许可证/   ⑪——CC0-1.0.txt文件   ├── CC-BY-4.0.txt(中文)   └── GPL-3.0或字母.txt├── src公司/   └── 主.c├── .吉特忽略├── 生成文件└── 自述.md

3.确认REUSE合规性

现在您已经标记了所有文件的版权和许可是时候检查一下你是否没有遗漏任何东西了。为此,我们提供了一个帮助工具供您使用。你可以阅读满的文档,或阅读下面的快速步骤。

遵循安装说明可用于多个平台。现在转到项目目录并运行linter。

$cd路径/to/project/$重新使用皮棉#总结*错误的许可证:*弃用的许可证:*无文件扩展名的许可证:*缺少许可证:*未使用的许可证:*使用的许可证:CC-BY-4.0、CC0-1.0、GPL-3.0或-later*读取错误:0*包含版权信息的文件:6/6*包含许可证信息的文件:6/6祝贺 你!您的项目符合REUSE规范3.0版:-)

正如您在最后一行中看到的,该工具确认您的项目是现在符合REUSE!要了解不同部分的含义,请看一下lint命令的文档.

获取帮助

通过本教程,您了解了REUSE和三个基本正确许可您的软件项目的步骤–做得好!但尽管我们已经涵盖了一些边缘案例,您可能很快就会遇到更多问题。但是别担心,我们是来帮忙的

  • 我们的常见问题覆盖通用问题以及特殊情况,并将不断更新。

  • 完整的REUSE规范正式地介绍了REUSE和实现兼容的方法。

  • 这个重用工具文档描写REUSE工具的安装和使用。

  • 我们的对开发人员的帮助列出了各种为程序员提供的资源,如工具、API或如何包含检入CI/CD工作流。

如果以上链接都无法回答您的问题,请联系我们签署人:

  • 在上打开问题重用网站对于关于教程、常见问题解答或规范的问题;

  • 在上打开问题重用工具对于关于REUSE工具的问题;

  • 向FSFE发送电子邮件请注意我们更喜欢问题,因为其他人可以公开搜索它们。

感谢您为使软件可重用做出的宝贵贡献!