开源许可证入门:开发者必须知道的那些事

你有没有过这样的经历?在 GitHub 上找了一个不错的项目,想拿来做点小修改,结果发现文件夹里有个叫 LICENSE 的文件,打开一看全是英文,什么 MIT、GPL、Apache,看得一头雾水。别慌,这其实就是开源许可证,它决定了你能怎么用这个代码。

什么是开源许可证

很多人以为“开源”就是随便用、随便改、随便发。其实不是。开源不等于无限制,每个开源项目都受某种许可证约束。就像你租房子要签合同一样,开源许可证就是你和代码作者之间的“使用协议”。

它主要回答三个问题:能不能商用?改了之后能不能闭源?用了之后要不要公开自己的代码?不同的许可证,答案不一样。

常见的几种许可证

MIT 许可证是最宽松的一种。你几乎可以干任何事:复制、修改、出售,只要保留原来的版权声明就行。很多前端框架比如 React 早期就用 MIT,现在也还有大量小工具沿用。

Permission is hereby granted, free of charge, to any person obtaining a copy of this software...
上面这段话开头的就是 MIT 许可证的典型样式。

GPL 系列则严格得多。如果你用了 GPL 的代码,哪怕只是一小部分,你的整个项目也必须开源,并且用同样的方式授权。这就像是“传染性”条款,所以有些人叫它“病毒式许可证”。Linux 内核就是用 GPL v2。

Apache 2.0 介于两者之间。允许商用、允许修改,还明确包含了专利授权,适合大公司使用。Kubernetes 和 Android 的部分代码就用了这个。

选错许可证会怎样

假设你在公司做产品,从网上抄了一段 GPL 代码,结果没注意要求,最后打包成闭源软件卖出去。一旦被发现,轻则下架,重则吃官司。之前国内就有公司因为类似问题被起诉,赔了不少钱。

反过来,你自己写了个小工具想分享出去,但没加许可证。这时候别人其实不能合法使用你的代码,哪怕你上传到了 GitHub。因为默认情况下,版权是自动保护的,不等于你放弃了权利。

怎么选合适的许可证

如果你只是想让更多人用你的项目,MIT 最省心。想保护成果不被大厂拿去闭源赚钱,可以考虑 GPL。做企业级项目,担心专利纠纷,Apache 2.0 更稳妥。

GitHub 提供了一个简单的选择工具,叫 Choose a License,勾几个选项就能推荐合适的类型,挺方便。

下次看到开源项目,别急着 clone,先看看 LICENSE 文件长什么样。花两分钟搞清楚规则,能省掉后面一大堆麻烦。