公司使用 Qt 到底要不要付费?| 博文精选
【CSDN 编者按】很多软件都有免费版跟商业版,对于很多开发者来说,找免费软件是常有的事情,但对企业来说,到底该如何选择呢?
出品 | CSDN(ID:CSDNnews)
有小朋友问(此处不应该是李永乐老师的小朋友):公司在大量使用 Qt 作为基础开发框架,公司也比较懵,使用 Qt 开发商业软件,到底是否需要付费?
作为一个十几年 Qt 使用经验的老 C++程序员,今天就来回答这个问题。
基于 LGPL 协议的 Qt
Qt 能获得如此的成功,得益于 LGPL 协议,都知道 GPL 是非常严格,不能开发闭源商业软件的。但 LGPL 允许你使用动态链接的方式开发闭源商业软件。
而 Qt 正是因为 LGPL,获得了巨大的成功。我们要定义软件基础框架的成功,需要从几个纬度:
开发者人数、社群;
软件代码的质量,稳定性;
成功的商业软件的案例。
无论从哪个维度,Qt 无疑都是非常成功的。目前 Qt 拥有百万级的开发者,经过不断的迭代,软件质量稳定性都非常优秀,同时也不乏重量级的行业基础软件,比如 Maya, SubstancePainter, 视频剪辑软件达芬奇等,都基于 Qt 开发。这些生产力基础软件,终端用户都是千万级的,从这个角度来看,Qt 的稳定性也经过了大量的终端用户的测试,验证。
Qt 的商业发展之路
从 Nokia 时代的 Meego , QML,Qt 的理念,即使是 09 年的时候,都非常先进,尤其是 QML。但被 Nokia 放弃,也成为了那个时代程序员对 Qt 的心理阴影。
Qt 作为行业基础软件,应该像 Linux 一样,被我们国家当作重要的国家战略来发展,Qt 在俄罗斯,德国等国家,都是大力使用的。
后来 Qt 被 DIGIA 收购,经过十年的发展,不但没有衰落,而且一通商业操作,越来越成功。
截止 2020 年底,Qt 公司是 DIGIA 旗下独立的子公司,而且是赫尔辛基上市公司,名字叫 QTCOM.HE。2019 年收入 5800 万欧元。市值是 12 亿欧元。
最近几年,Qt 公司一顿操作,靠卖付费 license,活得还不错,公司员工数是340人。
使用 Qt 到底需不需要付费?
初期使用 Qt 的开发者,对于各种协议的升级,容易被搞得晕头转向。GPL GPLv2 GPLv3 LGPL2.1 LGPL3 commercial license。昨天晚上研究到很晚,搞清楚了他们的这些操作,直接给您结论:
如果公司用 Qt 开发闭源商业桌面软件,在 Windows/Mac/Linux上,可以使用动态库链接方式,遵循 LGPL 协议,是不用付费的,也不用开源你的代码。
只需在你的商业软件的 about 等一些小角落,说明你使用了 Qt,遵循 LGPLV3 协议即可,你公司就可以开发闭源的商业软件。
那商业付费什么意思呢?就是指的你使用静态库链接的方式,是要付费的。
首先,嵌入式 Linux 开发,如果你自己手动编译 Qt 动态库,链接动态库。并说明你遵循 LGPL, 也是可以开发闭源商业软件的。
移动端,iOS/Android 开发。虽然 iOS/Android。目前都支持动态链接方式。但很明显,Qt 公司就是想让你付费。
最明显的就是 iOS 库,Qt 公司只提供了静态链接方式。如果你要开发 iOS,你得自己去编译动态链接库,Q t公司也没告诉你如何编译动态库.
PS:付费价格是 一年 3950 刀,三年 8400 刀。
如果你用 Qt LGPL 的方式,采用了静态库链接的方式,开发了 iOS/Android 应用。是不是就不允许,或者等着被抓呢?肯定不是的。
Qt 公司每天有很多非常重要的事情要去做。而且他们也不可能有能力扫描整个AppStore GooglePlay 看谁在违规使用他们的 Qt。
你只要不成天跑到各种论坛,社区去举报自己说自己使用了 LGPL 并使用了static lib。就没人管你。
最搞笑的事情是:你跑到开源社区去问 Qt 官方,为啥不直接提供iOS/Android LGPL 协议的动态库?他们表示,永远不会回答你。
你去问苹果,AppStore 接受 LGPLV3 的软件吗?苹果也不知道。
Qt 公司就是想办法让你付费。苹果他们不管你这些,你自己的事。
作为一个公司,团队,你一直使用 Qt 开发软件,如果你自己都没赚钱,怎么能给 Qt 公司付费呢?
所以建议是,先自己使用,等软件赚钱后,再买三年5万块左右的商业版。
如果你拿 Qt 开发商业软件,一年赚几百万,几千万,尤其是使用了手机,嵌入式版的 Qt,还是建议使用付费版,三年五万块人民币左右,支持下 Qt,开源软件的发展,有你的支持,会变得更好,自己公司也用得安心。
如果公司是 Maya, Adobe,达芬奇这种体量,那直接来深度合作定制开发了。
总结
最后,再来总结一下 Qt 的优劣势:
优势 :
Qt5 深度结合 OpenGL/ES ,非常适合做数字图像处理,生产力软件,设计软件,工具软件。跨平台图像处理能力非常强悍。
Qt6 提供跨平台的(Metal/Vulkan/D3D11)抽象层 QRhi, 对下一个10年从事音视频,数字图像处理的软件,非常大的利好。
QML 提供更简单的基于3D渲染引擎高效的写跨平台GUI的方式。但使用QML,不建议使用 JS。
(对于从事音视频,数字图像处理开发的程序员欢迎关注,后面我们会花大量的时间来深度研究 QRhi 的实现, 写一个专栏。Qt 的核心渲染层 QRhi 是他们从头写的,不是基于 MoltenVK)。
劣势:
跨平台不是特别完善,有时候还需要结合native开发,比如手机端。
作者简介:陈超,CTO 10年+ C/C++ 开发者。先后就职于德国 BOSCH,iBabyLabs 等企业担任主程, 精通嵌入式 Linux、iOS、Android 底层开发,音视频、网络通讯协议/流媒体开发,精通 Qt、FFmpeg、Metal、OpenGL 等开发库。
程序员如何避免陷入“内卷”、选择什么技术最有前景,中国开发者现状与技术趋势究竟是什么样?快来参与「2020 中国开发者大调查」,更有丰富奖品送不停!