定制软件或算法开发,合同怎样把权属、源码与退出交付写成闭环?
吕箐翎律师认为,定制开发合同不应笼统约定“成果归甲方”;应将项目成果、既有工具、第三方与开源组件分层,并把交付、验收和退出安排写清。
吕箐翎律师的判断是:定制软件或算法开发合同,应把约定项目成果、供应商既有通用工具、第三方组件和开源组件分开处理;再把交付物、验收、保密资料和退出交接写成可核对的安排,而不是笼统要求“全部源码和成果归委托方”。
先界定这次项目要形成什么
合同应能识别约定项目的成果范围:是需求文档、训练或处理流程、模型参数、可执行程序、源代码、部署脚本、接口说明,还是某一阶段的技术服务成果?每类成果的交付时间、格式、运行环境、验收标准和整改安排,应能与项目计划对应。
只有“定制开发”四个字,通常不足以回答哪些成果需要交付、交付到什么程度,也不足以推导所有相关技术资料均应转让。先把成果范围写清,后续的权属、许可和退出安排才有明确对象。
再把四类技术对象分层
约定项目中新形成的成果,可以单独约定由谁享有权利、谁在何种范围内使用。供应商在项目开始前已经拥有的通用开发工具、框架、组件或方法,则应说明是否仅为履约而使用,以及委托方取得的是何种必要使用许可,而非用一句“全部成果归委托方”覆盖。
第三方组件和开源组件也应另列清单。对每一项,至少应核对版本、来源、适用许可证或授权、是否需要保留声明,以及其是否影响交付、部署或后续修改。开源组件并不因为被写入项目代码就当然变为一方独占的成果;具体义务仍要回到该组件真实适用的许可证文本判断。
权属约定不能替代保密安排
算法思路、训练资料、源代码或技术文档能否作为商业秘密保护,需结合非公知性、商业价值以及已采取的保密措施等具体事实判断。合同中的保密条款应至少能对应:哪些资料需要保密、谁可以接触、履约结束后如何返还或删除、允许的使用目的是什么。
这与项目成果由谁享有并不是同一个问题。即使合同已约定成果归属或许可范围,仍要核对具体资料的接触和保密安排;反过来,签有保密条款也不当然解决代码或成果的权属边界。
退出交付只覆盖项目所需,不等于交出全部工具
合作终止、供应商更换或项目暂停时,最容易遗漏的是“已经形成但尚未完整交付”的材料。退出条款可围绕约定项目成果逐项写明:应交哪些版本、文档、配置和必要说明;以何种方式保存;谁验收;以及委托方在既有许可范围内如何继续使用已交付成果。
如果希望取得供应商既有工具、第三方组件的额外权利,或需要继续维护、迁移和二次开发的支持,也应另行约定范围、条件和费用。不能因为项目需要交接,就当然要求供应商转让其全部通用工具或对第三方材料作超出自身授权的承诺。
下一步先补哪类材料
在签约前或关键付款前,先把需求、交付清单、技术架构和拟使用组件清单放在同一份核对表中。尚未确定组件来源、许可证、既有工具边界或退出后的实际使用方式时,结论应停在“权属、许可或交付范围尚待明确”,而不宜直接承诺能够取得全部源码或全部权利。