
SAP 的 ClearlyDefined:通过开源数据增强开源许可证合规性
作者:Brian Duran、Qing Tomlinson 和贡献者 (SAP)
与其他投资于开源软件的组织一样,SAP 非常重视理解其可能贡献和/或使用的开源项目的组成和潜在风险。
2018 年,SAP 在 ClearlyDefined 项目的早期阶段开始与其合作。ClearlyDefined 是 OSI 开源项目,旨在集中和管理开源软件许可证的数据,此后不久,SAP 启动了一个内部试点计划来评估其功能。

此后,ClearlyDefined 已成为 SAP 内部自由和开源 (FOSS) 合规流程不可或缺的一部分,有助于获取风险评估所需的重要软件包元数据。
以下是我们自从将 ClearlyDefined 纳入我们的 FOSS 合规流程以来看到的一些主要好处
- 减少扫描时间,更多时间专注于合规性:数据可通过开放 API 获取且易于使用,从而可以轻松集成到内部风险建模系统中。
- 更高的数据质量:软件包有可能已经被社区的其他成员审查和管理。众人拾柴火焰高!
- 社区:与其他组织和个人合作,朝着改进开源合规性的共同目标努力,具有内在的好处,当有共同的平台和系统来促进这种众包工作时,这会变得更加容易。
从试点到生产:大规模采集
ClearlyDefined 支持令人印象深刻且不断增长的采集源数量。
我们遇到的一个最初的挑战是如何准确地将我们的开发人员请求的大量 FOSS 发送到 ClearlyDefined 并取回结果。我们知道,使用结果数据完成的所有下游工作都将很大程度上取决于我们可靠且大规模地完成此任务的能力。
我们最初从我们开源合规组织内的一个小型试点小组开始,该小组将通过采集 API 向 ClearlyDefined 提交 FOSS,并记录回一些基本信息(例如,坐标、状态等)。最初这是一项 100% 手动任务,但最终,为此任务开发了一些自动化工具。
这种自动化工具最初很简单,由一些本地运行的脚本组成。但到 2020 年,它已发展成为一个与我们的其他内部合规系统协同工作的完全集成的服务。

ClearlyDefined 最早支持作为采集源的一些存储库包括 GitHub、NPM 和 Maven。在不太知名或私有维护的位置中的 FOSS 可能无法通过 ClearlyDefined 采集。对于这些情况,我们设计了一个单独的流程来在 ClearlyDefined 之外处理它们。
审查:消费用例
ClearlyDefined 使用共享采集队列——这意味着您的请求将与所有其他人的请求一起进入队列。
虽然可能有可行的方法来内部化此类工作负载(例如,通过运行您自己的采集爬虫实例),但我们最初的业务需求并不需要这种程度的复杂性。
了解软件包何时在队列中移动(例如,从部分采集到完全采集)至关重要,这样您就知道何时适合消费数据。为此目的存在一些机制,包括基于 Azure Blob Storage 的基本更改通知服务。
一旦软件包被采集,其在 ClearlyDefined 中的位置(称为“坐标”)将被记录到我们的内部 FOSS 数据库中以供将来参考,并放入管道中供我们的合规专家审查。
合规专家将检查 ClearlyDefined 中的软件包,利用可用的数据点(例如,声明的、发现的许可证,以及其他数据点)来执行风险评估。
如果有合适的机会纠正缺失或不正确的信息,我们的合规专家将尝试使用 ClearlyDefined 独特的管理机制来提交拉取请求以更新数据。
SAP 也为该项目的开发和技术方面做出了重要贡献。在许多情况下,我们通过内部努力学到的东西也可以部分推动我们对该项目的公共贡献,并且我们定期与社区中的其他人合作,以提供开发和技术支持。
例如,我们的合规专家在内部报告的 UI 错误或数据质量问题在某些情况下可能需要对 ClearlyDefined 的代码库进行更改或改进(例如,错误修复、优化等)。
我们一直在寻找使用 ClearlyDefined 提供的数据的新的和创新的方法,包括解决新的和新兴的业务挑战,以及如何以有意义的方式回馈项目。最理想的情况通常是那些存在协同效应,可以促进双方创新的情况。SAP 的开源合规运营从 ClearlyDefined 中受益匪浅,与以前的流程相比,审查周转时间估计*减少了 30-50%。我们打算继续作为项目社区的一部分做出贡献,并帮助改进 ClearlyDefined 及其数据质量。
*基于在采用 ClearlyDefined 作为分析工具之前和之后,每个 FOSS 组件的平均处理时间,包括通过自动化和标准化节省的时间和精力。
2 条评论
评论已关闭。