凡代码都有权利和义务@开源软件许可类别分析

举报
Jet Ding 发表于 2020/09/28 16:13:07 2020/09/28
【摘要】 软件许可证有很多不同的类型,对不遵守许可证的惩罚可能很严厉。如果你在没有遵守许可证义务的情况下重用一个组件,许可证颁发者可能会起诉你,你可能会被迫发布自己的源代码。为了保护你的代码和你的组织,你需要在使用任何不是你自己编写的代码(包括库和框架)之前了解这些软件许可证。

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授权

Academic Free License

Lawrence E. Rosen

3.0

2002

允许性

允许性

允许性

允许性

Affero General Public License

Affero Inc

2.0

2007

限制性

除GNU AGPL外,其余均为限制性

限制性

?

?

?

Apache License

Apache Software Foundation

2.0

2004

允许性

允许性

允许性

允许性

Apple Public Source License

Apple Computer

2.0

August 6, 2003

允许性

?

有限的

?

?

?

?

Artistic License

Larry Wall

2.0

2000

有限制

有限制

有限制

允许性

有限制

Beerware

Poul-Henning Kamp

42

1987

允许性

允许性

允许性

允许性

允许性

BSD License

Regents of the University of California

3.0

?

允许性

允许性

允许性

Manually

允许性

Manually

Boost Software License

?

1.0

August 17, 2003

允许性

?

允许性

?

?

?

?

Creative Commons Zero

Creative Commons

1.0

2009

公共领域

公共领域

公共领域

公共领域

公共领域

CC BY

Creative Commons

4.0

2002

允许性

允许性

允许性

允许性

CC BY-SA

Creative Commons

4.0

2002

限制性

限制性

限制性

限制性

CeCILL

CEA / CNRS / INRIA

2.1

June 21, 2013

允许性

允许性

允许性

允许性

有限制

Common Development and Distribution License

Sun Microsystems

1.0

December 1, 2004

允许性

?

有限的

?

?

?

?

Common Public License

IBM

1.0

May 2001

允许性

?

限制性

?

?

?

?

Cryptix General License

Cryptix Foundation

N/A

1995

允许性

允许性

允许性

Manually

?

Manually

Eclipse Public License

Eclipse Foundation

2.0

August 24, 2017

有限的

有限的

有限的

有限的

Manually

Educational Community License

Indiana University

1.0

2007

允许性

?

允许性

?

?

?

?

European Union Public Licence

European Commission

1.2

May 2017

允许性, according to EU law (Recitals 10 & 15 Directive 2009/24/EC)

限制性, ,有明确的兼容性列表

限制性, ,有明确的兼容性列表

限制性, ,有明确的兼容性列表

FreeBSD

The FreeBSD project

N/A

April 1999

允许性

允许性

允许性

Manually

允许性

允许性

Manually

GNU Affero General Public License

Free Software Foundation

3.0

2007

仅限GNU GPLv3

限制性

限制性

否 network usage

限制性

GNU General Public License

Free Software Foundation

3.0

June 2007

仅与GPLv3兼容

限制性

限制性

限制性

GNU Lesser General Public License

Free Software Foundation

3.0

June 2007

有限制

限制性

限制性

限制性

IBM Public License

IBM

1.0

August 1999

限制性

?

限制性

?

?

?

?

ISC license

Internet Systems Consortium

N/A

June 2003

允许性

允许性

允许性

Manually

允许性

允许性

Manually

LaTeX Project Public License

LaTeX project

1.3c

?

允许性

?

允许性

?

?

?

?

Microsoft Public License

Microsoft

N/A

?

允许性

允许性

允许性

允许性

?

MIT license / X11 license

MIT

N/A

1988

允许性

允许性

允许性

Manually

允许性

Manually

Mozilla Public License

Mozilla Foundation

2.0

January 3, 2012

允许性

限制性

限制性

限制性

Netscape Public License

Netscape

1.1

?

有限的

?

有限的

?

?

?

?

Open Software License

Lawrence Rosen

3.0

2005

允许性

限制性

限制性

限制性

?

OpenSSL license

OpenSSL Project

N/A

?

允许性

?

允许性

?

?

?

?

PHP License

PHP Group

3.01

2019

有限制

有限制

有限制

有限制

Manually

Python Software Foundation License

Python Software Foundation

2

?

允许性

?

允许性

?

?

?

?

Q Public License

Trolltech

?

?

有限的

?

有限的

?

?

?

?

Sleepycat License

Sleepycat Software

N/A

1996

允许性

有限制

允许性

Unlicense

unlicense.org

1

December 2010

允许性/公共领域

允许性/公共领域

允许性/公共领域

?

允许性/公共领域

允许性/公共领域

?

W3C Software notice and License

W3C

20021231

December 31, 2002

允许性

?

允许性

?

?

?

?

Do What The Fuck You Want To Public License (WTFPL)

Banlu Kemiyatorn, Sam Hocevar

2

December 2004

允许性/公共领域

允许性/公共领域

允许性/公共领域

XCore Open Source License
also separate "Hardware License Agreement"

XMOS

?

February 2011

允许性

允许性

允许性

Manually

允许性

?

XFree86 1.1 License

The XFree86 Project, Inc

?

?

允许性

?

允许性

?

?

?

?

zlib/libpng license

Jean-Loup Gailly and Mark Adler

?

?

允许性

?

允许性

?

?

?

?

 

4         参考

 

https://opensource.org/licenses

https://www.synopsys.com/blogs/software-security/5-types-of-software-licenses-you-need-to-understand/

https://choosealicense.com/

https://resources.whitesourcesoftware.com/blog-whitesource/open-source-licenses-explained

https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。