共享组件库已在内部使用,新产品还能直接复用吗?先把原始对象、当前版本和用途变化分开
吕箐翎律师认为,模块进入共享组件库、被一个产品采用或公共库版本稳定,只能说明相应对象、版本、时点和动作;原始引入记录不能自动覆盖新产品、制品、市场或用途变化。
吕箐翎律师的判断是:内部共享组件库并不是一个会自动扩张的事实范围。某模块已经进入公共库、多个团队都能访问,或者它曾经在一个产品中正常使用,分别只能说明明确的对象、版本、时点和动作。准备把它用于新产品、新制品或新的市场、客户交付形态时,不能只拿原始引入记录或既有使用记录替代新的范围核对。
原始对象:先识别共享库里放入的是什么
共享库中的模块,需要先回到原始模块、来源版本、取得路径和其后的修改链。当前公共库的名称或目录结构,不能单独说明最初引入的是哪个版本、后来经过哪些修改,或某项材料原本覆盖到哪里。
这一步也不以判断某个具体许可证为目的,而是让组件的来源事实可以被重新识别。组件清单、LICENSE、NOTICE、贡献或授权材料可能都是继续核对的线索,但文件存在本身不能说明它们当然覆盖当前公共库中的全部代码、依赖关系或每一个复用点。
当前版本:公共库稳定,不等于产品使用事实已经相同
公共库版本稳定,能说明一个明确版本在特定时点存在;产品仓库实际依赖哪个版本、是否锁定同一提交、是否带入额外依赖或二次修改,仍是另一组事实。即使多个产品使用同一个库名,也不能先假定它们实际构建的对象完全一致。
因此,新产品准备引用时,应把它所用的仓库、分支、依赖关系、当前组件版本和构建差异分别留出位置。已有产品的构建记录可以说明已有产品的相应范围,却不能自动替代新产品的版本和依赖事实。材料不足时,只能标出哪个复用点尚未对上,不宜把缺口写成合规、交付或责任结论。
用途变化:内部采用不等于后续用途已经被覆盖
“某库已被内部使用”还需要回到实际动作。对每个复用产品而言,内部运行、提供服务、允许下载、面向客户交付或进入新的市场,可能指向不同的产品、制品和时间范围。一个产品没有对外分发,只能说明该产品已知范围内的事实,不能用来推定其他产品也没有需要进一步核对的对外动作。
技术合同的标的、范围、履行、成果归属和验收可以构成一般合同边界;但与开源组件相关的实际对象、版本和用途,仍要与具体产品或制品逐一对应。不能只因组件在内部库中,就把它概括为可以在任意产品或交付形态中无条件复用。
待补事实要落到每一个复用点
准备复用时,可以先把材料按三个层次列开:原始模块和来源版本以及修改链;当前公共库版本和该产品实际使用的依赖、构建差异;该产品或制品将在哪些范围内部运行、提供服务、下载或交付。再把现有许可证、NOTICE、合同和贡献者材料分别放回能够对应的对象、版本和用途旁边。
这样做得到的是“哪些事实已经连上、哪些仍待补”的判断。它不能提前回答任何具体许可证怎样适用,也不意味着某个组件、产品或交付已经满足条件;但能避免把一次原始引入或一个旧产品的材料,误当成所有新增复用范围的完整答案。