先看答案

软件项目的法律风险往往不是一句“代码归客户”就能解决。合同应区分开发前已有的背景IP、项目中新产生的成果、第三方和开源组件、源代码仓库、验收标准、数据角色、安全义务、分包商授权和项目结束后的交付。

先说结论:把代码、许可和验收拆开写

合同应分别说明客户取得的是所有权、排他许可、非排他许可还是使用权;还要说明何时生效、覆盖哪些地域和用途、是否允许修改和再许可。付款、交付和权利转移的关系不能只靠发票或聊天记录推断。

技术规格、里程碑、验收测试、缺陷修复、源代码交付、账号控制、数据处理和安全事件应与IP条款互相对应。否则即使项目完成,客户也可能拿不到可维护、可迁移或可证明来源的产品。

  • Companies, entrepreneurs, investors, employers and parties to cross-border transactions
  • Responsible authority: The Common Courts of Georgia or agreed arbitration; for registrable rights, the Public Registry
  • Jurisdiction: Georgia

证据文件:建立项目与权利链

保存需求文档、技术规格、版本库和提交记录、第三方组件清单、开源许可证、设计稿、验收记录、发票、付款、分包合同和人员贡献记录。每个交付物应能对应到版本、日期和责任人。

如果处理个人数据或客户数据,还要记录控制者和处理者角色、访问权限、保存期限、安全措施和事件通知流程。不要把生产数据直接当作测试材料,除非已有适当的法律与安全基础。

  • functional and technical specification
  • background IP and third-party components
  • repository and access rules
  • milestone, acceptance and support plan

程序顺序:定义范围、开发、验收、交付与退出

签约前先列出背景IP和客户提供的材料;签约时定义新成果、第三方组件、开源义务、验收标准和付款节点;开发中保持仓库、变更和安全记录;验收时签署结果和未决缺陷;结项时完成账号、源代码、文档和数据交接。

如果客户依赖分包商、云服务或开源代码,应把下游许可和交付义务传递到合同中。项目失败、供应商更换或终止时,要提前设计访问、托管、迁移和删除机制。

  • map IP ownership and licences
  • define deliverables and acceptance
  • set security and data roles
  • create exit, escrow or handover

常见风险:个人账户、模糊验收和缺失的下游权利

代码放在开发者个人账户、没有可运行的验收测试、开源许可证不兼容、分包商没有书面权利、客户数据被混入个人环境、支持服务没有退出计划,都会降低项目可交付性。

还要注意“所有IP归客户”可能与开发者的通用工具、背景代码或第三方组件冲突。过宽的承诺如果无法履行,反而会造成违约和侵权争议。

  • code held in developer's personal account
  • open-source licence breach
  • unclear acceptance
  • missing subcontractor IP rights

决策清单:签约前回答十个问题

项目包含哪些交付物?哪些是背景IP?新成果以什么权利形式交付?开源组件有哪些?谁负责第三方许可?验收失败怎么办?代码和云账号谁控制?数据由谁处理?安全事件怎么通知?终止时如何迁移和删除?

高价值或面向消费者的项目,应由技术人员、业务负责人和律师共同确认清单。不要先支付全部费用再补写权利和交付条款。

  • Confirm facts and current status
  • Recheck the current official source
  • Record the deadline and fallback route
  • Obtain the written decision or registration evidence