开源=免费?大错特错!一文讲透开源软件的法律红线
代码可以免费拿,官司不一定打得起
“这是开源的,随便用。”
这句话在无数技术群、项目启动会、甚至法务审核群里都听到过。
每次听到这话我都心头一紧。今天不说那些晦涩的法律术语,就用大白话把开源软件的那些事儿讲明白。
一、开源到底是什么意思?
先纠正一个误区:开源不等于放弃权利。
开源软件就像房东把房子租给你——你可以住,可以简单装修,但房子还是房东的,你得遵守租房合同。
这个“租房合同”,就是开源许可证。常见的比如MIT、Apache、GPL,都是许可证。
你下载代码的那一刻,就等于签了这份合同。合同里写着你必须做什么、不能做什么。
不遵守?房东有权收回房子,你还会因为“非法入住”吃官司。
二、最要命的“传染性”
有些许可证(比如GPL)有个可怕的特点:传染性。
什么意思?
假设你开发一个软件,用了别人100行GPL代码。对不起,你的整个软件可能都得公开源代码。
这不是吓唬人。
真有公司栽过跟头——做了个APP,用了GPL代码但没开源,被人举报后APP直接下架。
为什么?
法院认为:如果你的软件和开源代码“有关联且整体发布”,那整个软件都得按GPL规则走,必须开源。
怎么躲?
技术上有办法:把开源代码放在独立文件夹、独立进程里,或者通过API调用,别混在一起。
但说实话,最稳妥的办法是:不想开源就别碰GPL。
三、许可证也会“打架”
一个项目里用了好几个开源代码?小心它们“八字不合”。
每个许可证都有自己的规矩:有的要求“必须用同一个许可证”,有的要求“保留版权声明”,有的说“不能加额外限制”。
这些规矩互相冲突怎么办?
比如Apache 2.0和GPL 2.0在某些情况下就不兼容,它们的代码不能合并到同一个程序里。
怎么办?
用之前查清楚。如果打架,要么换组件,要么把冲突的部分独立出去。
四、你用的真的是“开源”吗?
网上公开的代码,不一定都是“开源”的。
还有一种情况:有人把公司的代码偷出来发到网上,说是开源的。
你下载用了,侵权的是你。
怎么查?
· 只看正规开源社区的代码
· 确认有没有明确的许可证文件
· 找不到许可证?默认不是开源,别用
五、商标和专利也是雷
很多开源许可证只管著作权,不管商标和专利。
你用GPL代码没问题,但用人家注册的商标名?不行。
你用了代码里的方法,但这个方法别人有专利?可能侵权。
检查清单:
· 去掉代码里带的商业标识
· 查清楚有没有关联专利
· 涉及专利?看许可证里有没有专利授权条款
六、公司要上市?这是必查项
现在IPO审核,对开源软件查得很严。
监管会问:核心技术是不是基于开源?代码到底是不是你自己的?如果哪天别人让你开源,你怎么办?
如果你的核心代码里混了GPL代码,上市可能直接凉凉。
提前准备:
· 用工具扫描所有代码,搞清楚每段代码的来路
· 核心模块的开源代码比例,控制在30%以下(行业参考标准)
七、不守规矩会怎样?
违反开源许可证,两个后果:
第一,违约。 下载代码就是签了合同,不按合同办,赔钱。
第二,侵权。 法院现在的观点是:违反许可证,授权就没了。之后你用代码,就是侵权。
侵权后果严重得多——可能被要求停用系统、销毁代码。
你的业务系统被人要求停用?想想都可怕。
八、给公司的几条实在建议
1. 别让程序员自己说了算
所有开源代码的使用,必须填表申请、有人审核。
2. 分清“好说话”和“不好惹”的许可证
· MIT、BSD、Apache:好说话,一般只要求保留版权声明
· GPL、AGPL:不好惹,用了就可能要开源自己的代码
3. 记清楚用了什么
在项目里留个清单,记下:
· 用了什么开源软件
· 什么版本
· 什么许可证
· 改了哪些地方
4. 核心代码自己写
关键模块,尽量自己开发。实在要用开源,做好隔离。
5. 别往GitHub传公司代码
这是最常见的“无意泄密”。新人不懂规矩,把公司项目传到公共仓库,后悔都来不及。
开源是好事,能省时间、省钱。
但记住一句话:
享受了代码的便利,就得遵守人家的规矩。
不守规矩,不是不能跑,而是跑不远。
觉得不确定有风险的话,转给内部法务和技术团队看看。提前避开一个坑,比事后打官司强。
夜雨聆风
