【技术护城河02】软件外包,源代码归谁?别白干
文|吴卫勇律师【吴用无畏:吴用的智慧,无畏的勇气】
声明:本文案例基于本人经手的真实案件,为保护当事人隐私,已对行业、地点、情节、金额等信息做脱敏处理,请勿对号入座。
引子
“我们给一家餐饮连锁企业开发了一套SaaS系统,前后忙了八个月。系统上线后对方很满意,也付清了开发款。可后来他们想自己找人维护升级,要求我们交出全部源代码。我们不给,对方就说要起诉我们侵权。”
客户是一家计算机软件系统公司,专门为中小企业提供定制化软件开发服务。电话那头,技术负责人语气焦急:“合同里没写源代码归谁,我们觉得我们开发的当然归我们。可对方说,他们花的钱,系统就该是他们的。到底谁对?”
我告诉他:花多少钱,不等于拥有源代码。著作权法有明确规定:委托开发,归属以合同约定为准;没有约定,权利归受托人(开发者)。
但对方已经聘请了律师,双方剑拔弩张。我们如何守住源代码?
商业背景
客户公司位于华东某省会城市,主要从事B端企业级软件定制开发。2019年,一家在全国拥有80多家直营店的餐饮连锁企业找到他们,希望开发一套SaaS系统,涵盖门店管理、供应链订货、会员营销、数据报表等模块。
双方协商后签订了《软件委托开发合同》,合同约定了开发周期、费用(合计82万元)、交付标准、验收流程等基础条款。但对于开发成果的源代码归属,合同只字未提。
客户公司本着“客户至上”的原则,在开发过程中还根据餐饮企业的需求,额外增加了多个功能模块,并未额外收费。系统上线后运行稳定,餐饮企业也按约定支付了全部款项。
两年后,餐饮企业业务扩张,希望自己组建技术团队对系统进行二次开发和维护。他们找到客户公司要求提供全部源代码、数据库脚本及相关技术文档,并表示“系统是我们出钱开发的,源代码当然归我们”。
客户公司拒绝了。理由有二:第一,合同没有约定源代码归属,根据行业惯例,谁开发谁拥有;第二,系统中包含了客户公司多年积累的核心代码框架,这些框架在其他项目中也在使用,一旦交给对方,相当于把自己压箱底的技术拱手送人。
双方多次协商未果,餐饮企业委托律师向客户公司发出了律师函,主张“委托开发的系统,知识产权应归委托人”,并威胁提起诉讼。
法律困境
本案的核心法律问题非常明确:
根据《中华人民共和国著作权法》第十九条(2020年修正版第二十条):“委托创作的作品,著作权的归属由委托人和受托人通过合同约定。合同未作明确约定或者没有订立合同的,著作权属于受托人。”
这一条款被称为“委托创作著作权归属的默认规则”:有约定从约定,无约定归受托人(开发者)。
看起来对开发方非常有利。但餐饮企业提出了三个抗辩理由:
1. 合同目的论:“我们花钱开发系统,当然是为了拥有它。如果源代码不归我们,我们怎么升级维护?这不符合合同目的。”
2. 公平原则:“我们支付了82万元,客户公司也认可这是‘系统开发费’,不是‘软件使用许可费’。既然付了全款,成品就该属于我们。”
3. 行业惯例:“在软件外包行业,很多委托开发合同都会约定源代码归委托方,否则委托方会受制于人。”
此外,餐饮企业的律师还提出:如果客户公司不提供源代码,他们将对系统进行反向工程。虽然反向工程可能涉及技术措施规避,但这将导致客户公司陷入被动。
📌 术语解释
· 源代码: 程序员编写的、人类可读的程序代码,是软件的“原始形态”。拥有源代码才可以对软件进行修改、升级、移植。
· 目标代码(二进制文件): 源代码经过编译后生成的机器可执行文件,普通用户无法阅读和修改。
· 反向工程: 通过分析目标代码逆向推导源代码的行为,通常被法律限制。
客户公司担心:不给源代码,对方可能起诉;给了源代码,自己多年积累的代码框架就会泄露。进退两难。
法商策略
我们为客户公司设计了三条核心应对方案,逐级推进。
策略一:明确法律立场,援引《著作权法》守住底线

