39
0

细讲开源协议

2026-08-04
2026-08-25
文章摘要
|

细讲开源协议

为什么要有开源协议

开源,就是将自己项目的源代码开放给公众,允许其他人查阅、使用等。

不一定得是上传到GitHub这一种代码托管和VCS平台,将代码打包成一个压缩包,供别人下载,这都叫做开源。

但是,辛辛苦苦写的代码也不能一下就被人糟蹋了!别人改一个名字、再改一点代码,宣称是自己的项目,你都没法溯源。

为了在维持开源精神的同时,能保留自己工作的成果,就需要一种共识的约定:这就是开源许可证的意义。

开源许可证的类型

许可证有较为严格的,能够严格规范其他人对代码的行为,比如GPL,LGPL(比GPL更宽松)等。还有一些比较宽松,让其他人更加自由的使用,譬如BSD,MIT等。

以GPL v3为例,探讨严格的开源规范

GPL系列比较常见的有GPLv2(or later)和GPL v3,今天我们的主角是GPL v3这一协议。

以下内容为笔者自行搜查,可能存在疏漏或错误,请以GNU公布的GPLv3协议为准,见https://www.gnu.org/licenses/gpl-3.0.txt

GPLv3维持了自由软件的四大自由,分别是:

  • 可为任何目的运行程序
  • 可研究和修改程序
  • 可再分发、拷贝
  • 可分发修改版本

这看着也不严格嘛!别急,这后面是有一些规范的,主要有以下几点:

  • 传染性。如果你的项目是基于GPLv3开源的,那么别人的修改项目必须也是GPLv3开源。
  • 专利保护。这是GPLv3的优点之一,就是即使你开源了,但仍然受专利保护。如果你违反GPLv3协议了,那么根据许可证规定,违反者和开发者之间的授权关系自动解除。没有授权你还修改、使用?侵权了。有一案件,见https://zhuanlan.zhihu.com/p/408916516。但是,这也不是软件专利许可!
  • 反硬件限制。假设你的项目被硬件开发商修改并使用,那么其不能限制用户对这个衍生的使用。具体点说,厂商不能给衍生程序加上加密锁等的东西,让用户虽然拥有代码,但无法在自己的设备上运行修改版。
  • 兼容性好。至少比GPLv2是要更加兼容了,这样就可以同时用GPLv3和其他不冲突的开源协议,供开发者自行选择。

需要注意的是GPLv3并不禁止商用。

以MIT为例,探讨简单宽松的开源协议

MIT是一款很受欢迎的开源协议,为什么?因为宽松。

同样请自行确认,https://mit-license.org

你可以对代码进行自由修改、使用、再分发等操作,而这些只受到以下限制:

  • 保留原作者声明。就是在项目中,说出来:我的项目是什么项目的衍生版本,对方的copyright,对方也使用了MIT。好了。
  • 保留许可声明。你也需要保留MIT的协议文字。
  • 免责。如果你修改了我的项目,导致和别人产生了纠纷,对不起,我不负责任。

除此之外几乎没有明显的限制了。甚至可以商用闭源,只要不违反MIT,就可以任意使用。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论