问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Qt开发授权详解:开源证书(L)GPL使用指南

创作时间:
作者:
@小白创作中心

Qt开发授权详解:开源证书(L)GPL使用指南

引用
CSDN
1.
https://blog.csdn.net/csdnofhaner/article/details/136727703

Qt是一个广泛使用的跨平台应用程序开发框架,其采用双证书许可模式,既可以在商业证书许可下使用,也可以在开源证书许可下使用。本文将详细解析Qt的开源许可(L)GPL的使用规则和限制,帮助开发者在开发过程中避免授权问题。

Qt证书体系

Qt采用双证书许可,既可以在商业证书许可下使用,也可以在开源证书许可下使用。对于非开源项目,建议选择商业证书许可。但是,这并不意味着非开源项目不能使用开源证书许可,也不意味着开源证书许可不能有任何商业行为。在满足开源证书要求的情况下,基于Qt开发的软件也是可以不开源,并进行商业行为的。

Qt的主要开源许可是LGPL (GNU Lesser General Public License) v. 3,另外还有如下几种许可:

  • LGPL v. 2.1
  • GPL v. 3
  • GPL v. 2
  • BSD Clause 3

至于功能和模块对应的许可模式,可以在Qt官方功能页面通过筛选的方式查询:

查询过程中可能有疑问,就是筛选Commercial、LGPL v. 3、GPG v. 3,某些模块都是可用的,那么这个模块到底适用哪种许可呢?官方网站有这么一句话:

所有适用于LGPL的功能也适用于GPL

LGPL其实算是GPL的一个补充协议,LGPL在GPL的基础上放宽了一些要求。因此,对于同时适用多种证书的功能、模块,只需要满足任意一个即可,当然我们可以选择满足最宽松的那个。

比如某一模块即适用商业许可也适用LGPL,那么我们在满足LGPL证书要求的情况下,就可以随意使用。

可以发现,在较为宽松的LGPL v. 3证书下,我们可以使用:

  • 所有的设计工具
  • 所有的开发工具(除了Quick Ultralight相关)
  • 所有重要Qt功能
  • 一半的扩展模块

包括:

  • Qt for Python
  • Qt Multimedia
  • Qt Webview
  • Qt SQL
  • Qt Bluetooth
  • Qt Serial Port

等等很多常用扩展模块

这些工具、功能和模块在多数情况下都能满足开发需要。当然有些模块是要满足严格一些的GPL v. 3的,比如:

  • Qt Charts
  • Qt Lottie Animation
  • Qt gRPC
  • Qt Protobuf

少数模块只支持商业证书,比如Qt Digital Advertising。如果你想使用这些模块,就必须购买商业授权了。

开源证书解读

Qt官方对(L)GPL的描述

Qt官方提供了文档:Obligations of the GPL and LGPL,其中主要是自由度和要求两个方面:

自由度

LGPL有4个方面的自由:

  • 无论何种用途,都可以自由运行该程序。
  • 学习该程序的运行原理,修改程序以满足特定需求
  • 分发程序副本,帮助他人
  • 改进并向公众发布,以帮助整个社区

要求

想要获取上述自由,必须满足如下要求:

  • LGPL库的完整代码(或者修改后的代码)应该与开发的程序一起交付。也可以通过文档说明如何获取库的完整代码
  • 想要程序代码闭源,必须使用动态链接的方式使用LGPL库。对于Qt来说,在iOS、Android端,基本无法使用动态链接,此时需要以源码的形式交付
  • 程序需要支持用户重新连接LGPL库,也就是可以支持用户更新LGPL库。并且需要提供相应的安装信息。
  • 不完全满足LGPL的程序,不被允许分发
  • 不能以合同、条款的方式限制LGPL的自由度,如果某些规则与LGPL冲突,应该以LGPL为准
  • 使用LGPL库的程序应该以某种方式告知用户他们的权力
  • LGPL并不禁止开发者使用数字版权管理系统Digital Rights Management (DRM) ,但是如果其他人可以突破DRM,他就有权分发程序。具体参考(L)GPLv3 license FAQ
  • LGPL有明确的专利条款,但相对负责,(L)GPLv3 license FAQ

GPL vs. LGPL

GPL协议允许:

  • 修改源代码
  • 自由处理衍生作品,也就是基于GPL库开发的软件可以进行商业化销售,

同时GPL协议有一个比较苛刻的要求,就是使用GPL库的软件自身也必须遵守GPL协议,也就是基于/使用GPL库开发的软件必须开源,别人也可以在你作品的基础上修改、分发甚至销售。

LGPL 是 GPL 的变种,也是 GNU 为了得到更多的甚至是商用软件开发商的支持而提出的。它与GPL最大的不同在于,使用LGPL库开发的软件在满足要求的情况下可以闭源。所谓要求可以简单理解为,需要通过动态链接的方式使用LGPL库,并且允许用户更新LGPL库的版本。

完整条款

完整条款可以参考:

  • GPL v. 2
  • GPL v. 3
  • LGPL v. 2.1
  • LGPL v. 3
  • BSD Clause 3

总结

总的来说,对于个人开发者或者小公司来说,可以在不购买商业授权的情况下基于Qt开发软件,也可以以任意价格销售开发的软件,只要注意证书协议的要求,尽可能做到满足要求就可以。但由于开源协议的复杂性、实际应用中的不同情况,以及回馈社区,大家发展壮大后还是应该购买商业授权,支持社区发展。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号