合规的关键在于管理
“软件管理”一词用于描述企业将软件存档、控制产品中引入何种软件、分发哪些软件、以及在买卖交易中适用何种许可证等流程。无论企业当前销售的是嵌入软件的实体产品还是软件产品和服务,完善的软件管理都是以最低成本履行合规义务的关键。
以假想的消费类电子设备制造商 Acme 公司为例。Acme 在某些设备中嵌入了 Android 系统,该操作系统包含 Copyleft 操作系统 (OS) 内核、Linux 操作系统、一些含 LGPL 库的定制应用程序和一些 GPL 实用工具。公司还在其他设备中嵌入自定义软件堆栈,此堆栈也包含 Copyleft 内核、经修改的 Linux 操作系统、适用 GPLv2 的 Busybox 和适用 GPLv3 的一套 GNU 实用工具。Acme 以数字化文件形式向转售其中某些设备的中间商提供固件升级服务。Acme 选择不随产品提供包含 GPL 源码的 CD 或 USB 记忆棒,而是在产品包装或文件中增加书面要约。因此,Acme 有义务向任何请求方提供产品中所有 Copyleft 程序的完整对应源码。
为履行该义务,Acme 需先准备一份 “材料清单”,列出公司制造每个产品所用到的软件堆栈构件。“许可证分析”的目的是为了在着手开发前以及开发继续、修改材料清单的重复步骤中确认材料清单上的各个项目分别适用哪些许可证。出色的 FOSS 工具可用于许可证分析工作。产品文档所需的许可证文本在许可证分析环节中输出,并加入产品包装和在线文档。Acme 对其引入的任何 Copyleft 软件(无论是嵌入在硬件组件中,还是由第三方软件供应商提供)都会自动要求完整对应源码。通过以用户身份行使自己的权利,Acme 已准备好履行义务,并改善供应链中各实体的合规响应能力。
Acme 按 Copyleft 许可引入的所有源码(无论修改或未经修改)都在生成过程中进行传递。从初始测试版本到最终发布制造的所有阶段,Copyleft 二进制完整对应源码本身便是生成目标的一部分。发布包含此软件堆栈的产品时,针对所有 Copyleft 组件的完整对应源码会放在网站上供公众查看,以产品型号、修改代码或特定于设备和软件版本的任意散列码作为索引。此“堆栈码”也会印在产品文件中,并在产品外包装上以二维码形式显示。公司以数字化文件形式向中间商提供固件升级时,也会随附类似的堆栈码,以供其放在自己的网站上。
产品发布前的法律审查环节会确认 Acme 是否履行了其自制义务。任何 EULA(或适用于 Acme 产品中所有软件的保护伞许可证)和公司针对与产品相关的“软件即服务”部署制定的任何服务协议均需经过审核,以确定其是否明确合规产品软件堆栈中的任何 FOSS 许可证条款,进而确保未施加其他违反 Copyleft 的限制。
在软件管理过程中执行这些步骤后,Acme 坚信如果其产品的任何用户希望行使 GNU 家族许可证所赋予的权利,不用开箱便可请求并即时获得源码。Acme 也确信已以最小冲突和最低费用使每位购买其产品的用户都可获得相关的 Copyleft 许可证,而且公司自有产品的私有许可与产品中 Copyleft 许可不冲突,或不损害其有效性。
但这些步骤仍然无法保证 Acme 以后不会无意间将 Copyleft 代码引入公司的私有程序中,进而作为产品堆栈的一部分进行分发。但可以确信的是,Acme 已经避免了所有可能引起社区诉讼的违规情况。