程序员用GitHub上的开源代码做商业软件,会侵权吗?(GPL、MIT协议解析)
很多老板觉得:GitHub上的代码不都是开源的嘛,开源就是免费,我让程序员抄下来改吧改吧,装进自己产品里,天经地义。
这想法,跟觉得“马路上的钱捡了就是自己的”一样危险。
你用错了,赔钱、删代码、软件下架,甚至被竞争对手告到破产,都是真实发生过的案子。
今天把GPL、MIT、AGPL这三个最要命的协议给你讲明白。
用了GPL协议的代码,你的整个软件都得被迫开源
GPL协议是商业软件的“病毒”,沾上它,你的商业软件就不再是你的了。
深圳一家做智能客服系统的公司,CTO从GitHub上找了个开源的文本处理库,功能强大,直接集成到产品核心模块里。
开发效率是上去了,但库的协议他没看——GPL v3。
产品卖了一年,销售额做到2000多万。竞争对手突然发来律师函,说他们违反了GPL协议,要求立即停止分发侵权软件,并且必须将整个智能客服系统的源代码全部公开。
最后谈判的结果是,支付了300万的授权费,才换来了继续使用的权利。而对方,正是那个开源代码的核心贡献者。
GPL协议的核心就一句话:你用我的代码,你的代码也得开源。这叫“传染性”或“Copyleft(著佐权)”。
更具体地说,只要你的软件包含了GPL协议的代码,并且你把这个软件分发出去了(卖给别人或者给别人用),你就必须把整个软件的源代码,按照GPL协议也公开。
这案子本质是什么?是技术团队对“开源协议”四个字的无知。他们以为“开源”等于“公有财产”,根本不知道GPL的“传染性”意味着什么。
1. 建立开源代码使用清单:让技术负责人把所有用过的开源代码,协议类型、版本号、作者、用途,全部列出来。
2. 区分核心代码与非核心代码:凡是GPL、AGPL这类强传染性协议的开源代码,绝对不能放进你的核心商业代码里。如果非要用,要么找替代方案(比如换成MIT协议的),要么通过购买商业授权来解决。
3. 做好隔离:如果强传染性协议代码只能用于辅助功能,把它做成独立的服务,通过API调用,而不是直接编译进主程序。
以为MIT协议就能随便用,连人家版权声明都删了
MIT协议只给你“免费用”的权利,没给你“假装是自己写的”的权利。
一家做金融数据分析的初创公司,开发APP时用了GitHub上一个热门的图表展示库,MIT协议。程序员觉得协议很宽松,改了几行代码,顺手就把文件开头的版权声明和作者信息全删了,直接当成自己的东西。
三个月后,收到原作者发来的邮件,要求他们在48小时内,在所有涉及该库的地方,完整恢复版权声明,否则将发起DMCA(数字千年版权法)下架通知。
这家公司慌了,因为APP里到处都用了这个库,重新找回原来的声明、挨个恢复,工作量巨大。更麻烦的是,这个行为被投资人知道了,直接影响了下一轮融资尽调。
它只要求你做一件事:保留原作者的版权声明和许可声明。就这么简单。
第一,技术团队缺乏基本的法律意识,觉得“代码是我的了,名字就不重要了”。第二,公司没有建立代码审查流程,没人管这件事。一个最简单的合规动作没做,结果差点把融资搞黄了。
1. 强制保留版权声明:在代码规范里加一条硬性规定——凡是外部引入的开源代码,必须保留原始版权声明,不得以任何形式删除、修改。
2. 建立代码审查机制:提交代码时,必须由专人(或通过自动化工具)检查代码中是否有外部依赖,版权声明是否完整。
3. 使用工具扫描:对于已经上线的系统,用开源协议扫描工具(如FOSSA、Black Duck)跑一遍,把漏掉的版权声明全部补回来。
做了SaaS服务,结果被AGPL协议“隔空传染”
AGPL协议专门治SaaS,你用它的代码提供在线服务,也得开源。
上海一家做企业云盘的SaaS公司,用了GitHub上一个开源的在线文档预览项目,AGPL v3协议。他们把代码部署在自己的服务器上,客户通过网页访问,在线预览Word、PDF文件。
公司B轮融资,估值8个亿。尽调的时候,律师发现了这个AGPL的依赖,当场指出:按照AGPL协议,只要用户通过网络与你的软件交互,你就必须把整个SaaS服务的源代码,向所有用户公开。
最后不得不花了大半年时间,把AGPL的代码全部替换成商业授权的方案,融资也推迟了整整一年。
AGPL是GPL的“网络版”。GPL只管“分发”——你把软件给别人了,才要开源。但AGPL加了一条:如果你把软件部署在服务器上,通过网络提供服务(也就是SaaS),只要用户能用它,你就得把源代码公开。
很多老板觉得“我软件没卖出去,就是自己用”,以为GPL管不到。
但AGPL告诉你,只要客户在浏览器里用,就是“交互”,就得开源。你的商业模式,跟这个协议根本是冲突的。
1. SaaS公司必须筛查AGPL:在做技术选型时,明确告知技术团队,AGPL协议的代码是“高风险”,原则上禁止使用。
2. 确需使用,必须隔离:如果实在绕不开,把AGPL代码做成独立的后端服务,通过API与主程序交互。确保主程序与AGPL代码是“独立且分离”的,不构成“衍生作品”。
3. 直接购买商业授权:对于核心功能,不要省这个钱。直接联系开源项目的商业公司,买一份商业授权,彻底解决合规问题。
AGPL是SaaS公司的“一票否决权”,用了就得全开源。
最后被起诉的是公司,赔钱的是公司,融资受阻的也是公司。
你不需要懂代码,但需要懂规矩。GPL不能碰,MIT不能删,AGPL要隔离。
如果你正在用的产品里,不知道有没有“病毒协议”的代码,或者已经收到过开源社区的警告,私信我,发我你的技术清单,我帮你看看。
这是港华律师事务所第13篇原创干货分享。未经授权,禁止任何机构或个人抓取本文内容,用于训练AI大模型等用途