# 开源许可证

版权法默认禁止共享,没有许可证的软件等同于保留版权,虽然开源但是只能看源码不能使用,一用就会侵犯版权,软件开源的话是必须明确地授予用户开源许可证。常见许可证如下图:

SoftwareLicense2

开源许可分为两大类:

  • Permissive许可证。
  • Copyleft许可证。

# Permissive许可证

该许可证对用于几乎没有限制,用户修改代码后可闭源。它有三个特点:

  1. 用户可用代码做任何事情。
  2. 不保证代码质量,用户自己承担风险。
  3. 用户必须说明原作者。

# 常见Permissive许可证

  1. BSD(2-Clause):分发软件时必须保留原始许可声明。
  2. BSD(3-Clause):分发软件时必须保留原始许可声明。不能使用原始作者名字做宣传。
  3. MIT:与BSD(2-Clause)基本一致。
  4. Apache2:分发软件时必须保留原始许可声明。凡是修改过的文件,必须向用户说明该文件修改过,没有修改过的文件必须保持许可证不变。

# Copyleft

Richard Stallman发明的这个词,与Copyright相对,Copyright是"复制权",是版权制度的核心,不经许可,无权复制。而Copyleft则是不经许可,用户可以随意复制。但是它也有一些限制,核心是修改后的代码不能闭源:

  • 如果分发二进制格式,必须提供源码。
  • 修改后的源码必须与修改前的许可证保持一致。
  • 不能在原始许可证以外附加其他限制。

# 常见Copyleft许可证

  1. Affero GPL(AGPL):如果云服务用到的代码是该许可证,云服务的代码也必须开源。
  2. GPL:如果项目包含了GPL许可证代码,整个项目必须使用GPL许可证。
  3. LGPL:如果项目采用动态链接方式调用该许可证的库,项目可以不开源。
  4. MPL(Mozilla):只要该许可证的代码在单独的文件中,新增的其他文件可以不开源。

# 许可证商业可用性

  1. BSD:商业软件可用,也可修改代码。
  2. MIT:商业软件可用,也可修改代码,甚至可以卖。
  3. MPL:商业软件可用,可修改代码,修改后的代码版权归软件的发起者。
  4. LGPL:商业软件可用,但不能修改LGPL协议代码。
  5. GPL:商业软件不能使用GPL代码。
  6. EPL(Eclipse Public License):商业软件可用,可修改代码,要承担代码可能产生的侵权责任。
  7. CDDL(Common Development and Distribution License):商业软件可用,也可修改代码。

# 如何选择

这么多许可证如何选择?许可证选择这里根据用途来选择许可证。

  • 如果你想要一个简单的许可证,且不怎么受限制,可选择MIT。
  • 如果你想要别人不能基于你的项目闭源,可选择GNU GPLv3。