因为工作上的原因,需要了解一下几种常见的开源软件许可证。这可以规避一些法律上的麻烦、做到心里有底;对项目、技术选型也会有所帮助。
GPL
GPL授予程序接受人以下权利,或称“自由”:
* 以任何目的运行此程序的自由
* 以学习程序工作机理为目的,对程序进行修改的自由(能得到源代码是前提)
* 再发行复制件的自由
* 改进此程序,并公开发布改进的自由(能得到源代码是前提)
相反地,随版权所有软件的最终用户许可证几乎从不授予用户任何权利(除了使用的权利),甚至可能限制法律允许的行为,比如逆向工程。
GPL与其他一些更“许可的”自由软件许可证(比如BSD许可证)相比,主要区别就在于GPL寻求确保上述自由能在复制件及演绎作品中得到保障。它通过一种由Stallman发明的叫copyleft的法律机制实现,即要求GPL程序的演绎作品也要在GPL之下。相反,BSD式的许可证并不禁止演绎作品变成版权所有软件。
copyleft
GPL不会授予许可证接受人无限的权利。再发行权的授予需要许可证接受人开放软件的源代码,及所有修改。且复制件、修改版本,都必须以GPL为许可证。
这些要求就是copyleft,它的基础就是作品在法律上版权所有。由于它版权所有,许可证接受人就无权进行修改和再发行(除合理使用),除非它有一个copyleft条款。如果某人想行使通常被法律所禁止的权利,只需同意GPL的条款。相反地,如果某人发行软件违反了GPL(比如不开放源代码),他就有可能被原作者起诉。
copyleft利用版权法来达到与其相反的目的:copyleft给人不可剥夺的权利,而不是版权法所规定的诸多限制。这也是GPL被称作“被黑的版权法”的原因。
许多GPL软件发行者都把源代码与可执行程序捆绑起来。另一方式就是以物理介质(比如CD)为载体提供源代码。在实践中,许多GPL软件都是在互联网上发行的,源代码也有许多可以FTP方式得到。
copyleft只在程序再发行时发生效力。对软件的修改可以不公开或开放源代码,只要不发行。注意copyleft只对软件有效力,而对软件的输出并无效力(除非输出的是软件本身)。不过这在GPL版本3中可能会有改动。
LGPL
GNU宽通用公共许可证,简称LGPL(GNU Lesser General Public License),被用于一些(但不是全部)GNU程序库。这个许可证以前被称为GNU库(Library)通用公共许可证。
LGPL是GPL的变种,也是GNU为了得到更多的甚至是商用软件开发商的支持而提出的。与GPL的最大不同是,可以私有使用LGPL授权的自由软件,开发出来的新软件可以是私有的而不需要是自由软件。所以任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。
Apache License
Apache License是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件:
* 需要给代码的用户一份Apache License
* 如果你修改了代码,需要再被修改的文件中说明
* 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明
* 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改
Apache License也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
BSD
BSD授权许可证(FreeBSD Copyright Information)具有多种授权许可证。总的来说你可以对软件任意处理,只要你在软件中注明其是来自于那个项目的就可以了。也就是说你具有更大的自由度来处置软件。如果你对软件进行了修改,你可以限制其他使用者得到你修改的软件的自由。
BSD授权许可证没有实现"通透性"自由,也就是其不保证软件源代码开放的连续性。这样如果你希望采用别人开发的BSD软件,进行一些修改,然后作为产品卖,或者仅仅保密自己的做的一些除了软件开发以外的工作,那么你就可以从中得利。
当一个非程序员仅仅理解一个程序的功能,但是不了解程序是如何做的时,即使你没有在开发软件中做任何工作那你就可以通过高超的市场技巧将软件卖给该用户。比如拿最流行的桌面操作系统作为例子,你就能很好的理解一个没有很好的程序技巧的软件公司只要具有高超的市场营销策略同样可以将垃圾卖给客户。如果你不具有很强大的编程能力,但是具有很强的市场能力和能将其他开发者的软件包括到自己的系统,而同时不将自己的修改开放出来将是非常强大的能力。从赚钱为目的的商务角度看来,如果你使用了BSD授权许可证的软件,那么你就可以任意进行。你可以更好地控制你的OS系统,并且防止其他人拷贝你的商业产品。
总结一下
简单的说,就是你使用了GPL许可证的软件,那么你的软件产品就被GPL“传染”了,也必须“自由”!这对国内的商业软件开发商来说是很难接受的。
但是LGPL, Apache License, BSD就不存在这个问题,后两者只要求你对软件原作者的工作进行必要的认可和尊重就行了,所以这是适合商业应用的。
所以在选择应用开源软件时,一定要明白自己的用途,选择合适许可证下的软件。
最后,我们可以参考一下对GPL的评论:
2001年微软的首席执行官Steve Ballmer称Linux为“癌症”,因为GPL的影响。微软的批评指出,微软憎恶GPL的真正原因是因为对微软的“包围、扩展、消灭”策略起了反作用。注意微软已以GPL为许可证发行了SFU(Microsoft Windows Services for UNIX)中所包含的部分组件,例如GCC。
GPL的批评者常常认为GPL是有“传染性”的“病毒”,因为GPL条款规定演绎作品也必须是GPL的。由于“演绎作品”通常被解释为包含GPL代码或动态链接到GPL库(如上)的软件,“病毒说”来源于GPL对于许可证的强制继承的要求。这正是GPL与BSD式许可证的哲学思想上的差异。GPL的支持者确信自由软件应确保其演绎作品同样“自由”,但其他人认为自由软件应给用户最大的自由。
分享到:
相关推荐
首先,我们来介绍一下几种常见的开源许可证: 1. **GPL(GNU General Public License)**:这是一种 copyleft 许可证,要求任何基于 GPL 软件修改或扩展的新作品也必须遵循 GPL,以此保护开源精神,确保源代码的...
常见的开源许可证包括GPL、LGPL、AGPL、MPL、CDDL、EPL、BSD、MIT和Apache等。其中,GPL是最广泛使用的许可证,它要求任何与GPL软件链接的产品或修改后的版本都需要开源。LGPL则是GPL的一个较宽松版本,对于动态链接...
以下是几种常见的开源许可证类型: 1. **Apache-2.0**:允许商用,具有较为宽松的条款。 2. **GPL (General Public License)**:允许商用,但必须在出售的同时公开软件源代码,即二次开发后的产品需公开源代码。 3....
开放源代码促进会(OSI)制定了“开放源码定义”作为软件获得开源许可证的标准。为了确保软件符合开源的标准,必须满足以下条件: 1. **发布不受限制**:用户可以自由地发行或销售该软件,无需支付任何版税。 2. **...
根据给定的部分内容,我们可以看到几种常见的开源协议及其在不同软件中的应用情况: ##### 1. Apache License - **定义**:Apache License 是一种非常宽松的开源协议,它允许用户自由使用、复制、修改和分发软件的...
MPL是一种较为宽松的开源协议,它允许对源代码进行修改和分发,但同时也要求任何基于MPL许可的软件修改版本都必须以MPL许可证发布。这意味着如果开发者对MPL许可下的软件进行了修改,那么他们所创建的新版本也必须...
在众多开源协议中,BSD、Apache、GPL、LGPL 和 MIT 是最为常见且广受好评的几种协议。本文将详细介绍这五种协议的特点、适用场景及其之间的差异。 #### BSD 开源协议 - **简介**:BSD协议给予使用者很大的自由度,...
Python社区中常见的开源协议有几种: 1. MIT许可证:这是一个非常宽松的协议,允许他人自由地使用、修改和分发软件,只需保留原作者的版权声明。MIT许可证在Python项目中广泛使用,因为它对商业使用没有任何限制。 ...
常见的开源许可证有MIT、Apache 2.0、GPL等,每种许可证都有其特定的使用规则,开发者在使用这些代码时,应当了解并遵守相应的许可证条款。 开源代码的使用通常涉及到以下几个方面: 1. **学习与研究**:通过阅读源...
本文将分析几种常见的开源协议,包括GPL、BSD、MIT、Mozilla(MPL)、Apache 2.0和LGPL,帮助开发者理解它们的特点和适用场景。 首先,BSD开源协议赋予了使用者极高的自由度。它允许使用者自由地使用、修改源代码,...
此外,开源软件的法律问题,如版权、许可证选择及其对商业应用的影响,也是这些杂志中常见的讨论话题。 "开源杂志"中的每一篇文章都是专家和实践者的心得分享,它们深入浅出地讲解了开源技术的原理和实践,对于...
开源录屏软件是一种深受用户喜爱的工具,尤其对于IT专业人士和教育工作者来说,它提供了免费且功能丰富的屏幕录制解决...通过了解软件的工作原理和内部结构,用户不仅可以更好地利用这些工具,还能为开源社区做出贡献。
常见的开源许可证有MIT、Apache 2.0、GPLv3等,每种许可证对代码的使用和分发有着不同的约束。 "快速在代码中添加 license 的小工具",正如其名,是一个帮助开发者快速、便捷地在代码项目中插入许可证信息的工具。...
常见的开源许可证有MIT、Apache 2.0、GPLv3等。每种许可证都有不同的条款,比如MIT许可证允许最大程度的自由使用,而GPLv3则要求任何基于该软件的修改也必须开源。了解这些许可证的区别对于选择合适的许可证至关重要...
9. **许可证和合规性**:开源软件通常会遵循特定的许可证,如MIT、Apache 2.0或GPL,开发者在使用和分发源码时应了解并遵守这些许可证的要求。 10. **安全性**:在使用开源源码时,需要注意代码的安全性,检查是否...
- **开源许可证费用**:虽然软件本身通常是免费的,但一些高级支持和服务可能会产生额外费用。 - **技术支持**:对于关键业务应用而言,仅依赖社区支持可能不足以满足需求。 - **兼容性和集成问题**:不同的开源项目...
5. **请求限制**:T10的描述提到请求数量限制,这在某些服务型软件中可能是必要的,但在开源许可证中不常见,因为这限制了软件的无条件使用。 综合考虑,T8团队在许可证管理和文档方面表现出色,但实际选择还需根据...
Apache 2.0许可证是软件开发领域广泛应用的一个开源许可证,尤其在Web服务器和相关软件项目中,它为软件提供了一种灵活的版权条款。Apache 2.0中文手册是为帮助开发者、系统管理员以及普通用户理解和遵循Apache 2.0...
6. **许可文件**:开源项目通常会包含一个LICENSE文件,定义了项目可以被使用的条件和限制,常见的有MIT、Apache 2.0、GPL等许可证。 7. **构建脚本**:用于自动化编译、打包和部署过程,比如Makefile、build....