详解Copyleft license

您所在的位置:网站首页 permissible和permissive区别 详解Copyleft license

详解Copyleft license

#详解Copyleft license| 来源: 网络整理| 查看: 265

目录

一、Copyleft license的历史

二、Copyleft vs. Permissive license

三、什么时候使用Copyleft license?

四、Copyleft license的种类

五、OSS社区中的Copyleft license

目前有数百种不同的开源许可证正在使用,其中既有搞笑的(例如beerware license),也有经典的(例如GNU GPL)。但是大体上,OSS(open source software) license可以分为两类:permissive和copyleft。

Copyleft通常要求,获得copyleft许可的软件的任何衍生作品都必须在原始软件相同的许可协议下发布。换句话说,修改后的代码必须和原始代码一样“open”。这一条款所导致的直接后果是:如果OSS用户发布包含有版权许可组件的二进制文件,他们可能被迫以源代码的形式发布自己的更改或添加。

Copyleft和permisssive形成了鲜明的对比,后者对代码的使用几乎没有限制。它们也没有任何这样的代码共享要求,所以这种开源并不会“扩散”到衍生产品。这是一个特性还是一个bug,取决你如何看待开源的本质。对于专有软件开发者来说,使用copyleft许可下的软件必须小心翼翼。但对于自由和开源软件的开发人员来说,copyleft是一种确保软件可以公开使用的有效方法。

在本文中,我们将详细讨论copyleft license,包括它的历史,与permissive license的区别,以及强copyleft和弱copyleft的具体区别。

一、Copyleft license的历史

Copyleft这个词是为了抗议Copyright(版权)术语而被创造出来的。在1976年,开发者Dr. Li-Chen Wang在他的Palo Alto Tiny BASIC编程语言的发布通知中添加了这段文字:“COPYLEFT ALL WRONGS RESERVED.”这句话是对微软联合创始人比尔盖茨的讽刺。盖茨曾抱怨软件爱好者盗用该公司的Altair BASIC程序,当时该程序的售价为每台150美元。

这行话没有任何法律效力,但是很吸引人。它将free(自由的使用、复制和修改) software(例如Tiny BASIC)和copyright software(例如Microsoft’s Altair BASIC)进行了区分和对比。

到了20世纪80年代,当著名的自由软件支持者理查德·斯托曼将copyleft作为GNU项目的核心时,事情变得更加复杂了。根据斯托曼的说法,一个真正free的软件将包含以下特性:

1.按照自己的意愿运行程序的自由。

2.复制程序并将其分发给你的朋友和同事的自由。

3.通过完全访问源代码,可以随意更改程序。

3.分发改进版本的自由,从而帮助建立社区。

在构建GNU操作系统时,斯托曼考虑到了上述free和Copyleft的概念。“什么是Copyleft?”在GNU.org的页面上,用这段话解释了关于软件的Copyleft。

“我们首先声明软件是受版权保护的;然后我们添加发布条款,这是一个法律工具,给予每个人使用、修改和重新发布程序代码,或任何源自它的程序的权利,但只有在发布条款不变的情况下。因此,代码和自由在法律上变得不可分割。专有软件开发商利用版权剥夺用户的自由,我们利用版权保障用户的自由。这就是为什么我们把名字倒过来,把Copyright改成了Copyleft。”

最初的GNU GPL是斯托曼在1989年为了配合GNU操作系统和相关程序而编写的,这将Copyleft的概念以明确的形式表达了出来。从那时起,GNU GPL已经更新换代了好几次。最新版本GPL v3于2007年发布。其他copyleft license,如MPL2.0和Eclipse,也在开源社区中国获得了不少支持。目前,开源软件中使用最多的copyleft license是GNU GPL v2,它已经广泛使用了20年。

二、Copyleft vs. Permissive license

二者的主要区别在于合规性要求以及如何“open”修改的代码。通常,permissive只要求使用者在重新发布代码时包含许可证文本和原始版权声明的副本即可。例如,开发人员可以获取代码,修改代码以创建一个新程序,然后将该程序的代码保留给自己,使其成为私有的或闭源代码,即使是将修改后的软件进行商业销售也是可以的。

而copyleft则有更严格的条款规定。与permissive license一样,它们通常要求使用者继承原版权声明和许可文本,但还要求开发者在于原版相同的许可下,对二进制文件的所有接收者做出任何修改或衍生作品的源代码进行开源。

三、什么时候使用Copyleft license?

任何软件的最佳许可证类型取决于许多因素,在你为自己的OSS项目选择许可证之前,请仔细考虑你希望通过你的软件实现什么,以及你希望其他人如何与你的代码进行交互。

例如:

1.希望与OSS社区分享修改;

2.相信构建软件的协作模式;

3.想把你的项目商业化;

4.不希望你的代码被其他人修改并私人专有;

5.正在社区内创建一个倾向于使用特定copyleft license的项目。

又或者:

1.不想在许可证合规性方面花费太多时间(或担忧);

2.希望其他人使用你的代码时尽可能容易和吸引人;

3.正在社区创建一个倾向于使用permissive license的项目。

不管你的考虑倾向于哪方面,幸运的是,有大量的资源可以帮助你为项目选择正确的许可证,例如github上著名的choosealicense。

四、Copyleft license的种类

有两种:强(strong)或弱(weak)。二者的区别在于有多少新代码或相邻码受到copyleft license的限制。

在像GPL这样的强copyleft许可下,如果你重新发布了一个包含其他人编写的GPL代码的程序,那么你必须使你的整个程序在GPL下可用,包括程序的所有链接库或其他组件。这类许可证还有GPL v2和v3,以及AGPL(Affero GPL License)

弱copyleft license也要求用户发布他们的更改,但这个范围要狭窄不少。MPL和CDDL就是最好的例子。如果用户将授权代码保存在单独的文件中,那么他们可以将其于其他代码组合在一起,以创建一个聚合库。新添加的文件可以在不同的许可下修改和发布,或者保持闭源状态。这有时被称为基于文件的copyleft。另一个例子是LGPL,它主要应用于库,对库的任何更改都必须在相同的许可证下发布,但不用库的组件或程序则不受此限制。

LPGL还有一些不同的要求,这取决于库如何与程序的其他部分集成。例如,你可能听说过LGPL要求库进行动态链接。虽然对于静态链接的程序来说,符合LGPL的合规性要求也并非不可能,但动态链接是LGPL的一种最佳实践。

最后,值得注意的是,copyleft license不仅仅存在于开源软件中。例如CCL(Creative Commons License)也是一种copyleft许可,它通常用于照片、音乐等艺术作品。

五、OSS社区中的Copyleft license

目前,permissive license是开源软件中使用最多的许可证类型,其中最流行的是MIT和Apache2.0。但是,copyleft同样也在OSS生态系统中扮演着不可或缺的角色。例如,GPL系列仍是最常用的OSS许可证之一,它作为Linux内核的首选之举,在软件开发生态系统中占有特殊地位。

此外,copyleft能够帮助公司和开发人员进一步实现开源的终极目标——“Free”,这些软件会不断共享、改进,并回馈给开源社区。只要OSS贡献者保持这种心态,copyleft license就会一直存在。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3