目前的开源协议种类非常多,也很难记住每种的详细特点和区别,但我们大多数时候只需要使用主流协议即可,主流的开源协议主要为以下六种:

GPLBSDMITMozillaApacheLGPL

但是就算是这六种协议的特点和区别也很难总结,所以这里我借用一张阮一峰老师的图来分析这六种协议的简单区别:

简单分析一下这个图就可以发现他们对代码的宽松程度:

  1. 修改源码之后是否可以闭源,说明右边这三个协议要比左边的协议更宽松

  2. 其中 Apache 许可证需要在每一个修改过的文件都放置版权声明,因此它要相对严格一点。

  3. MIT 许可证是最宽松的,它允许衍生出来的软件使用它的名字促销。

    举个例子:electron 和 vue 都是以 MIT 协议开源的,因此 electron-vue 就相当于是基于它们的衍生软件,因此就可以使用 electron 和 vue 来进行促销(假设商用的情况下)。

    民间流传着关于 MIT 协议的一个很接地气的描述:“代码你随便用,但是出了事别找我”。

左边这三个许可证在修改代码之后必须开源,但又有一些小区别:

  1. GPL 许可证需要衍生代码的开源协议也是 GPL 协议。
  2. 其余两种不限制开源协议,但是 Mozilla 许可证需要对代码修改之处提供修改说明文档,而 LGPL 许可证则不需要。

因此,六大许可证的宽松程度由严到宽分别是:GPL > Mozilla > LGPL > Apache > BSD > MIT。