admin管理员组文章数量:1651577
Qt程序员必看:QT授权和费用
Qt软件从诞生之日就是GPL/LGPL开源授权和商业授权并存的,开源不代表免费而是为了共享。
- Qt商用版本的模块是否都是LGPL协议,所有模块是否存在GPL这种要求强制开源的协议?
- 如果购买Qt商业许可,那么客户就不需要收到GPL儿GPL的协议约束,可以闭源发布;
- 如果使用LGPL/GPL协议开发产品,那么在产品二次分发/销售过程中,就需要100%遵循开源协议了,如果使用了GPL库,那么无论是否修改,由于GPL的高度传染性,是需要公开整个涉及GPL开发的产品的全部源代码。
对于非开源项目,建议选择商业证书许可。
上面这条官方描述比较模棱两可,让人不免产生疑问:
- Qt开源证书许可就不能有任何的商业行为吗?会限制作品售价吗?
- 满足Qt的开源证书许可要求,就可以任意使用Qt了吗?
- 什么情况下可以使用Qt开源证书许可?什么情况下需要购买商业证书?
本文将详细解答上述问题。
首先,官方文档中的“建议”两个字就说明,非开源项目并不是必须使用商业证书许可,开源证书也并非不能有任何商业行为。在满足开源证书要求的情况下,基于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 Cluase 3
至于功能和模块对应的许可模式,可以在Qt官方功能页面通过筛选的方式查询:
查询过程中可能有疑问,就是筛选Commercial、LGPL v. 3、GPG v. 3,某些模块都是可用的,那么这个模块到底适用哪种许可呢?
官方网站有这么一句话:
All parts that are licensed under LGPL are also available under GPL
所有适用于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,其中主要是自由度和要求两个方面:
1、自由度
LGPL有4个方面的自由:
- Freedom to run the program for any purpose. 无论何种用途,都可以自由运行该程序。
- Freedom to study how the program works & adapt it to specific needs. 学习该程序的运行原理,修改程序以满足特定需求
- Freedom to redistribute copies so you can help your neighbor. 分发程序副本,帮助他人
- Freedom to improve the program & release your improvements to the public, so that the whole community benefits. 改进并向公众发布,以帮助整个社区
要求
想要获取上述自由,必须满足如下要求:
(ps:笔者翻译水平有限,仅供参考,具体见官方文档)
- 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 为了得到更多的甚至是商用软件开发商的支持而提出的。1
LGPL算是GPL的补充协议,拥有GPL协议规定的自由度。
它与GPL最大的不同在于,使用LGPL库开发的软件在满足要求的情况下可以闭源。
所谓要求可以简单理解为,需要通过动态链接的方式使用LGPL库,并且允许用户更新LGPL库的版本。
2.Qt5和Qt6额外提供了哪些开源版本没有提供的模块?
- Qt6是Qt公司基于最新HMI要求推出的最新版本,比5版本多了几百个类库,同时增强了Qt的3D渲染能力;
- 商业版本对比开源版本,Bug修复率更高,同时提供了商业版本一些独有的功能和模块,包括设计到开发的接口,性能优化,对于MCU的支持,自动化测试等等,具体可以通过后续交流详细了解。
3.商业版本的Qt是否提供最新版本的离线安装包?
- 目前只有商业版本的Qt才提供离线安装。
4.商业授权版本具体报价?购买的数量要求?
- Qt的商业授权是实行严格的Named User7机制,即每一个使用Qt开发和调用Qt库开发的人员都需要购买商业许可;
- Qt的开发许可包括AD桌面端开发和DC设备端开发,如果使用QtDC开发设备,设备出货时还需要购买设备分发许可;
- 使用Qt开发的系统或应用程序,如果在二次分发时与某一固定的设备绑定分发,就属于设备端开发,即QtDC,典型的情况就是上位机和嵌入式。
5.订阅模式购买的商业版本,后续没有继续购买,是否影响后续商业产品的的销售和软件开源协议的变化?
- Qt目前在中国主要采取订阅模式,三年一个订阅周期,订阅期满后,如果不再使用Qt开发可以停止订阅,但不影响已经开发出来商业产品的分发或销售;
- 但Q严禁商业代码和开源代码混用,所以订阅期满后,如果还要基于Qt进行开发或维护的,那么就需要根据使用Qt的人员数量续订;
- 如果贵司参与国家项目的开发,Qt中国也可以同意购买永久发许可,但代价比较高。
粉丝福利,莬费领取Qt开发学习资料包、技术视频,内容包括(Qt实战项目视频教程+代码,C++语言基础,C++设计模式,Qt编程入门,Qt信号与槽机制,Qt界面开发-图像绘制,Qt网络,Qt数据库编程,Qt项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
版权声明:本文标题:Qt程序员必看:QT授权和费用 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729565173a1206477.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论