
当你兴致勃勃地写完一个开源项目,准备推送到 GitHub 时,往往会卡在一个看似不起眼、却至关重要的环节:我该选哪种开源许可证?很多开发者习惯性地勾选 MIT,却并不清楚它在专利、商用和再分发上的真实边界。选错许可证,轻则让企业用户不敢采用,重则让自己的代码被闭源吞噬。
开源许可证大体可分为两大类:宽松型(Permissive)与著佐型(Copyleft)。宽松型以 MIT、Apache 2.0、BSD 为代表,对使用者的限制极少,允许代码被修改后闭源商用,只需保留原版权声明。其中 Apache 2.0 额外提供了明确的专利授权条款,对商业公司尤为友好;MIT 则最为精简,几乎是"想怎么用就怎么用"。
著佐型则强调"开源的传染性"。GPL 要求任何基于该代码衍生、且对外分发的软件,也必须以 GPL 开源;LGPL 相对温和,允许动态链接而不强制整体开源;AGPL 则更进一步,把"通过网络提供服务"也视为分发,要求 SaaS 服务方同样公开源码。这也是为什么很多云厂商对 AGPL 项目敬而远之。
如何为项目选择合适的许可证?首先明确你的目标:若希望最大化传播与商用 adoption,选 MIT 或 Apache 2.0;若希望保护开源成果不被闭源利用,选 GPL/AGPL;若做的是前端库且只关心署名,BSD 也很合适。其次要注意依赖兼容性——如果你的项目依赖了 GPL 代码,那么整体上通常也必须采用 GPL。
一个常见误区是"不写许可证就等于开源"。事实上,没有许可证的代码默认保留所有版权,他人即便看到源码也无权合法使用、修改或再分发。所以发布开源项目的第一步,永远是显式地附上一份许可证文件。
总结而言,开源许可证不是法律装饰,而是界定权利与义务的契约。花十分钟读懂 MIT、Apache 2.0 与 GPL 的核心差异,能让你辛苦写出的代码既被广泛使用,又不至于失去应有的保护。建议新手从 MIT 起步,企业项目优先考虑 Apache 2.0。