我们向餐饮企业及其律师正式回函,援引《著作权法》第20条,明确指出:涉案软件的源代码著作权归属于受托人(客户公司),委托人仅享有在约定范围内使用软件的权利(使用权)。除非双方另有补充协议,否则开发方没有交付源代码的法定义务。
同时,我们主动提出:客户公司可以继续为餐饮企业提供有偿的维护、升级服务,无需对方组建自己的技术团队。这既是为对方提供解决方案,也是为自己争取后续业务。
策略二:评估源代码价值,提出“共同代码”与“定制代码”分拆方案
我们协助客户公司对系统的源代码进行技术审计,梳理出两类代码:
· 共同代码:该SaaS系统与客户公司其他项目共用的底层框架、工具类库、算法组件等,属于客户公司的核心技术资产。这类代码凝结了公司多年的研发投入,一旦交付,对手可以直接复制其技术能力。
· 定制代码:专门为餐饮企业业务逻辑编写的模块(如订单处理、会员积分规则、促销引擎等)。
📌 共同代码的商业秘密属性
共同代码不仅涉及著作权归属,还可能构成客户公司的商业秘密。根据《反不正当竞争法》,只要共同代码不为公众所知悉、具有商业价值、且公司采取了合理保密措施(如仅限核心开发人员访问、签署保密协议、禁止外传等),就应作为商业秘密保护。一旦泄露,公司可追究对方的法律责任。
我们提出方案:客户公司可将“定制代码”交付给餐饮企业,同时书面许可餐饮企业使用共同代码的“目标程序”(即已编译的二进制文件),但不开放共同代码的源代码。这样既满足了对方部分需求,又保护了自己的核心技术。
策略三:协商补充协议,锁定长期合作
为防止纠纷升级,我们主动邀请餐饮企业协商,签署《补充协议》,明确约定:
· 涉案SaaS系统的源代码著作权归客户公司所有;
· 客户公司授予餐饮企业永久、不可撤销的使用权,允许其在自身业务范围内使用、修改定制代码部分;
· 客户公司承诺提供持续的技术支持服务(另签服务协议,按年收费);
· 餐饮企业不得将共同代码或定制代码转让、许可给第三方使用;
· 保密条款:餐饮企业不得对共同代码进行反向工程、反编译或试图获取源代码。
这一方案既守住了客户公司的核心资产,又给了餐饮企业一个台阶——他们可以获得修改定制代码的权利,只是不能拿走共同代码。
关键动作
动作一:系统梳理技术文档,证明“共同代码”的独立性及原创时间
我们指导客户公司整理出三份关键证据:
· 客户公司其他项目中使用相同代码框架的合同及交付记录,证明该共同代码系客户公司自主研发,并非专为餐饮企业开发;
· 共同代码的首次存储时间信息(早于本次委托开发合同签订时间),通过版本管理系统(Git)提交记录或技术专家出具说明;
· 餐饮企业支付的开发费用明细,核算后显示定制代码部分的价值占比仅约35%,而共同代码部分属于客户公司的前期研发投入,不应重复付费。
动作二:以“侵害商业秘密”为由,发出律师函反制
📌 风险提示:若合同无约定且无法证明“共同代码”的独立性
如果客户公司无法证明共同代码系其独立研发(例如:代码写在委托开发期间、未留存历史版本),法院可能认定所有代码均为委托开发的成果,从而判决著作权归委托人(餐饮企业)。因此,建议开发方建立严格的版本控制流程,并定期向外部(如时间戳服务中心)存证。
在本案中,客户公司具备充分的证据。我们遂向对方发出律师函,明确告知:共同代码是客户公司的核心商业秘密,若被泄露或使用,将追究其法律责任。这一函件起到了强烈的“威慑”作用,对方态度明显软化。
动作三:引导高层直接沟通,促成和解
在多次书面交锋后,我们建议客户公司与餐饮企业创始人进行一次面对面沟通。我方阐明:如果坚持索要共同代码,不仅法律上站不住脚,而且两败俱伤——诉讼将导致系统停摆,餐饮企业业务受损。最终,双方同意各退一步。
最终结果
经过三轮谈判,双方签署了《和解协议》及《补充协议》:
· 涉案SaaS系统的源代码著作权归客户公司所有,餐饮企业确认无异议;
· 客户公司向餐饮企业交付“定制代码”部分的完整源代码及相应技术文档;
· 客户公司许可餐饮企业在自身业务范围内永久使用共同代码的二进制形式(不提供源代码);
· 餐饮企业放弃对共同代码的主张,并承诺不进行反向工程、不委托第三方分析共同代码;
· 双方另行签署年度技术服务合同,客户公司负责系统的后续维护及升级。
事后,客户公司负责人感叹:“要是合同里早写清楚源代码归谁,根本不会有这场纠纷。现在虽然保住了代码,但也搭进去三个月的协调成本。”
办完这个案子,我最大的感受
第一,委托开发合同,源代码归属条款绝对不能省略。
很多软件公司在签合同时只关注价格、周期、功能清单,却忽略了知识产权归属。根据《著作权法》,即使没有约定,权利归开发者。但一旦发生争议,双方都要耗费大量精力。一句“开发成果的全部知识产权(含源代码、文档、设计图)归受托方/委托方所有”,就能避免后续所有麻烦。
第二,“共同代码”是开发方的核心资产,要提前隔离并采取保密措施。
软件公司在承接不同项目时,不可避免地会复用自己积累的框架、库、组件。这些是公司的技术资产,不应随项目交付。应该在合同中明确列举“许可使用的第三方/公用组件”范围,并约定仅许可目标代码,不开放源代码。同时,在公司内部建立代码资产管理制度,对核心代码设置访问权限、签署保密协议、定期备份。
第三,客户关系不是“非黑即白”,和解往往比诉讼更优。
本案中,如果坚持诉讼,客户公司大概率胜诉(因为合同无约定归开发者)。但诉讼周期长、耗费精力,还会彻底毁掉与餐饮企业的合作关系。通过协商,双方各得所需:客户保住了核心技术,餐饮企业获得了定制代码和维护服务。
第四,技术文档和证据留存是开发方的“护身符”。
本案中,共同代码的存储时间信息、其他项目使用记录等证据,为我方谈判增加了筹码。软件开发公司应建立内部版本控制系统(如Git),保留每一次提交的时间戳,并定期备份至第三方存证平台,以备不时之需。
对软件/技术开发企业的几点建议
1. 合同条款做“全”: 在《软件委托开发合同》中单列“知识产权”条款,明确写明“全部源代码、目标代码、文档、设计图、数据库结构等开发成果的知识产权归受托方/委托方所有”,并约定授权使用范围。
2. 区别“定制”与“通用”: 合同中可附“第三方/通用组件清单”,明确哪些组件是受托方原有的核心资产,仅授权委托方使用目标代码,不交付源代码。
3. 保留创作痕迹: 使用版本控制工具(如Git)记录代码提交时间,并定期备份。在发生权属争议时,这些记录是证明原创时间的有力证据。
4. 后续服务“另签”,不要打包: 开发合同只负责交付合格产品。维护、升级、二次开发等服务应另行签订技术服务合同,按年或按次收费,避免“一锤子买卖”后还要无偿服务。
全文完,本文作者:吴卫勇律师
更多讲解,在视频号「吴用无畏」
夜雨聆风