前言
几乎所有程序员入门学习或者在编码中使用过各种各样的开源库或开源框架,但是有多少程序员认认真真了解过的开源许可证?确实,我大意了,没有深入去了解软件开源许可证。程序员不了解软件开源许可证,这好吗?这不好。无论是开发者与使用者要讲武德,谢谢朋友们!
问题
- 软件开源许可证有什么类型?
Copyleft / Restrictive (限制许可)
例子:GPL、MPL、EPL。
- Eclipse Public License
Non-Copyleft / Permissive (宽松许可)
例子:LGPL、Apache、BSD、MIT。
延伸:
Copyleft源于CopyRight(版权)。
Copyleft要求软件重新分发的时候必须使用当前原来软件的许可证。
Non-Copyleft允许软件重新分发的时候不需要使用当前原来软件的许可证。
- 软件开源为什么需要开源许可证?
各行各业都需要许可证才可运营,软件开源也不例外,不是说软件开源随便就使用,如果没有一定的准则,就很容易引起一系列不必要的法律纠纷,不利于软件开源的持续发展。为了促进软件开源能良好发展,开源许可证规定软件开源的使用权力与义务,从而保障开发者与使用者的合法利益。
常用许可证
MIT
解释:Massachusetts Institute of Technology 的简写,源自美国麻省理工学院命名。
内容:
MIT Licensemit-license.org特点:不需要公开源码,基本可以为所欲为,最低限度声明原开发者版权。
例子:react.js、vue.js、Visual Studio Code。
Apache
解释:Apache License的简写,指非盈利开源组织Apache采用的许可证,主流版本Apache-2.0 License。
内容:
Apache License, Version 2.0www.apache.org特点:不需要公开源码,修改源码必须声明,但禁止用开发者名义进行推广。
例子:Spring Boot、Kubernetes、Netty。
GPL
解释:GNU General Public License 的简写,GNU通用公共许可协议,主流版本GNU General Public License v3.0
内容:
The GNU General Public License v3.0 - GNU Project - Free Software Foundationwww.gnu.org特点:强制公开所有的代码,必须要使用相同的许可证,修改源码必须要声明。
例子:Bash、Linux、Shadowsocks、Ansible。
LGPL
解释:GNU Lesser General Public License 的简写, GNU宽通用公共许可证,主流版本GNU Lesser General Public License v3.0
内容:
GNU LGPL | Open Source Initiativeopensource.org特点:不需要公开源码,开发者在不修改源码的前提,只引用源码的功能,无需强制开源自己的代码。但是修改源码必须要声明,并采用相同的许可证。
例子:Qt、Glances。
BSD
解释:Berkly Software Distribution 的简写,指伯克利软件发行版。
内容:
License:BSD-4-Clause - Free Software Directorydirectory.fsf.org特点:不需要公开源码,软件产品文档必须声明许可证,但禁止用开发者名义进行推广。
例子:Chromium、Unix。
MPL
解释:Mozilla Public License 的简写,指非盈利开源组织Mozilla采用的协议。主流版本Mozilla Public License 2.0
内容:
Mozilla Public Licencewww.mozilla.org特点:不需要公开源码,修改代码必须声明,修改代码必须要无偿贡献版权给原作者。
例子:Mozilla Firefox。
延伸:
CDDL
解释:Common Development and Distribution License 的简写,指通用开发与销售许可协议。
内容:
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1oss.oracle.com特点:不需要公开源码,提供专利保护。
例子:OpenSolaris、NetBeans IDE。
CDDL许可证由Sun公司创建的,基于MPL许可证之上。
EPL
解释:Eclipse Public License 的简写,指非盈利开源组织Eclipse采用的协议。主流版本Eclipse Public License 2.0
内容:
Eclipse Public License 2.0 | The Eclipse Foundationwww.eclipse.org特点:不需要公开源码,修改代码必须声明,修改代码必须要无偿贡献版权给原作者。
例子:Eclipse IDE。
GPL是最限制的开源许可证之一。
MIT是最宽松的开源许可证之一。
所有协议共同特点就是开发者都不需要承担代码使用后的风险。
延伸:
开源的法律保护opensource.guide建议
使用软件开源项目的不要删除代码里面版权注释。
写软件开源项目不要忘记加上开源许可证。
注意开源许可证的使用范围,并遵循许可准则。
劝各位Coder耗子尾汁,好好反思,以后要好好尊重知识产权,重视知识产权保护。