ClearlyDefined 在 ORT 社区日

博世在柏林的园区再次迎来了 ORT 社区日,这是由 OSS Review Toolkit (ORT) 社区组织的年度活动。ORT 是一套开源工具,用于自动化软件合规性检查。

在为期两天的活动中,来自 Double Open 和 NexB 等初创公司以及梅赛德斯-奔驰、大众、CARIAD、保时捷、Here Technologies、EPAM、德勤、索尼、蔡司、Fraunhofer 和罗氏等大型公司的成员齐聚一堂,讨论围绕软件供应链合规性的最佳实践。

ClearlyDefined 社区在活动中占据了重要地位,GitHub 的 E. Lynette Rayle 和 Lukas Spieß 以及 SAP 的 Qing Tomlinson 代表了该社区。我很荣幸代表 开源促进会 担任 ClearlyDefined 的社区经理。ClearlyDefined 的使命是众包一个全球软件组件许可元数据数据库,涵盖所有已发布的软件组件。我们将 ORT 社区视为实现这一使命的重要合作伙伴。

相关演讲

ORT 社区日期间有几个有趣的演讲。以下是我认为与 ClearlyDefined 最相关的演讲:

Philippe Ombredanne 介绍了 ScanCode,这是一个对 ClearlyDefined 非常重要的项目,因为我们使用此工具来检测许可证、版权和依赖项。Philippe 概述了该项目及其挑战。对于 ClearlyDefined,我们希望看到更高的准确性和性能改进。

Sebastian Schuberth 介绍了 ORT 的 Double Open Server (DOS) 伴侣。DOS 是一个服务器应用程序,用于扫描开源组件的源代码,存储扫描结果以用于许可证合规性管道,并提供图形界面以手动管理许可证发现结果。我认为有机会将 DOS 与 ClearlyDefined 集成,通过提供对我们 API 的访问来获取许可元数据,并允许共享管理结果。

Marcel Kurzmann 和 Martin Nonnenmacher 介绍了 Eclipse Apoapsis,另一个 ORT 服务器,它利用其集成 API 进行依赖项分析、许可证扫描、漏洞数据库、规则引擎和报告生成。同样,我觉得我们也可以像与 DOS 一样将 Eclipse Apoapsis 与 ClearlyDefined 集成。

Till Jaeger 发表了一次精彩的演讲,内容是从 FOSS 许可证合规性的角度管理 ORT 输出。他重点介绍了《网络弹性法案》(CRA),该法案为 SBOM 带来了法律条款,并且可能会增加对 ORT 等工具的需求。Till 分享了管理过程中的许多挑战,特别是双重许可带来的兼容性问题,并展示了 OSADL 兼容性矩阵

介绍 ClearlyDefined

我很荣幸与 GitHub 的 E. Lynette Rayle 一起介绍 ClearlyDefined,我们收到了观众的一些非常好的反馈和问题。

随着 SBOM 因合规性和安全原因而无处不在的趋势,组织将面临巨大挑战,需要在供应链的每个阶段、每次构建或发布时大规模生成 SBOM。此外,多个组织将不得不一遍又一遍地管理相同的缺失或错误识别的许可元数据。

ClearlyDefined 非常适合通过简单的 API 为每个组件提供许可元数据的缓存副本,从而解决这些问题。组织还可以贡献任何缺失或错误识别的许可元数据,帮助创建一个对所有人都有益的准确数据库。

GitHub 充分意识到这些挑战,并有兴趣在这方面帮助其用户。他们最近 在其数据库中添加了 1750 万个软件包许可证,这些许可证来源于 ClearlyDefined,从而扩展了依赖关系图、依赖关系洞察、依赖关系审查以及存储库的软件物料清单 (SBOM) 中出现的软件包的许可证覆盖范围。

使用 ClearlyDefined 的数据,用户只需调用其 API 服务即可。例如,要从 npm 上的 lodash 库版本 4.17.21 中获取许可元数据,可以调用

curl -X GET "https://api.clearlydefined.io/definitions/npm/npmjs/-/lodash/4.17.21" -H "accept: */*"

