你有没有过这样的经历?在 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 文件长什么样。花两分钟搞清楚规则,能省掉后面一大堆麻烦。