目前有数百种不同的开源软件许可证在使用,其条款从滑稽的(即Beerware许可证)到经典的(即GPL v2)。
不过,从广义上讲,OSS许可证可以分为两类:permissive和copyleft。
Copyleft许可证——本博客的主题——通常要求Copyleft许可软件的任何衍生作品在与原始软件相同的许可证下发布。换句话说,修改后的代码必须与原始代码一样“开放”。这一要求的实际后果之一是,如果OSS用户发布包含copyleft许可组件的二进制文件,他们可能会被迫以源代码的形式发布自己的更改或添加内容。
Copyleft许可证与许可证形成对比,后者往往对许可代码的使用几乎没有限制。他们也没有任何这样的代码共享要求,所以“开源”不一定会持续到衍生作品中。这是一个特性还是一个bug,取决于你如何看待它。对于专有软件的开发人员,必须谨慎使用copyleft许可证下的软件。对于自由开源软件的开发者来说,copyleft是一种确保软件仍然免费可用的方法。
在本博客中,我们将详细介绍copyleft许可证,包括它们的历史、它们与许可证的比较,以及强和弱copyleft许可证之间的区别。
版权许可证的历史
“copyleft”一词的出现与人们熟悉的“版权”一词正好相反1976年,开发者王立辰博士在他的Palo Alto Tiny BASIC编程语言的发布通知中添加了这样一段幽默的文字:“版权保留所有错误。”这句话是对微软联合创始人比尔·盖茨的挖苦。比尔·盖茨曾抱怨软件爱好者盗用该公司的Altair BASIC程序,该程序当时的售价为每流行音乐150美元。
这句话没有任何法律效力,但它很吸引人(如果我们这么说的话,也很有趣)。它还将“免费”(如免费使用、复制、修改等)软件(Tiny BASIC)与专有/版权软件(Microsoft的Altair BASIC)进行了对比。
20世纪80年代,当著名的自由软件倡导者理查德·斯泰尔曼(Richard Stallman)将这个词作为GNU项目的核心时,事情变得更加严重。根据史泰尔曼的说法,一个真正的自由软件程序将允许:
- 1.按照自己的意愿运行程序的自由
- 2.复制程序并将其分发给朋友和同事的自由
- 3.通过完全访问源代码,可以随心所欲地更改程序
- 4.发布改进版本的自由,从而帮助建立社区
Stallman在构建GNU操作系统时考虑到了上述自由以及copyleft的概念。“剩下的是什么?”第页GNU。org用以下术语解释copyleft与软件的关系:
“要复制一个程序,我们首先声明它受版权保护;然后添加分发条款,这是一项法律文书,赋予每个人使用、修改和重新分发程序代码或其衍生的任何程序的权利,但前提是分发条款不变。因此,代码和自由在法律上是不可分割的E
“专有软件开发商使用版权剥夺用户的自由;我们使用版权保障他们的自由。这就是为什么我们将名称改为“版权”,将“版权”改为“版权保留”(GNU.org,“什么是Copyleft?”)
最初的GNU通用公共许可证(GNU GPL)是Stallman在1989年为GNU操作系统和相关程序编写的,它将copyleft的概念明确化。从那时起,GNU GPL已经更新了好几次。最新版本GNU GPL v3于2007年发布。其他copyleft许可证,如Mozilla Public License 2.0和Eclipse Public License,也在OSS社区获得了吸引力。目前,开源软件中使用最多的copyleft许可证是GNU GPL v2,它已经被广泛使用了20年。
Copyleft与许可证
copyleft和permissive许可证之间的主要区别在于合规性要求以及任何代码修改的“开放”程度。通常,许可证只要求用户在重新分发许可代码时包含许可证文本的副本和原始版权声明。否则,他们可以用它做任何他们想做的事。例如,开发人员可以获取代码,对其进行修改以创建新程序,然后将该程序的代码保留给自己,使其成为专有和封闭源代码。然后,他们可以将该程序商业化销售。
另一方面,Copyleft许可证有更严格的条件。与许可证一样,它们通常要求用户包含原始版权通知和许可证文本,但它们也要求用户在与原始许可证相同的许可证下,将任何修改或衍生作品的源代码提供给二进制文件的所有接收者。
Copyleft许可使用案例
任何给定软件的最佳许可类型取决于许多因素。在为自己的OSS项目选择许可证之前,先考虑用软件实现什么,以及希望其他人如何与代码进行交互。
例如,如果您:
- 想与OSS社区分享改进吗
- 相信构建软件的协作方法
- 想把你的项目商业化吗
- 不希望你的代码被其他人专有
- 正在社区中创建一个项目,该项目倾向于使用特定的copyleft许可证
另一方面,如果您:
- 不想在许可证合规性上花费太多时间(或担心)
- 想让别人尽可能容易地使用你的代码吗
- 正在社区内创建一个项目,该项目倾向于使用特定的许可证
幸运的是,有很多资源可以帮助您为项目选择正确的许可证(例如,本指南)。另外,你可以随时询问OSS社区的其他成员。
Copyleft许可证的类型
Copyleft许可证有两种类型:强许可证和弱许可证。这种区别取决于有多少新代码或相邻代码受copyleft许可证的约束。
在像GPL这样的强版权许可下,如果你重新发布了一个包含其他人编写的GPL代码的程序,你必须使你的整个程序在GPL下可用。包括任何链接库或程序的其他组件。属于这一类别的许可证包括GPL v2和GPL v3,以及Affero GPL许可证(AGPL)。
较弱的copyleft许可证也要求用户发布其更改。然而,这一要求适用于更窄的代码集。Mozilla Public License 2.0就是一个弱copyleft许可证的例子,说明了这一原则。如果用户将MPL许可代码保存在单独的文件中,那么他们可以将其与其他和/或修改的代码结合起来,创建一个聚合工作。新添加的文件可以在不同的许可证下发布,或者保留专有(封闭源代码)。这有时被称为基于文件的copyleft。另一个例子是LGPL许可证,它主要适用于库。对库的任何更改必须在同一许可证下发布,但仅使用库的作品除外。
LGPL也有不同的要求,这取决于库与程序其余部分的集成方式。例如,您可能听说LGPL要求动态链接库。虽然对于静态链接的程序来说,遵守LGPL是可能的,但有更多的要求——因此LGPL代码的动态链接是最佳实践。
值得注意的是,copyleft许可证并不仅仅存在于开源软件中。例如,知识共享(CC)许可证是一种版权许可证,通常适用于照片、音乐等艺术作品。
OSS社区中的Copyleft许可证
目前,许可许可证是开源软件中使用最多的许可证类型,最流行的是MIT许可证和Apache许可证2.0。(不同的来源报告了不同的数字,但一般估计大约65-75%的OSS项目拥有许可证。)
但copyleft许可证在OSS生态系统中也扮演着不可或缺的角色。例如,GPL系列很可能仍然是最常用的OSS许可证之一——作为Linux内核的首选许可证,它在软件开发生态系统中占有特殊地位。
此外,copyleft许可证可以帮助公司和开发人员进一步实现“免费”软件的目的,这种软件可以共享改进并回馈开源软件社区。只要OSS贡献者继续重视这种心态,copyleft许可证就会一直存在。
最新内容
- 1 week ago
- 1 week ago
- 1 week ago
- 1 week ago
- 1 week ago
- 1 week 6 days ago
- 2 weeks ago
- 2 weeks 2 days ago
- 2 weeks 2 days ago
- 2 weeks 2 days ago