开源管理计划围绕开源软件的所有方面提供了一个结构,包括选择、批准、使用、分发、审计、库存、培训、社区参与和公共交流。
本章对开源管理程序中的各种要素进行了高级概述,调查了建立新的合规计划所面临的挑战,并就如何克服这些挑战提供了建议。
我们从本章开始概述成功的开源合规计划所需的核心要素。 图 4 概述了我们在本章中讨论的这些基本要素。
开源合规策略推动了基于业务的对政策和流程实施主要方面的共识。 如果您不从高层共识开始,就政策细节和流程投资达成一致往往非常困难。 该战略确定了必须采取哪些措施来确保合规性,并为人员如何与开源软件交互提供了一套管理原则。 它包括批准、获取和使用开源的正式流程,以及发布包含在开源许可下许可的代码的软件的方法。
开源合规政策是一组管理开源软件(使用和贡献)管理的规则。 流程是关于公司如何每天执行这些规则的详细规范。 合规政策和流程管理开源软件的使用、贡献、审计和分发的各个方面。
询问响应策略确定了公司在合规工作受到挑战时必须做什么。 一些公司收到了负面宣传——其中一些受到了正式的质疑——因为他们忽视了提供额外合规信息的请求,不知道如何处理合规查询,缺乏或有一个糟糕的开源合规计划,或者只是拒绝与查询者合作。 这些方法对任何相关方都没有成果或有益。
因此,公司应该有一个流程来处理收到的询问,确认收到,通知询问者他们将对其进行调查,并提供一个实际的跟进日期。 第 7 章讨论了管理开源合规性查询的简单过程。
开源合规政策是一组管理开源软件(使用和贡献)管理的规则。 流程是关于公司如何每天执行这些规则的详细规范。 合规政策和流程管理开源软件的使用、贡献、审计和分发的各个方面。
图 5 展示了一个示例合规流程,其中每个软件组件将作为尽职调查的一部分经历的各个步骤。 第 4 章专门讨论合规流程。
开源合规团队是一个跨领域小组,由各种负责确保开源合规的个人组成。 核心团队通常称为开源审查委员会 (OSRB),由工程和产品团队的代表、一名或多名法律顾问和合规官组成。 扩展团队由多个部门的各种个人组成,他们持续为合规工作做出贡献:文档、供应链、企业发展、IT、本地化和开源执行委员会 (OSEC)。 但是,与核心团队不同的是,扩展团队的成员仅根据他们从 OSRB 收到的任务,兼职从事合规工作。
图 6 说明了实现合规性所涉及的两个团队:核心团队和扩展团队。 第 3 章详细讨论了参与实现开源合规性的个人的角色和责任。
开源合规团队使用多种工具来自动化和促进源代码审计以及开源代码及其许可证的发现。 此类工具包括:
公司在两个方向使用门户:向内,在公司内部; 向外,作为通往世界和开源社区的窗口。 内部门户托管合规政策、指南、文档、培训、公告和对邮件列表的访问。 外部门户为世界和开源社区提供了一个公共平台,以及发布开源包源代码、通知和其他披露的场所,以履行许可义务。
培训是合规计划的重要组成部分,有助于确保员工对管理开源软件使用的政策有很好的理解。 提供正式或非正式的开源和合规培训的目标是提高对开源政策和战略的认识,并围绕开源许可的问题和事实以及纳入开源的商业和法律风险建立共识 产品和/或软件组合中的源软件。 培训还可以作为在组织内宣传和推广合规政策和流程以及培养合规文化的场所。
根据公司的规模及其商业产品中包含开源的程度,公司可以要求从事开源工作的员工参加正式的讲师指导课程,最终可能会通过实际考试。
非正式培训渠道可能包括以下任何或全部:
午餐研讨会:
午餐研讨会通常是由公司员工或受邀演讲者在午餐时间进行的演示。 这些午餐研讨会的目标是展示和引发对将开源纳入商业产品或企业软件组合的各个方面的讨论。 这些会议还可以包括对公司合规计划、政策和流程的讨论;
新员工入职培训:
在某些情况下,合规官向新员工介绍公司的合规工作、规则、政策和流程,作为员工入职培训的一部分,为新员工提供必要的开源管理信息:与谁交谈,内部有什么 要访问的网站,如何注册开源和合规培训等。
希望使用或为开源软件做出贡献的开发人员将被要求提交在线请求并获得适当的批准。 这个过程最好通过一个自动化的在线系统来管理,通常是一个bug 跟踪系统,它有一个专门设计的工作流程来适应开源合规性的管理。
内部和外部的信息传递是任何合规计划的组成部分。 关于信息传递的一个最重要的建议是清晰和一致,无论是在内部向您的员工解释公司的目标和对开源的关注,还是在外部向您在产品/软件中使用的开源项目的开发人员社区解释 堆。
已经有几个行业计划旨在简化和实现更好的开源合规性,例如 Software Packaged Data Exchange® (SPDX)、OpenChain、Linux Foundation Open Compliance Program 和 TODO Group。 我们将在整本书中讨论这些举措。 我们建议公司参与这些举措,以获取更多知识并支持其内部合规工作。
公司几乎肯定会面临建立开源合规计划的挑战。 在以下部分中,我们将探讨五个常见挑战,并就如何克服这些挑战提出建议。
第一个挑战是平衡合规计划及其支持基础设施与(现有)内部流程,同时满足交付产品和启动服务的最后期限。 各种方法可以帮助缓解或解决这些挑战,并有助于创建一个确实给开发活动带来负担的简化程序。
行政支持
高管层对开源管理计划的长期承诺对于确保成功和连续性至关重要。
流程和政策很重要; 但是,它们必须轻巧高效,这样开发团队才不会认为它们对开发过程来说过于繁重。 根据两个重要的基本要素简化开源管理:简单明了的合规政策和轻量级的合规流程。
作为建立合规计划的一部分,您需要创建一些每个人都必须遵守的简单规则:
在开发过程中整合合规性
建立合规性的最成功方法是将合规流程和政策、检查点和活动合并为现有软件开发流程的一部分。
图 4 描述了成功的合规计划所需的基本要素。 一些团队成员可能对实施如此完整的程序所需的工作量感到不知所措。 实际上,这并不是很困难,因为您不必同时实现所有元素。 所有组织的首要任务是按时交付产品和服务,同时构建和扩展其内部开源合规性基础设施。 因此,您应该在开发过程中一直持续构建合规性基础架构,同时牢记未来活动和产品的可扩展性。 关键是周全和现实的规划。
建议的解决方案
沟通对于确保合规活动的成功至关重要。 公司应该考虑两种重要的沟通类型:组织内部的内部沟通,以及针对其产品中使用的开源项目的开发人员社区以及针对其产品的最终用户的外部沟通。
内部交流
公司需要进行内部合规沟通,以确保员工了解将开源纳入商业软件组合时所涉及的内容,并确保他们了解公司的合规政策、流程和指南。 内部沟通可以采取以下几种形式中的任何一种:
对外交流
公司需要外部合规沟通,以确保开源社区了解他们为履行他们在其产品中使用的开源软件的许可义务所做的努力。
启动合规计划时的最初挑战之一是准确找到正在使用的开源软件以及可用的许可证。 我们经常将这个初始审计过程称为为产品或软件堆栈建立一个干净的合规基线。
建立合规基线的活动是一项在一段时间内的密集活动,可能会持续数月,具体取决于您在开发活动的同时开始合规活动的时间。
建议的解决方案
组织通过以下活动实现初步合规:
如果一家公司未能建立基线合规性,则他们在同一产品(或使用初始基线代码的其他产品/服务)的任何未来修订版中必将面临合规性挑战。 为防范此类情况,公司应考虑以下事项:
维护开源合规性有几个挑战,类似于建立基线合规性时面临的挑战,但较小的增量规模。
保持合规是一项持续的努力,它依赖于将合规活动纳入现有工程和业务流程的纪律和承诺。 图 7 说明了增量合规的概念。 增量合规性是确保版本之间合规性的行为,涵盖了最后一个合规代码基线和当前源代码库之间的增量。
建议的解决方案
公司可以通过以下活动保持增量合规:
随着组织的发展和在新产品和服务中部署更多开源软件,维护开源合规性活动是一项持续的挑战。 公司可以采取几个步骤在其发展文化中将合规制度化,并确保其可持续性。
建议的解决方案
赞助
高管层的承诺对于确保合规活动的可持续性至关重要。 一位公司高管需要成为开源合规计划的支持者和财务赞助商。
一致性
在拥有多个业务部门和子公司的大公司中,实现整个公司的一致性是关键。 一致的方法有助于记录保存,并有助于跨组共享最佳实践、工具、指南和源代码。 在拥有多个业务部门的大公司中,一致性管理合规性是强制性的。
量化和分析
衡量和分析合规活动、流程和程序的影响和有效性,以改进合规计划。 如果您无法测量特定功能,则很难改进它。 在推广合规计划时,指标将帮助您传达每个计划要素所带来的生产力优势。
完善合规流程
组织使用开源的范围和性质是动态的——取决于产品、技术、合并、收购、离岸开发活动和许多其他因素。 因此,有必要不断审查合规政策和流程并进行改进。
此外,开源许可解释、法律合规风险和版权拖钓不断发展。 合规计划也必须发展,以通过更好和改进的工程和合规实践来减轻此类风险。
执行实施
有效的合规计划应包括持续监控计划遵守情况以及在整个组织内执行政策、程序和指导方针的机制。 执行合规计划的一种方法是将其集成到软件开发过程中。 一些公司更进一步,确保其员工绩效评估的特定部分取决于他们在个人和集团层面对合规计划活动的承诺和执行情况。
人员配备
公司必须确保为合规职能部门分配适当的人员,并为所有员工提供充分的合规培训。 在较大的组织中,合规官和相关角色是 FTE(full time equivalents:相当于全职); 在较小的组织中,合规责任很可能是一项共同的和/或兼职的活动。