有同学问,公司在大量使用Qt作为基础开发框架,公司也比较懵,使用Qt开发商业软件,到底是否需要付费?
一句话: 当前Qt在PC/Mac/Linux桌面开发,使用动态库LGPL,不付费。 嵌入式linux,手机开发,都要付费.
作为一个十几年Qt使用经验的老c++程序员,今天就来回答这个问题。
Qt能获得如此的成功,得益于LGPL协议,都知道GPL是非常严格,不能开发闭源商业软件的。但LGPL允许你使用动态链接的方式开发闭源商业软件。
所以Qt正是因为LGPL,获得了巨大的成功。我们要定义软件基础框架的成功,需要从几个纬度,1 开发者人数,社群, 2 软件代码的质量,稳定性。 3 成功的商业软件的案例。
从这几个纬度,Qt无疑是非常成功的,目前拥有百万级的开发者, 经过不断的迭代,软件质量稳定性都非常优秀,重量级的行业基础软件,比如Maya, SubstancePainter, 视频剪辑软件达芬奇等,
都基于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人。
但这一顿操作,各种协议的升级,搞得晕头转向。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,你得自己去编译动态链接库,Qt公司也没告诉你如何编译动态库.
付费价格是 一年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开发,比如手机端。
补充,我们这一代程序员,对GPL/LGPL理解过太历史,简单粗暴理解为动态库可以商用,静态库不允许。但最新的LGPLV3, 意思是嵌入式设备,包括手机开发,使用LGPLV3 Qt5.4以后的版本,
无论动态库,静态库都是不允许的。如何允许你使用呢? 掏钱。Qt最新整了个中小企业计划,一年499刀左右。