很多开发者把代码往平台上一推,顺手选个 MIT,就觉得开源了、自由了。但协议这件事,本质不是放弃权利,而是一份写给别人看的授权合同。你允许谁用、怎么用、要不要署名、能不能闭源再卖,全看条款怎么写。选错了,轻则被人白用无话可说,重则自己踩了坑还不自知。
开源协议到底是什么
简单说,开源协议是著作权人给自己作品设的一份使用许可。著作权始终在你手里,开源只是你单方面授权他人在一定条件下使用。别人拿到代码,不是无主物,而是有条件借用,这个条件就是协议。
MIT:最宽松,但署名不能删
MIT 几乎是最友好的一种。它允许别人随意复制、修改、再发布,甚至闭源拿去商用,唯一硬要求:必须保留你的版权声明和许可声明。很多开发者误以为 MIT 就是随便用不用管,其实它的署名义务是刚性的。你把别人 MIT 库的版权声明删了再发布,就已经违约。对作者来说,MIT 适合想让代码最大范围传播、又只求一个署名的场景。
Apache:比 MIT 多了一层专利保护
Apache 在 MIT 的宽松基础上,多了关键一笔:它明确授予使用者专利许可。这意味着,如果你作为作者手里握着相关专利,用了 Apache,就等于承诺不拿专利去告那些按协议使用你代码的人。对使用方来说,这比 MIT 更稳。另外 Apache 也要求保留署名和变更说明。涉及专利技术、或团队想给使用方更多保障时,Apache 更合适。
GPL:传染性强,分发就必须开源
GPL 是最硬核的一个。它的核心规则只有一句:凡是用了 GPL 代码、并且对外分发的软件,整体都必须以 GPL 开源。这叫传染性。很多人有误区,以为只要不赚钱就能闭源用 GPL 代码,这是错的。GPL 看的是你是否分发,而不是是否盈利。你内部用没问题,可一旦把软件交给外部用户,衍生作品就得接着开源。适合希望衍生作品也保持开源、社区共建的场景。
三个常见误区
第一,以为开源等于放弃著作权。著作权从头到尾都是你的,开源只是授权。
第二,以为别人的 MIT 库可以随便改、署名随便删。MIT 的署名义务是刚性的,删了就违约。
第三,以为 GPL 代码只要不赚钱就能闭源用。GPL 看的是是否分发,不是是否盈利。
小结
选协议之前,先回答三个问题:允不允许商用、要不要保留署名、接不接受闭源。MIT 适合想最大范围传播、只求署名的场景;Apache 适合涉及专利、想给使用方更多保障的场景;GPL 适合希望衍生作品也保持开源的场景。把协议当合同看,开源才真正放心。
本文从实务角度梳理开源协议的法律边界,供开发者参考。具体项目选型建议结合自身业务咨询专业法律意见。