GNU通用公共许可证第三版(GNU General Public License Version 3,简称GNU GPLv3)是由自由软件基金会(Free Software Foundation, FSF)发布的一份自由软件许可证。它是GPLv2的后继版本,于2007年6月29日发布。GPL许可证允许软件被自由复制、分发和修改,同时要求所有修改过的和扩展的版本同样在GPL许可下发布,以确保软件的自由性质得以保持。GPLv3相对于其前一版本引入了几个重要的变更和更新,以应对当代的技术和法律挑战。
主要变更和特点
- 对专利的保护:GPLv3增强了对用户针对专利诉讼的保护。如果一个贡献者拥有软件中使用的专利,那么他们不能对使用该软件的人提起专利诉讼。此外,如果任何用户因为使用GPLv3许可的软件而受到专利诉讼威胁,该许可证保证他们可以继续使用该软件而不受干扰。
- 对“反规避”条款的明确:GPLv3明确了,如果软件被设计成执行数字版权管理(DRM)或其他形式的技术保护措施,那么使用GPLv3许可的软件不能被用来加强这些措施。这是对自由软件原则的一种保护,确保GPL许可的软件不会被用来限制用户的自由。
- 兼容性:GPLv3试图与其他自由软件和开源许可证更好地兼容。例如,它明确允许在特定条件下与Apache许可证2.0合并代码。
- 终端用户许可协议(EULA)的限制:GPLv3明确禁止将软件在用户不同意的情况下自动许可给他们,这通常涉及到EULA的使用。这意味着GPLv3许可的软件不能强加未经用户同意的许可条款。
- 对“安装后禁用”功能的限制:GPLv3限制了软件作者使用“安装后禁用”功能,这种功能可能会阻止修改版软件的正常运行。这是为了保护用户修改和运行GPL许可软件版本的权利。
结论
GNU GPLv3是一份为了促进和保护自由软件发展而设计的许可证,通过一系列详细条款应对现代技术和法律环境中的挑战。它旨在确保软件保持自由,同时提供对原作者的保护,并促进开源软件之间的合作。通过对专利、DRM、兼容性和用户自由的保护,GPLv3为软件自由提供了强有力的法律框架。
基于GNU GPLv3的开源代码,可以二次开发商业应用吗?
是的,基于GNU GPLv3的开源代码可以用于二次开发商业应用,但必须遵守GPLv3许可证的条款。这意味着如果你在商业应用中使用或修改了GPLv3许可的代码,那么该应用的分发必须也遵循GPLv3许可证。主要的要求和考虑因素包括:
- 源代码的可用性:如果你分发了基于GPLv3代码修改或扩展后的应用,你必须提供应用的完整源代码或者提供获取源代码的有效方式给那些获得了二进制版本的用户。这意味着使用者能够获取、查看和修改源代码。
- 许可证的传递:商业应用必须在GPLv3下发布。这意味着任何接收你软件的人都必须享有相同的自由,即修改和重新分发软件的权利。
- 版权、专利和商标:虽然GPLv3允许商业应用,但它有明确条款保护版权和专利。如果你的应用包含专利技术,你不能阻止使用者行使GPLv3赋予他们的权利。此外,使用GPLv3许可证并不意味着可以使用原始代码所有者的商标。
- 不附加额外限制:你不能引入任何限制,阻止未来接收者享有GPLv3提供的自由和权利。
因此,虽然使用GPLv3许可的代码开发商业应用是允许的,但这种商业应用的发布和分发方式将受到许可证条款的严格约束。这意味着商业实体在决定使用GPLv3许可代码时,需要认真考虑是否愿意和能够遵守这些条款,特别是考虑到它对源代码公开和自由使用的要求。对于希望保留更多控制权或不希望开放源代码的商业项目,使用GPLv3许可的代码可能不是最佳选择。
是否必须开源呢?
是的,如果你在你的项目中使用或修改了基于GNU GPLv3许可的代码,并且你打算分发这个项目,那么你必须按照GPLv3的要求开源你的项目。这意味着以下几点:
- 开源代码:你必须提供你项目的源代码,或者提供一个可以获取源代码的方法给那些获得了你项目二进制版本的人。这保证了接收者有权利查看、修改和重新分发源代码。
- 遵循GPLv3条款:你的项目(包括所有基于GPLv3代码的修改和扩展)必须在GPLv3下分发。这确保了项目的所有接收者都将享有同样的自由,即自由地使用、修改和重新分发代码。
- 不添加额外限制:在分发你的项目时,你不能添加任何限制来限制或撤销GPLv3赋予接收者的权利和自由。
总之,如果你的项目包含或基于GPLv3许可的代码,并且你打算分发这个项目,那么按照GPLv3的条款,你必须开源你的项目。这是GPLv3许可证的核心要求之一,目的在于保证软件的自由和开放。如果你希望在不开源的情况下分发你的软件,那么使用GPLv3许可的代码可能不适合你的项目。