凡代码都有权利和义务@开源软件许可类别分析
1 引言
你写代码时,可能也会重用代码,这包括代码片段、库、函数、框架和整个应用程序。
如果你想把软件代码添加到你的代码库中,需要知道所有的软件代码都有一定的权利和义务。
免费和开源软件(FOSS)是免费的,但你并不是可以随意使用它们。
正式开发的代码通常都有特定的软件许可证。
软件许可证有很多不同的类型,对不遵守许可证的惩罚可能很严厉。如果你在没有遵守许可证义务的情况下重用一个组件,许可证颁发者可能会起诉你,你可能会被迫发布自己的源代码。为了保护你的代码和你的组织,你需要在使用任何不是你自己编写的代码(包括库和框架)之前了解这些软件许可证。
2 软件许可证有哪些不同类型?
以下是应该了解的五种常见的软件许可模式。四种是开源许可证的例子(允许你在一定程度上重用代码),还有一种不允许任何重用。
2.1 公共领域许可(Public Domain)
这是最宽泛的软件许可证类型。当软件处于公共领域时,任何人都可以不受任何限制地修改和使用。但在将其添加到自己的代码库之前,你应该始终确保它是安全的。这里要注意的是,没有明确授权的代码不会自动进入公共领域。这包括你在互联网上找到的代码片段。
2.2 允许性许可(Permissive)
允许性许可证也被称为 "Apache风格 "或 "BSD风格"。它们包含关于如何修改或重新分发软件的最低要求。这种类型的软件许可证是自由和开放源码软件中最流行的许可证。除了Apache License和BSD License之外,另一个常见的变体是MIT License。
2.3 LGPL
GNU Lesser General Public License允许你在软件中链接开源软件库。如果你只是简单地编译或链接一个LGPL授权的库与你自己的代码,你可以在任何你想要的许可证下发布你的应用程序,甚至是专有许可证。但如果你修改库或将其部分复制到你的代码中,你就必须在类似于LGPL的条款下发布你的应用程序。
2.4 限制性许可证(Copyleft)
Copyleft许可证也被称为互惠许可证或限制性许可证。最著名的复制许可或互惠许可的例子是GPL。这些许可证允许你修改被许可的代码,并在此基础上发布新的作品,只要你在相同的软件许可证下发布任何新作品或改编作品。例如,一个组件的许可证可能会说,该作品可以自由使用,并且只能为个人使用而发布。因此,您创建的任何衍生产品也将仅限于个人使用。衍生物是指你开发的包含该组件的任何新软件)。
这里的问题是,你的软件用户也有权利修改代码。因此,你必须公开你自己的源代码。但很多时候,公开你的源代码未必对你有利。
2.5 专有许可证
在所有类型的软件许可证中,这是限制性最强的。它背后的理念是保留所有权利。它一般用于不得修改或重新分发作品的专有软件。
3 列表对比
下表比较了每种许可证的各种特征,是基于七个主题或类别的每种许可证的条款和条件的一般指南。最近的工具,如欧盟委员会的Joinup Licensing Assistant,使基于40多个主题或类别的许可证选择和比较成为可能,并可访问其SPDX标识符和全文。下表列出了以下主题的权限和限制:
1.链接
许可的代码与根据不同许可证许可的代码的链接(例如,当代码作为一个库提供时)。
2.分发
向第三方分发代码
3.修改
被许可人对守则的修改。
4.专利授权
保护被许可人免受代码贡献者就其贡献提出的专利要求,保护贡献者免受被许可人提出的专利要求。
5.私人使用
对代码的修改是必须与社区共享还是可以私人使用(如公司内部使用)
6.分许可
修改后的代码是否可以根据不同的许可(如版权)获得许可,还是必须保留提供代码时的同一许可。
7. TM授权
被许可人使用与许可代码或其贡献者相关的商标。
许可 |
作者 |
最新版本 |
发布时间 |
链接 |
分发 |
修改 |
专利授权 |
私人使用 |
分许可 |
TM授权 |
3.0 |
2002 |
允许性 |
允许性 |
是 |
是 |
允许性 |
否 |
|||
Affero Inc |
2.0 |
2007 |
限制性 |
除GNU AGPL外,其余均为限制性 |
限制性 |
? |
是 |
? |
? |
|
2.0 |
2004 |
允许性 |
允许性 |
允许性 |
是 |
是 |
允许性 |
否 |
||
2.0 |
August 6, 2003 |
允许性 |
? |
有限的 |
? |
? |
? |
? |
||
2.0 |
2000 |
有限制 |
有限制 |
有限制 |
否 |
允许性 |
有限制 |
否 |
||
42 |
1987 |
允许性 |
允许性 |
允许性 |
否 |
允许性 |
允许性 |
否 |
||
3.0 |
? |
允许性 |
允许性 |
允许性 |
Manually |
是 |
允许性 |
Manually |
||
? |
1.0 |
August 17, 2003 |
允许性 |
? |
允许性 |
? |
? |
? |
? |
|
1.0 |
2009 |
公共领域 |
公共领域 |
公共领域 |
否 |
公共领域 |
公共领域 |
否 |
||
4.0 |
2002 |
允许性 |
允许性 |
允许性 |
否 |
是 |
允许性 |
否 |
||
4.0 |
2002 |
限制性 |
限制性 |
限制性 |
否 |
是 |
限制性 |
否 |
||
2.1 |
June 21, 2013 |
允许性 |
允许性 |
允许性 |
否 |
允许性 |
有限制 |
否 |
||
1.0 |
December 1, 2004 |
允许性 |
? |
有限的 |
? |
? |
? |
? |
||
1.0 |
May 2001 |
允许性 |
? |
限制性 |
? |
? |
? |
? |
||
Cryptix Foundation |
N/A |
1995 |
允许性 |
允许性 |
允许性 |
Manually |
是 |
? |
Manually |
|
2.0 |
August 24, 2017 |
有限的 |
有限的 |
有限的 |
是 |
是 |
有限的 |
Manually |
||
1.0 |
2007 |
允许性 |
? |
允许性 |
? |
? |
? |
? |
||
1.2 |
May 2017 |
允许性, according to EU law (Recitals 10 & 15 Directive 2009/24/EC) |
限制性, ,有明确的兼容性列表 |
限制性, ,有明确的兼容性列表 |
是 |
是 |
限制性, ,有明确的兼容性列表 |
否 |
||
The FreeBSD project |
N/A |
April 1999 |
允许性 |
允许性 |
允许性 |
Manually |
允许性 |
允许性 |
Manually |
|
3.0 |
2007 |
仅限GNU GPLv3 |
限制性 |
限制性 |
是 |
否 network usage |
限制性 |
是 |
||
Free Software Foundation |
3.0 |
June 2007 |
仅与GPLv3兼容 |
限制性 |
限制性 |
是 |
是 |
限制性 |
是 |
|
Free Software Foundation |
3.0 |
June 2007 |
有限制 |
限制性 |
限制性 |
是 |
是 |
限制性 |
是 |
|
IBM |
1.0 |
August 1999 |
限制性 |
? |
限制性 |
? |
? |
? |
? |
|
N/A |
June 2003 |
允许性 |
允许性 |
允许性 |
Manually |
允许性 |
允许性 |
Manually |
||
LaTeX project |
1.3c |
? |
允许性 |
? |
允许性 |
? |
? |
? |
? |
|
N/A |
? |
允许性 |
允许性 |
允许性 |
否 |
允许性 |
? |
否 |
||
N/A |
1988 |
允许性 |
允许性 |
允许性 |
Manually |
是 |
允许性 |
Manually |
||
2.0 |
January 3, 2012 |
允许性 |
限制性 |
限制性 |
是 |
是 |
限制性 |
否 |
||
1.1 |
? |
有限的 |
? |
有限的 |
? |
? |
? |
? |
||
Lawrence Rosen |
3.0 |
2005 |
允许性 |
限制性 |
限制性 |
是 |
是 |
限制性 |
? |
|
OpenSSL Project |
N/A |
? |
允许性 |
? |
允许性 |
? |
? |
? |
? |
|
PHP Group |
3.01 |
2019 |
有限制 |
有限制 |
有限制 |
是 |
是 |
有限制 |
Manually |
|
Python Software Foundation |
2 |
? |
允许性 |
? |
允许性 |
? |
? |
? |
? |
|
? |
? |
有限的 |
? |
有限的 |
? |
? |
? |
? |
||
N/A |
1996 |
允许性 |
有限制 |
允许性 |
否 |
是 |
否 |
否 |
||
unlicense.org |
1 |
December 2010 |
允许性/公共领域 |
允许性/公共领域 |
允许性/公共领域 |
? |
允许性/公共领域 |
允许性/公共领域 |
? |
|
20021231 |
December 31, 2002 |
允许性 |
? |
允许性 |
? |
? |
? |
? |
||
Banlu Kemiyatorn, Sam Hocevar |
2 |
December 2004 |
允许性/公共领域 |
允许性/公共领域 |
允许性/公共领域 |
否 |
是 |
是 |
否 |
|
XCore Open Source License |
? |
February 2011 |
允许性 |
允许性 |
允许性 |
Manually |
是 |
允许性 |
? |
|
The XFree86 Project, Inc |
? |
? |
允许性 |
? |
允许性 |
? |
? |
? |
? |
|
Jean-Loup Gailly and Mark Adler |
? |
? |
允许性 |
? |
允许性 |
? |
? |
? |
? |
4 参考
https://opensource.org/licenses
https://resources.whitesourcesoftware.com/blog-whitesource/open-source-licenses-explained
https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences
- 点赞
- 收藏
- 关注作者
评论(0)