“我们付了钱,所以它归我们所有”是常见的假设。这个假设是否成立,完全取决于合同中的约定;而在没有相关条款的情况下,许多司法管辖区的默认规则更有利于开发者。
所有权应涵盖哪些内容
一份妥善处理此问题的合同,应分别涉及以下四项内容:
- 定制源代码:专门为本项目编写的代码。
- 设计资产:界面、图标、插图以及可编辑的源文件,而不仅是导出的图片。
- 数据:应用程序存储的全部内容,且应明确无歧义地归客户所有。
- 文档:规格说明、架构说明和部署指南。
需要关注的条款是:在客户支付最终款项后,将定制工作的所有权转让给客户。这里有两点很重要:转让应在付款时生效,而不是等到某个更晚的事件发生;同时应明确包含设计源文件,因为这些文件经常被遗漏,事后再获取也很麻烦。
哪些内容不能归你所有
有些组件是获得许可使用,而不是转让所有权,这很正常:
- 开源库。现代应用程序都会使用许多开源库。它们各自附带许可协议,其中大多数都允许自由进行商业使用。关键在于这些许可是否与你的使用方式兼容——要求提供一份许可清单是合理的。
- 商业组件:付费图表库、获得授权的字体、购买的模板。这些组件的许可可能按项目、按开发者或按部署计算,许可需要转让给你,或者重新购买。
- 开发者预先存在的框架代码。许多代理机构会在不同项目之间复用内部工具。这种做法合法,通常也有益,但这些代码应以永久许可的方式授权给你,而不是任其处于未定义状态——否则,你的应用程序有一部分就属于其他人。
图库图片是一个反复出现的问题。获准用于原型图的图片,有时并未获准用于生产环境;等到上线后才发现这一点,代价会很高。花五分钟询问每张图片的来源,是值得的。
交接包
检验交接是否充分很简单:一名从未接触过该项目的合格开发者,能否接手它?这需要具备:
- 包含完整历史记录的代码仓库,并转移到由客户控制的账户中。提交历史很重要——新开发者正是通过它来理解事情为何如此。
- 部署指南,详细到足以从零开始重建环境。
- 环境配置:有哪些设置、各自的作用,以及哪些属于机密信息。
- 所有账户凭据:托管、域名、数据库、第三方服务和商店账户,均转移至客户名下。
- 数据库架构及所有迁移脚本。
- 第三方服务清单,包括每项服务的用途和费用。
- 设计源文件。
- 已知问题和延期事项,并如实记录。
最后一项尤其值得明确提出要求。每个项目都有已知的妥协之处,而愿意将这些问题记录下来的开发者,实际上是在为客户提供真正有价值的东西。
验证交接是否有效
最有力的验证方式,是让独立人员仅凭交接包,将应用程序部署到全新的环境中,且不向原开发者询问任何问题。如果能够成功,说明交接是真实有效的。
在双方关系仍然良好时完成这项工作,要比关系结束后再做容易得多。将最终款项中的一小部分设为以此项验证通过为支付条件,是合理的做法。
代码托管
如果开发者保留代码——基于平台或订阅的安排有时会出现这种情况——源代码托管会将一份副本交给第三方,并在预先约定的条件下释放给客户,例如开发者停止经营。
这会产生费用并增加管理工作,主要适用于应用程序对业务至关重要且开发者规模较小的情况。对于大多数小型项目而言,直接转让所有权并完成经过验证的交接,以更低成本实现的效果更多。
在开始之前达成一致
- 谁拥有定制代码,以及从何时开始拥有。
- 是否包含设计源文件。
- 预先存在的开发者代码如何授权。
- 数据明确无歧义地归客户所有,并以可导出的形式提供。
- 交接包包含哪些内容。
- 账户从一开始就以客户名义创建。
Manboo 相关服务
- Flutter 应用开发,适用于 iOS 和 Android MVP。
- 业务软件开发,适用于 CRM、预约、库存和工作流系统。
- 管理面板开发,适用于运营仪表板和后端管理。
- AI API 集成,适用于产品准备加入智能搜索、聊天或自动化功能时。
- 申请范围评审和项目估算,适用于你准备规划第一个版本时。
