首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开源知识共享|帮助开源法律合规性的13种方法

开源知识共享|帮助开源法律合规性的13种方法

作者头像
TARS基金会
发布2021-08-24 14:43:31
1.2K0
发布2021-08-24 14:43:31
举报
文章被收录于专栏:TARS基金会TARS基金会

本文翻译自LF AI&Data 基金会执行董事Ibrahim Hadadd的文章,《13 Practices to Help Improve Your Open Source Legal Compliance》,提供了与开源合规实践相关的建议。

关于建立和管理开放源代码合规性项目的详细讨论,请参考本文末尾的资源部门。每个组织都是不同的,都有自己的定制政策、准则和流程。因此,这些建议中可能不完全适合您目前的合规性框架,但可以作为可能的改进意见。

1. 识别所有的源代码

软件通过三个主要来源进入组织:由组织自己的开发人员引入的源代码,通过第三方商业软件供应商引入的源代码,以及GitHub等开放源代码渠道。建议在任何特定的产品或服务中使用的所有源代码都要经过合规流程,在这个流程中,组织能够识别源代码的来源和许可,并制定计划以满足所有适用许可的义务。

2. 建立一个经常性的扫描模式

组织采用各种方法来管理使用开放源代码的审批。鉴于开放源码软件的大量采用,人们倾向于尽可能地提高这些审批的效率。一些组织要求开发人员申请正式批准使用开放源代码,并且只允许在批准后将代码签入产品复制品中。在某些情况下,开发人员在急于完成工作的情况下,可能不会发出合规票据来请求批准使用所需的开放源代码。因此,关键是要有一个额外的检查点或方法来捕获正在进入软件堆栈的未经批准的开放源代码。这种情况可以通过每隔X周(取决于开发速度)对整个软件堆栈进行定期的全面扫描,并识别没有相应合规票据的组件来解决。然后,将为每个组件创建一个新的合规性票据,并通过正常的合规性验证过程进行推送。

3. 逐案验证合规性

在一种情况下批准使用开源软件并不一定适用于所有情况。合规性问题可能会出现,这取决于特定组件的使用环境,以及它与其他以不同许可证(开源或专有)授权的组件之间的互动。建议开发人员每次修改先前批准的开源组件或计划使用先前批准的组件时,都会运行新的扫描。建议开发人员每次修改以前批准的开源组件或计划使用以前批准的组件时,都要进行一次新的扫描。其结果将是一份新的材料清单,确认许可证,并批准在新的背景下使用。

4. 在升级开源组件的版本时验证许可证

开源组件的许可证变化可能发生在主要版本升级之间。当开发者升级开源组件的版本时,我们建议他们验证许可证。如果许可证有变化,可能需要创建一个新的合规票据,请求批准使用现在在不同许可证下许可的开源组件的新版本。

5. 解决由软件组成分析工具标记的合规问题

当源代码扫描器在代码库上运行时,输出可能包括某些标志,指向根据SCA工具中配置的规则和策略确定的可能问题。当这些标志被确认为一个真正的问题时,建议与开发人员一起解决这个问题,在解决后运行新的扫描,并根据更新的源代码生成一个新的材料清单。

6. 保存所有许可信息

在准备与使用开源组件有关的法律审查时,建议保存所有相关的许可信息,如在 repo 中可用的 COPYING、README 或 LICENSE 文件。许多组织要求将这些文件附在特定开源组件的合规票据上,以便为票据的审查人员提供对合规状态进行正确评估所需的所有信息。

7. 保持讨论的记录

根据之前的做法(保存许可信息),建议在合规性票据中保存一份导致批准或拒绝特定开源组件的讨论摘要。当试图确定批准某一特定组件的基础以及如何解决可能的问题时,这种文件可以证明非常有用。

8. 提供一份书面提议

书面提议是成功的合规工作的一个重要组成部分。某些开放源码许可证要求将各种许可证信息通知给软件的接收者,并要求他们能够访问源代码。我们建议使用清晰的语言,并包含产品或服务中的所有开源软件。组织通常试图在产品本身、产品文档或网站上(位置因产品或服务的而异)中找到这些信息(书面报价和开放源码许可信息)。

9. 管理对开放源码软件的修改

建议将所有对开放源码的修改记录在修订历史(变更日志文件)中。当重新发布修改过的代码时,根据有效的许可证,您的修改需要清楚地标明。一些公司选择了一种不同的和更有效的方法,即提供原始的开放源代码和公司贡献的补丁文件,以适用于原始开放源代码包。按照这种方法,公司的修改与原始的开放源码包是明确分开的,可以识别。

10. 注意退役的组件

在某些情况下,以前批准的开源组件可能不再使用了。当遇到这种情况时,建议开发者重新打开相应的合规票据,并更新它以反映该组件已经退役,并提供与构建号和具体使用信息有关的细节。这一行动将触发向产品或服务的用户提供的开放源码许可信息的更新。

11. 避免复制/粘贴

开发人员必须避免在没有文件批准的情况下将开放源代码复制和粘贴到专有或第三方源代码中(或反之)。这种行为会对许可证的遵守产生严重影响。

12. 避免混合具有不同许可证的源代码

在前面关于避免未经批准的复制/粘贴的说明之后,建议避免在未经适当批准的情况下混合不同许可证的代码。一些开放源码的许可证是相互不兼容的,许多许可证与专有许可证不兼容。因此,强烈建议您寻求法律顾问的支持,并获得批准以混合使用不同许可证的源代码。

13. 保留原始许可证信息

强烈建议不要删除或以任何方式干扰任何开放源码组件中现有的版权、归属和许可信息。

人们普遍认为,开放源码是一个伟大的创新工具,允许各组织分享研发努力,并建立共同的和有利的基础技术。然而,我们有义务尊重开放源码所依据的许可证。在这篇文章中,我们分享了一些关于在产品或服务中使用开放源代码时确保许可证合规性的做法。我们希望您发现它对您的合规工作有帮助。谢谢您的阅读!

关于作者

Dr. Ibrahim Haddad是Linux基金会的战略项目副总裁,曾担任位于硅谷的三星电子研发副总裁和全球开源部门负责人。

参考文献

[1] An Open Guide to Evaluating Software Composition Tools (11/2020)

[2] Recommended Open Source Compliance Practices for the Enterprise (04/2019)

[3] Assessment of Open Source Practices as Part of M&A Transaction Due Diligence (03/2019)

[4] Open Source Compliance in the Enterprise, 2nd Ed. (12/2018)

[5] Enterprise Open Source: A Practical Introduction (08/2018)

[6] Open Source AI: Projects, Insights and Trends (05/2018)

[7] Open Source Audits in Merger and Acquisition Transactions (Also available in Japanese - 02/2018)


TARS基金会是Linux基金会下的非营利性、微服务基金会,致力于建设一个强大而灵活的微服务生态系统。无论你在哪个行业,无论你使用什么技术栈,这里能助你快速实现你的创意。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TARS星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档