GPL许可协议

GPL许可协议,全称为GNU通用公共许可证(GNU General Public License),它是由自由软件基金会(Free Software Foundation)发布的一种许可协议。GPL是一种传染性的许可协议,它保证了所有开发者的权利,同时也要求在源代码的基础上发布软件的任何修改版本。

在GPL许可协议基础上又衍生出AGPL协议(Affero General Public License)和LGPL(Lesser General Public License)协议。目前GPL一族协议中最常用的有:GPL-2.0、GPL-3.0、AGPL-3.0、LGPL-2.1和LGPL-3.0。

与MIT、BSD、ISC等宽松的许可协议不同,GPL一族协议更注重保护开发者的权利,在专利、源码公开、相同许可证等方面有着较为严格的要求。

那么,这几个协议有何区别?各自又有什么样的应用场景?

有何区别

我们以表格的形式,从权利、条件、限制等11个核心要点,将 GPL-2.0、GPL-3.0、AGPL-3.0、LGPL-2.1和LGPL-3.0 协议做了横向对比,如下表。

许可协议

GPL-2.0

GPL-3.0

AGPL-3.0

LGPL-2.1

LGPL-3.0

专利

修改

分发

商用

私使

公开源码

变更记录

相同许可证

√1

√1

网络公开

许可和版权声明

商标

上表相关要点说明如下:

  • 1.专利:

√:该许可证提供了明确的专利权授予权力。

  • 2.修改:

√:许可材料可以被修改。

  • 3.分发:

√:许可材料可以分发。

  • 4.商用:

√:许可的材料和衍生物可用于商业目的。

  • 5.私用:

√:许可的材料可以私下使用和修改。

  • 6.公开源码:

√:分发许可材料时,必须提供源代码。

  • 7.变更记录:

√:对许可材料所做的更改必须记录在案。

  • 8.相同许可证(库):

√:分发许可材料时,必须在同一许可下发布修改。在某些情况下,可以使用类似或相关的许可证。

√1:分发许可材料时,必须在同一许可下发布修改。在某些情况下,可能会使用类似或相关的许可,或者该条件可能不适用于将许可材料用作库的作品。

  • 9.网络公开:

√:通过网络与许可材料进行交互的用户被授予接收源代码副本的权利。

  • 10.许可和版权声明:

√:许可和版权声明的副本必须包含在许可材料中。

  • 11.商标:

×:该许可证明确声明它不授予商标权,即使没有此类声明的许可证也可能不授予任何隐含的商标权。

应用场景

GPL一族许可协议是强调著作权的许可协议,并且在公开源码方面有各自的要求。总体来说:

  • GPL 适用于通过网络服务但不希望公开源码的场景。
  • AGPL 更适合于通过网络服务并且公开源码的场景。
  • LGPL 更适合类库的开发应用,通过引用的LGPL库的方式而不希望公开整个应用程序源码。

都有哪些流行项目在使用

  • GPL : Jellyfin 、 GitBook 等。
  • AGPL :RustDesk 、MinIO、drawDB 等。
  • LGPL:p5.js 、 PHPMailer 等。

最后推荐下个人网站:Awesome Top - 热门开源项目推荐,如果访问GitHub时遇到网络问题,不妨去看一看!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