ClearlyDefined v2.0 增加了对 LicenseRefs 的支持
改进许可证数据的质量是 ClearlyDefined 技术路线图 的主要重点之一。因此,我们很高兴宣布发布 ClearlyDefined v2.0,它增加了 2,000 多个新的知名许可证,可以识别这些许可证。您可以在 ScanCode LicenseDB 中查看新的非 SPDX 许可证的完整列表。
简要回顾一下历史背景,当首次创建 ClearlyDefined 时,最初决定将报告的许可证限制为仅在 SPDX 许可证列表 上的许可证。随着团队使用 ClearlyDefined 数据,越来越明显的是,额外的许可证发现对于让用户更全面地了解他们依赖的项目非常重要。在先前版本的 ClearlyDefined 中,不在 SPDX 许可证列表 上的许可证在定义中表示为 NOASSERTION 或 OTHER。(请参阅2023 年每种语言最流行的许可证中许可证的细分。)ClearlyDefined 的 v2.0 版本 包括 ScanCode 更新到 v32 以及对 LicenseRefs 的支持,以识别非 SPDX 许可证。如果 ScanCode 识别出非 SPDX 许可证,则定义中的许可证现在将是带有前缀 LicenseRef-scancode- 的 LicenseRef。这提高了 ClearlyDefined 定义中的许可证覆盖率以及消费者准确构建许可证合规策略的能力。
ClearlyDefined 使用 SPDX 表达式识别定义中的许可证。SPDX 规范 有一种方法可以在许可证表达式中包含非 SPDX 许可证。
许可证表达式可以是SPDX 许可证列表上找到的单个许可证标识符;用户定义的许可证引用,用 LicenseRef-[idString] 表示;与 SPDX 例外结合使用的许可证标识符;或使用一小组定义的运算符(例如,AND、OR、WITH 和 +)构建的许可证标识符、许可证引用和例外的某种组合
— 摘自 SPDX 附件:SPDX 许可证表达式
定义的示例更改
坐标 | 许可证 BEFORE | 许可证 AFTER |
npm/npmjs/@alexa-games/sfb-story-debugger/2.1.0 | NOASSERTION | LicenseRef-.amazon.com.-AmznSL-1.0 |
注意:ClearlyDefined v2.0 还包括 ScanCode v32 的更新。
这对定义意味着什么?
本节包括对从 ClearlyDefined 请求定义时发生的情况的简化描述。这些示例仅指 ScanCode 工具。其他工具也会运行,并且以类似的方式处理。
当定义已存在时
通过 /definitions API 对定义的任何请求都会在返回定义之前进行几项检查
如果定义存在,它会检查定义是否是使用最新版本的 ClearlyDefined 服务创建的。
- 如果是,则按原样返回定义。
- 如果不是,它将使用先前为现有定义执行 harvest 期间运行的工具中的现有原始结果重新计算定义。在这种情况下,工具版本将早于 ScanCode v32。
注意:ClearlyDefined 不支持 v32 之前版本的 ScanCode 中的 LicenseRefs。对于早期版本的 ScanCode,ClearlyDefined 将任何 LicenseRefs 存储为 NOASSERTION。在某些情况下,当定义经过 curated 时,您可能会看到 OTHER。
当定义不存在时
如果定义不存在
- 它将发送一个 harvest 请求,该请求将运行最新版本的所有工具并生成原始结果。
- 从这些原始结果中,它将计算一个定义,其中可能包括 LicenseRef。
如果我仍然看到 NOASSERTION ,这意味着什么?
如果您在许可证表达式中看到 NOASSERTION,您可以检查定义以确定 “described”: “tools” 部分中 ScanCode 的版本。
如果 ScanCode 是早于 v32 的版本,您可以提交 harvest API 请求。这将运行 ClearlyDefined 现在支持更高版本的任何工具。工具完成后,将根据新结果重新计算定义。
在某些情况下,即使结果来自 ScanCode v32,您可能仍然会看到 NOASSERTION。当 ScanCode 版本已经是 v32 时,重新 harvest 不会更改定义。
这对工具意味着什么?
当添加 ScanCode 许可证到允许/拒绝列表时,请注意 ScanCode LicenseDB 列出的许可证不带 LicenseRef 前缀。来自 ScanCode 的所有 LicenseRefs 都将以 LicenseRef-scancode-开头。
使用允许列表的工具
重新计算的定义可能会更改许可证以包含您想要允许的 LicenseRef。所有可接受的新 LicenseRefs 都需要添加到您的允许列表中。我们正在采用的方法是在标记的软件包版本许可证中出现它们时添加它们。另一种方法是查看 ScanCode LicenseDB 以主动将 LicenseRefs 添加到您的允许列表中。
使用拒绝列表的工具
拒绝列表需要详尽无遗,以防止默认情况下允许新许可证。建议您查看 ScanCode LicenseDB 以确定是否要将 LicenseRefs 添加到拒绝列表。
注意:SPDX 许可证列表 也会随着时间推移而更改。定期审查以维护拒绝列表始终是一个好主意。
提供反馈
与任何主要版本更改一样,可能会出现意外行为。您可以联系我们提出问题、反馈或请求。在 参与进来 文档中找到与我们联系的方式。
如果您对实际的 LicenseRefs 有意见或问题,您应该联系 ScanCode License DB 维护者。
致谢
非常感谢贡献的开发人员及其组织对 ClearlyDefined 工作的支持。
按字母顺序排列,贡献者是…
- ajhenry (GitHub)
- brifl (Microsoft)
- elrayle (GitHub)
- jeff-luszcz (GitHub)
- ljones140 (GitHub)
- lumaxis (GitHub)
- mpcen (Microsoft)
- nickvidal (开源促进会)
- qtomlinson (SAP)
- RomanIakovlev (GitHub)
- yashkohli88 (SAP)
看到您希望 ClearlyDefined 做什么或可以做得更好吗?如果您有资源可以提供帮助,我们还有工作要做,以进一步提高数据质量、性能和可持续性。我们很乐意收到您的来信。