虽然知道开源有个许可证 LICENSE,但一直没给自己写的一些开源项目选择开源许可证。于是准备系统了解一下开源许可证,以及如何为 Github 项目添加 LICENSE。
OSI(Open Source Initiative)
即开发源代码组织,是一个旨在推动开源软件发展的非盈利组织。可以在 Open Source Initiative 中查看所有的开源协议。
开源许可证
关于开源许可证的简单区别
至于如何选择,下图更加通俗易懂
其中开源许可证可分为两大类
宽松式(permissive)许可证
宽松式许可证(permissive license)是最基本的类型,对用户几乎没有限制。用户可以修改代码后闭源。
它有三个基本特点。
(1)没有使用 限制
用户可以使用代码,做任何想做的事情。
(2)没有担保
不保证代码质量,用户自担风险。
(3)披露要求(notice requirement)
用户必须披露原始作者。
常见许可证
常见的宽松式许可证有四种。它们都允许用户任意使用代码,区别在于要求用户遵守的条件不同。
(1)BSD(二条款版)
分发软件时,必须保留原始的许可证声明。
(2) BSD(三条款版)
分发软件时,必须保留原始的许可证声明。不得使用原始作者的名字为软件促销。
(3)MIT
分发软件时,必须保留原始的许可证声明,与 BSD(二条款版)基本一致。
(4)Apache 2
分发软件时,必须保留原始的许可证声明。凡是修改过的文件,必须向用户说明该文件修改过;没有修改过的文件,必须保持许可证不变。
不难看出这类许可证要求相对宽松,市面上大部分的开源项目主要以 MIT 和 Apache 两者为主。使用 MIT 协议开源项目如 vue,react,bootstrap,vscode,electron,axios,terminal 等等,作为大多数开发者而言,MIT 无法是最好的选择。
Copyleft 许可证
Copyleft 是理查德·斯托曼发明的一个词,作为 Copyright (版权)的反义词。
Copyright 直译是"复制权",这是版权制度的核心,意为不经许可,用户无权复制。作为反义词,Copyleft 的含义是不经许可,用户可以随意复制。
但是,它带有前提条件,比宽松式许可证的限制要多。
- 如果分发二进制格式,必须提供源码
- 修改后的源码,必须与修改前保持许可证一致
- 不得在原始许可证以外,附加其他限制
上面三个条件的核心就是:修改后的 Copyleft 代码不得闭源。
常见许可证
常见的 Copyleft 许可证也有四种(对用户的限制从最强到最弱排序)。
(1)Affero GPL (AGPL)
如果云服务(即 SAAS)用到的代码是该许可证,那么云服务的代码也必须开源。
(2)GPL
如果项目包含了 GPL 许可证的代码,那么整个项目都必须使用 GPL 许可证。
(3)LGPL
如果项目采用动态链接调用该许可证的库,项目可以不用开源。
(4)Mozilla(MPL)
只要该许可证的代码在单独的文件中,新增的其他文件可以不用开源。
参考文章
开源许可证教程 - 阮一峰的网络日志 (ruanyifeng.com)
Github 项目添加 LICENSE
Github 官方专门制作了一个网站 Choose a License 帮助大家选择合适的开源,License。中文版也有 选择一个开源许可证。不过我更推荐下面在 Github 仓库页中来新增 LICENSE。
在仓库页中,Add file-> Create new file
输入 LICENSE(建议大写),右侧将会弹出 Choose a license template,这里我选择 MIT 协议
点击 Review and submit,此时就会回到添加文件的地方,并且自动为你填写好 Message,接着点击 Commit new file 即可
整个许可证内容如下
MIT License
Copyright (c) 2022 kuizuo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
再次刷新便可看到效果