前言
github上项目可以选择的协议有很多,相信大家都选择或者看见过None、GNU GPLv3、MIT License、Apache License 2.0,平时懒得选就点个MIT开源共享,但github提供了更多的协议可供选择,那么接下来仔细地分析每个协议的作用吧。
一、协议分析
1、None / No License
None并不是所谓的“不注明就放弃所有权利”哦,而是“保留所有权利”。也就是作者完全保留这个源码的所有权,不允许他人进行复制、分发、使用和修改。但是如果你把它上传到了github,那么默认允许他人查看(view)源码、分叉(fork)到自己的仓库,只是不能使用、修改而已。
2、GNU GPLv3
GNU GPLv3(General Public License v3.0),开源正是由于GPL而变得越来越强大,GPLv3在2007年发布,它允许个人使用、商业使用、专利授权,允许复制、分发、修改,并且作者不承担用户使用的一切后果。但是它有很多限制:
(1)必须开源
一旦使用了这个协议,如果他人想要进行分发、修改,那么他们修改后的源代码也必须开源。这是开源的核心保障,如果没有这条规定,就没有人愿意持续公开自己的源码了。
(2)保留协议和版权
保留对协议和版权的叙述。
(3)不允许更换协议
如果有人修改了一些源码,觉得自己改得还挺多的,想要换一个MIT或者什么协议,这是不允许的。一旦最原始的源码使用了GPL,其衍生的所有代码都必须使用GPL。这也是开源保障之一。
(4)声明变更
对于代码的变更需要有文档进行说明改了哪些地方。
3、MIT License
MIT是一个简单协议,只有三段话,允许任何人进行个人使用、商业使用、复制、分发、修改,唯一的限制就是,必须得加上源码作者的版权信息(CopyRight)。
适合不想用来赚钱,又想保留一点点自己的权利,提高自己声望的那些项目。
4、Apache License 2.0
Apache License 2.0协议经常被使用在大型开源软件项目上,它允许许任何人进行个人使用、商业使用、复制、分发、修改,作者免责,需要保留作者版权信息,声明更改的地方。
特点在于对于贡献者(Contributors)可以提供快速的专利授予。
5、BSD 2-Clause "Simplified" License
BSD 2-Clause协议是BSD协议分支,和MIT协议类似,允许许任何人进行个人使用、商业使用、复制、分发、修改,除了加上作者的版权信息,还必须保留免责声明,免去作者的一些责任(比如使用后果)。
6、BSD 3-Clause “New” or “Revised” License
BSD 3-Clause在BSD 2-Clause上增加了一个条款:
未经特别事先书面许可,著作权人的姓名和其贡献者的姓名不得用于认可或推销源自该软件的产品。
肯定是有人把这种开源软件拿去商业使用,宣传说是谁谁谁编写的,造成了不良的影响23333
7、Eclipse Public License 2.0
Eclipse Public License 2.0是一种商业友好型协议,允许个人使用、商业使用、专利授权、复制、分发和修改,作者免责,需要保留版权信息、必须开源、不允许更换协议。
特点在于可以对软件进行商业使用,对专利授权免去版税。
8、GNU AGPLv3
GNU AGPL v3(GNU Affero General Public License v3.0)允许个人使用、商业使用、专利授权、复制、分发和修改,作者免责,贡献者可以快速专利授予,需要保留版权信息、必须开源、不允许更换协议、声明变更。和GPL类似,不同点在于,如果你修改了源码并在放到网上提供服务,那么你必须公开这个修改版本的完整的源代码。
9、GNU GPLv2
GNU GPLv2 相比于 GNU GPLv3,不能进行专利授予。
10、GNU LGPLv2.1
GNU LGPLv2.1(GNU Lesser General Public License v2.1),主要被用于软件库(Library),和GNU GPLv3基本权利义务类似,不允许专利授予,并且虽然要求其衍生作品必须使用此协议,但只是链接到它(link to it)的代码则不受影响。
11、GNU LGPLv3
GNU LGPLv3和GNU GPLv3基本权利义务类似,对大型项目做出了一些限制。
12、Mozilla Public License 2.0
Mozilla Public License 2.0 是BSD系协议和GPL系协议的折中,允许个人使用、商业使用、专利授权、复制、分发和修改,作者免责,需要保留版权信息、必须开源,不允许更换协议(但允许更换成某些GNU协议),不允许使用商标。
13、The Unlicense
Unlicense是一个完全免费无约束的协议,也就是你放弃你的所有权利,将劳动成功无私奉献出来。允许任何人为了任何目的使用任何手段进行任何操作,不用保留任何信息,当然,作者免责。
二、特性总结
许可协议 | 许可 | 限制条件 | 其他 |
---|---|---|---|
None | 不允许任何操作 | - | - |
GNU GPLv3 | 个人使用 商业使用 专利授权 复制分发 修改 | 必须开源 保留版权信息 声明变更 不允许更换协议 | 作者免责 |
MIT License | 个人使用 商业使用 复制分发 修改 | 保留版权信息 | 作者免责 |
Apache License 2.0 | 个人使用 商业使用 专利授权 复制分发 修改 | 保留版权信息 声明变更 不允许使用商标 | 作者免责 |
BSD 2-Clause | 个人使用 商业使用 复制分发 修改 | 保留版权信息 | 作者免责 |
BSD 3-Clause | 个人使用 商业使用 复制分发 修改 | 保留版权信息 作者信息不允许用于推销 | 作者免责 |
Eclipse Public License 2.0 | 个人使用 商业使用 专利授权 复制分发 修改 | 必须开源 保留版权信息 不允许更换协议 | 作者免责 |
GNU AGPLv3 | 个人使用 商业使用 专利授权 复制分发 修改 | 必须开源 保留版权信息 声明变更 不允许更换协议 网络服务需公开完整源码 | 作者免责 |
GNU GPLv2 | 个人使用 商业使用 复制分发 修改 | 必须开源 保留版权信息 声明变更 不允许更换协议 | 作者免责 |
GNU LGPLv2.1 | 个人使用 商业使用 复制分发 修改 | 必须开源 保留版权信息 声明变更 不允许更换协议(衍生库) | 作者免责 |
GNU LGPLv3 | 个人使用 商业使用 专利授权 复制分发 修改 | 必须开源 保留版权信息 声明变更 不允许更换协议(衍生库) | 作者免责 |
Mozilla Public License 2.0 | 个人使用 商业使用 专利授权 复制分发 修改 | 必须开源 保留版权信息 声明变更 不允许更换协议(文件) | 作者免责 |
The Unlicense | 个人使用 商业使用 复制分发 修改 | - | 作者免责 |
三、推荐的使用姿势
1、普通开发者
如果你是信仰开源大法的普通开发者,使用MIT协议即可,它会保留你的版权信息,又允许他人进行修改。
2、用到了GNU的开发者
如果你用到了GNU的库,由于“传染性”,不允许更换协议,必须选择GNU相关的协议。
3、开源库开发者
推荐使用GNU LGPL相关协议。
4、无私奉献的雷锋
感谢你为世界作出的贡献,必选The Unlicense。
5、不知道该选什么
选择默认的None即可,保留你的全部权利,后续再去决定要不要更换协议。