此 API 调用将由ClearlyDefined 服务处理,如下图所示。如果在定义存储中找到匹配项,则该定义将发送回给用户。否则,此请求将触发 ClearlyDefined 的爬虫收集过程的一部分),它将从 npm 下载 lodash 库,扫描该库,并将结果写入原始结果存储。然后,ClearlyDefined 服务将读取原始结果,对其进行汇总,并创建一个定义写入定义存储。最后,该定义将提供给用户。

通过另一个 API 调用通过 PATCH 完成管理过程。例如,以下 PATCH 将声明的许可证更新为 Apache-2.0

"contributionInfo": {
      "summary": "[Test] Update declared license",
      "details": "The declared license should be Apache as per the LICENSE file.",
      "resolution": "Updated declared license to Apache-2.0.",
      "type":"incorrect",
      "removeDefinitions":false
  },

此管理由ClearlyDefined 服务处理,如下图所示。管理将触发在 ClearlyDefined 的 curated-data 存储库中创建 PR,该 PR 将由两位管理者审核并签署。然后,PR 将被合并并写入curated-data 存储

GitHub 已部署了自己的本地 ClearlyDefined Harvester,如下图所示。GitHub 的 OSPO 策略服务向 GitHub 的 ClearlyDefined Harvester 发送请求,后者从各种软件包管理器下载任何组件和依赖项,扫描这些组件,并将结果直接写入 ClearlyDefined 的原始结果存储。GitHub 的 OSPO 策略服务ClearlyDefined 服务以及 GitHub 的 软件包许可证网关获取定义以及许可证和署名。GitHub 维护一个本地缓存存储,该存储与来自 ClearlyDefined 的更改通知 blob 存储的任何更新同步。

ClearlyDefined 的开发工作在 去年 得到了包括 GitHub、SAP、Microsoft、Bloomberg 和 CodeThink 在内的各个组织的更多参与。

目前,ClearlyDefined 的维护者专注于持续维护。ClearlyDefined 在 2024 年的主要目标包括:

  • 发布定期版本并切换到语义版本控制
  • 将依赖项更新到最新版本(特别是使用最新的 scancode)
  • 改进 NOASSERTION/OTHER 问题
  • 通过 UI 提高可用性和管理流程
  • 增强文档和创建本地收集的流程

我们的幻灯片在此处提供。

相关分组会议

ORT 社区日提供了几个分组会议,让参与者可以讨论痛点和解决方案。

Sebastian Schuberth 和 E. Lynette Rayle 领导了一场关于管理的特别讨论。ORT 软件包管理数据可以分为两类:元数据解释和法律管理。小组讨论了他们对管理过程及其挑战的想法,包括处理误报和共享管理结果。

如今,如果没有至少一次关于人工智能的演讲或讨论,任何会议都不会完整。一个小组聚集在一起讨论人工智能在改善用户体验以及 OSS 合规性方面的潜在用途。大多数与会者认为,可以通过使用人工智能来改进 ORT 的文档,甚至助手也有助于回答最常见的问题。至于人工智能在 OSS 合规性方面的应用,这里有很多潜力,一个想法是使用 ClearlyDefined 的管理数据集来微调 LLM。

结论

第二届 ORT 社区日为 ClearlyDefined 社区提供了与 ORT 社区更好互动的独特机会。我们能够会见 ORT 的维护者和成员,并向他们了解当前和未来的挑战。我们还能够探索我们的社区如何进一步合作。

我谨代表 ClearlyDefined 社区,感谢本次精彩活动的组织者:Marcel Kurzmann、Nikola Babadzhanov、Surya Santhi 和 Thomas Steenbergen。我还要感谢 ClearlyDefined 社区的 E. Lynette Rayle、Lukas Spieß 和 Qing Tomlinson,他们接受了我的邀请参加本次会议。

如果您对开源供应链合规性和安全性感兴趣,我邀请您更多地了解 ClearlyDefinedORT 社区。您可能也会对我的 FOSS Backstage 报告感兴趣。