GNU 通用公共许可证 (GPL) 是由自由软件基金会 (FSF) 创建的免费开源软件许可证,旨在确保软件保持自由可访问和可修改。其核心原则是“copyleft”,要求任何衍生作品——使用 GPL 授权代码构建的软件——也必须在 GPL 下分发。这确保了对原始软件的修改或扩展保持开源,防止了专有限制。GPL 赋予用户四项自由:为任何目的运行软件、研究和修改其源代码、重新分发副本以及分发修改后的版本。
GPL 通过强制规定分发 GPL 授权软件(或包含其代码的软件)的开发者必须向接收者提供相应的源代码来执行其条款。例如,如果你修改 Linux 内核(使用 GPLv2)并分发你的版本,你必须在相同的许可证下分享你的更改。即使 GPL 授权代码是一个更大系统的一部分,这也适用。一个常见的实际考虑是动态链接:在单个可执行文件中将 GPL 代码与专有代码结合,通常要求整个项目都采用 GPL 授权。但是,通过接口(如 API)进行通信的独立程序可能避免此要求。WordPress 等项目使用 GPL,确保插件和主题继承该许可证,从而促进了协作生态系统。
GPL 主要有两个版本:GPLv2 (1991) 和 GPLv3 (2007)。GPLv3 解决了现代问题,如专利协议和与其他许可证的兼容性,而 GPLv2 仍然被广泛使用(例如,在 Linux 中)。开发者在为其软件选择许可证时必须选择一个版本,并且在不同 GPL 版本下混合代码可能会产生冲突。更宽松的 GPL (LGPL) 是一个针对库设计的变体,允许在特定条件下与专有代码链接。理解这些细微差别对于合规性至关重要。例如,在商业产品中使用 GPL 代码需要仔细规划以避免法律风险,因为违反许可证可能导致失去分发权或引发诉讼。