首页 / 科技 / 正文

你随手扒的开源代码,可能栽在没搞懂的开源许可证上

上周帮做小创业项目的朋友擦屁股。 他为了省三万块的外包费,从GitHub上扒了个star挺高的批量抠图开源库,改了个界面就接到自己的付费社群工具里卖99一年,上线才两周,原作者的邮件就追过来了——不是要夸他用得好,是要求他把所有营收全额退还,还要在项目首页公开署名。 他一开始还懵。 “不是开源的吗?我拿过来用怎么了?”
开发者收到开源许可证侵权警告邮件截图

你以为的“随便用”,其实是踩了许可证的红线

说实话,我刚接触开源那会,也和他想法一模一样。 总觉得作者把代码传到公开平台,就是扔到公共水池里的水,谁都能随便舀,根本不会想到每个项目根目录里那几行不起眼的LICENSE文件,本质就是作者和所有使用者签的隐形合同。 所有挂了开源许可证的代码,从来不是“无主物”,作者的权利只是在许可证约定的范围内让渡给你,不是直接把所有权扔了。 举个最直白的类比。 MIT许可证是什么?就像小区楼下开面包店的老板,把自己家最基础的吐司配方贴在店门口的公告栏,你拿回去调整点口味、加点果干,做成自己家的吐司卖,哪怕你不告诉他,甚至对外说这是你自己研发的独家配方,他也不会找你麻烦——唯一的要求是,你不能拿着他写的配方原件,反过来告他侵权。 那GPL许可证呢? 就像你借了邻居家的祖传奶茶配方,你要是自己在家喝,随便改比例都没人管;但你要是开个店卖这个奶茶,就得把你自己调整过的所有配方细节全公开,让所有来你店里的顾客都能拿到完整的制作方法。你要是藏着掖着,改了点料就当自己的独家秘方卖钱,那就是实打实的违约。

那些被忽略的坑,真的能让小团队直接垮掉

真的别侥幸。 之前有个做轻量壁纸APP的小团队,一共就三个人,融资了几十万准备做商业化,上线前为了省开发时间,用了个GPL协议的开源图片加载库。上线半个月才反应过来——自己整个APP是准备闭源做付费会员的,根本不可能把全部源码公开给用户。 那怎么办? 要么花大价钱把整个图片加载模块全换成自己写的代码,要么直接把APP源码全公开,把自己的核心竞争力全摊给所有人。最后他们算了笔账,换代码要花近二十万,相当于把第一轮融资的三分之一全砸进去了。 还有人觉得“我就小范围用,不商用,没人盯着我”。 错了。 很多许可证的约束根本不看你是不是商用。哪怕你做个免费的个人博客,用了某个要求衍生作品必须同协议开源的代码,没遵守规则,原作者照样有权利找你追责。现在专门做开源维权的平台越来越多,原作者只要上传自己的代码,平台就会自动全网扫描商用的侵权项目,根本不用自己挨个找。
常见开源许可证权利义务对比手绘图
常见开源许可证权利义务对比手绘图

普通人碰开源,根本不用背完所有条款

不过话说回来,真没必要被这些条款吓退。 很多刚入行的开发者总觉得,要把GPL、AGPL、MIT、Apache、BSD所有许可证的条款全背下来,才算会用开源——哪有那个精力啊? 给个最实用的偷懒技巧。 你扒代码之前,先花十秒钟点开项目根目录的LICENSE文件,只要看到是MIT、Apache2.0、BSD这三个的,你只要不删掉文件里原作者的版权声明,哪怕你改代码、商用、闭源用,基本不会出大问题。 要是看到是GPL、AGPL这类带“传染性”的,核心要求就是只要你用了它的代码做衍生作品,你的衍生作品也必须用同样的协议开源——你要是做的东西是要对外卖的、要闭源的,赶紧换,别想着钻空子。 我大学的时候就踩过这个坑。 当时做课程设计,图省事抄了半段GPL协议的代码,交上去的时候被指导老师当场指出来,说要是这代码是商用的,我那点实习工资都不够赔的。当时脸都红了,赶紧回去重写。 昨天那个找我帮忙的朋友终于和原作者谈妥了。 他把上线两周赚的不到八千块全打过去,还在自己的项目首页最显眼的位置加了原作者的致谢链接。他说以后再也不随便扒GitHub上的代码了,哪怕再省时间,先把LICENSE文件点开看一眼。 我倒觉得挺好。 毕竟你省下来的那点开发时间,真的抵不上一次侵权赔偿的零头。