QT发展记事(202x)
2021-01-09 16:57:52 阿炯

本文主要用于记录Qt发展和使用过程中的大事记,截止到2030年前。

Qt 是一个跨平台的C++图形桌面应用程序开发框架,广泛用于创建图形用户界面、嵌入式系统和移动应用等。Qt 是一款面向对象的跨平台C++界面程序开发框架。它既可以开发界面程序,也可以开发控制台和服务器程序。选择Qt做为开发工具的九大理由 :
1、用户体验
在 Qt 中可以体验前所未有的开发体验,它的设计开发模块能够让您更好的塑造,提升品牌形象,让作品达到一个质的跳跃。

2、节省开支
一套完整的开发体系可以在无形中减少设计师们在代码上编写所耗费的时间,正所谓“时间就是金钱”,有了Qt,一个代码栈和一个开发团队就能同时支持所有的目标平台,在开发中省去了文件、软件调试通配的时间,极大的增加了开发的效率。

3、更加快速的完善产品
Qt能够为项目提供更加简化的工作流程,拥有Qt,设计师和产品开发人员能够更好地衔接协作;并且利用Qt现成的各类库,可以使设计师们更快的得到自己想要的结果,从而加速了产品的交付完成。

4、性能完善
良好的性能启动是一款软件在设计开发过程中所具备的硬性条件。它在众多产品之中凭借着灵敏的人机交互,迅速的启动以及流畅的动画和良好的性能在众多产品开发软件中脱颖而出。

5、高效的开发软件
Qt是开发者想要的最快、最简单和最有趣的体验。

6、适用于任何平台
“一次开发、任意部署”适用于Qt。跨平台开发不仅能节省开支,还能推动战略落地。具备优良的跨平台特性。下述平台均可使用Qt:MS/Windows - 9x、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008、win10

Unix/X11 -Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台

Macintosh -Mac OS X

Embedded - 有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE、Symbian、Symbian^3、Symbian Anna、Symbian Belle、MeeGo、haiku-os。

7、灵活、可靠
面向对象:Qt 的良好封装机制使得其模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。

丰富的 API:Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的 collections,serialization,file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理功能。

支持 2D/3D 图形渲染,支持 OpenGL,拥有大量的开发文档以及XML 支持。

并且大多数文件都可以通过从第三方图形设计工具导入UI资产,使用Qt预制组件、控件或QML来设计它们。

8、一个框架、更少依赖性
相对于其他应用程序开发框架,Qt在基于不同框架的库和工具集开发的应用程序不仅很简单,而且更加稳定 。

9、支持多种语言
Qt支持不同的开发语言。C++高效、强大、通用。Qt的声明式UI语言QML使得以快速创建UI变得容易。甚至可以用Python来开发!


Qt的未来何去何从

Qt 不再使用 LGPLv2.1 授权

Qt 5 转入商业化 LTS 支持引起广泛的争议


Qt的未来何去何从


在诺基亚与微软结盟,全面转向Windows Phone平台后,诺基亚原有软件技术Symbian、MeeGo和Qt的命运引起了开发人员的关注。Qt社区的失落是显而易见的,毕竟2010年9月Elop执掌帅位之后,曾经宣布将Qt置于横跨Symbian和MeeGo两大操作系统之上的统一平台的地位。而诺基亚已经确认,Qt将不会向Windows Phone移植。2011年2月12日,诺基亚公司主管Qt生态链(销售、市场和服务)的负责人Daniel Kihlberg在Qt官方博客发表文章,阐述了Qt未来的发展走向。他首先确认,Qt仍将在诺基亚发挥重要作用。理由是:
* Symbian。留住2亿现有的Symbian用户并按计划在未来数年内继续卖出1.5亿部Symbian手机,对诺基亚是至关重要的。为此,Symbian必须依靠Qt现代化。

* MeeGo。诺基亚将在2011年发布第一款MeeGo设备,而且还将继续以开源项目的形式开发MeeGo,为将来的新一代技术做准备。而MeeGo的开发平台还是要依赖Qt。

* 社区。Qt社区现在 已经非常繁荣,除诺基亚之外,还有多个行业的数以万计的企业在使用Qt或者参与Qt的开发。随着未来数月之内Qt Quick和Qt SDK 1.1的发布,相信有更多开发人员加入现有的40万Qt开发者的大家庭。这将使Qt在移动、桌面和嵌入式开发者之中的地位更加重要。

* 发展。Qt仍在快速发展。Qt Quick(包括类JavaScript语言QML、Qt Creator和Qt Declarative)可以使更多非C++程序员和设计师方便地创建应用和界面,从而使Qt拥有更多的用户;Qt SDK 1.1(上个月刚刚发布技术预览版)为桌面和移动开发人员提供了统一的SDK。

* 潜力。Qt将无所不 在。Qt正在大力向低端的Linux设备和版本开疆拓土。Qt还在其他更广阔的领域支撑创新,比如梦工厂(DreamWorks)就将所有内部的动画工具 都切换到Qt上了,他们已经用Qt制作了《驯龙记》(How to Train Your Dragon)和《超级大坏蛋》(MegaMind)那样超酷的电影!

他最后表示,Qt现在正在变得越来越流行,2010年仅仅从qt.nokia.com网站的Qt下载量就超过150万次,是2009年的两倍;而随着更多创新、投资和开放管理的引入,Qt的未来值得期待。从Qt网站还有大批研发职位在招聘(挪威和德国)来看,这个部门似乎还没有受到诺基亚转型的直接影响,至少比公司内部Symbian和MeeGo的哥们强多了(也有人将之归因于诺基亚内部的混乱状态)。

可是,对诺基亚方面的上述表态,开发人员并不买账,他们已经被伤透了心。在这篇博客文章下面的评论里,几乎都是异口同声的不满和抱怨:诺基亚如此出 尔反尔,谁还会为将死的平台开发?现在Qt还怎么“Code Less. Create More. Deploy Everywhere”?有些人还心存侥幸地问是否有计划开发.NET移植,但很快有Qt内部人员予以否认,说这样只会造成不必要的分裂。马上遭人回击:“分裂?那是微软要考虑的事情,你诺基亚和HTC一样只是制造商,想那么多干嘛?你要考虑的是跟着你混的开发人员啊,HTC有吗?”更有不少人对微软戒心 很深,呼吁Qt重新独立,或者考虑更有前途的主人(Intel?Ubuntu背后的Canonical?),也有人提议马上成立Qt基金会,另起一摊,延续血脉。只有一些桌面和嵌入式的开发者比较心平气和,但是他们对Qt未来也忧心忡忡。如果Symbian很快消亡,MeeGo在三心二意的投入中未见成果,Qt对于诺基亚来说就不再有任何用处了。

Qt作为一种已经发展15年的优秀开源跨平台(Windows、Linux、MacOS、QNX、VxWorks等,参见这里)图形界面开发技术,这几年的确越来越流行了,与曾经的主要竞争对手GTK+相比优势也越来越明显。这一点从Qt官方网站上所列举的丰富的应用实例可以看出来,航天、国防、医疗、车载、能源、家庭娱乐、视觉特效、科学仪器等等。相关图书的销量也可以作为佐证,Qt图书虽然不多,但基本上都能上专业计算机开发类图书的畅销排行榜,而且销售相当稳定,寿命很长。可以说,即使Qt丢掉移动开发领域曾经光明的前途,在桌面和嵌入式系统跨平台的能力,仍然可以保证它在可见的将来继续发展。

然而,对于Qt而言,诺基亚的支持力度仍然至关重要,2008年被收购后Qt各方面发展的确很快,就是一个证明。从这一点来说,诺基亚战略发布会上演示的这一张有关研发投资的幻灯片恐怕对Qt不是什么好消息。其中,能分到Qt上的资金会来自哪里?反正相关的投入都在压缩。当然Kihlberg的文章最后提到了“开放管理的引入”耐人寻味,Qt这个部门在诺基亚本来就是相对独立的,公司会不会有计划引入其他伙伴(比如Intel,毕竟MeeGo要继续发展,开发工具仍然不可少)共同投入呢?无论如何,让我们祝福Qt。

上文部分源自:CSDN

22年的老将Lars Knoll将从Qt公司CTO岗位上离职创业

Lars Knoll 是 Qt 公司的首席技术官和首席维护者,他也是 KHTML(Webkit 的前身) 的创建者,他于2022年5月中旬在个人社交媒体发布公告,表示将离开 Qt 公司,之后他会加入一家创业公司开启新的征程。

Lars Knoll 从 90 年代末开始接触 KDE/Qt,并在 2000 年成为 Trolltech 的重要一员(诺基亚在 2008 年收购 Trolltech 后,将其改名为 Qt Software;后来又几经转手,最终形成今天的 Qt 公司)。无论是在 Trolltech,还是后来的诺基亚、Digia,再到 Qt 公司,Lars Knoll 一直跟随公司,也见证着公司的发展。如今在专注于这个开发框架 25 年,并在 Qt 任职 22 年之后,他选择离开 Qt 公司,开始尝试一些新的东西。

这是一个艰难的决定,但在 25 年之后,我觉得这是一个正确的决定,我想尝试一下别的东西。离职后 Lars Knoll 仍然会阅读 Qt 项目的邮件列表,并可能参加一些活动,但也会逐渐降低以往在 Qt 社区中的活跃度,未来他将把大部分时间花在 Qt 生态之外的事情上。同时他也透露了未来的去向,之后将和 Trolltech 的创始人一起加入一家小型的挪威创业公司,虽然他仍然身处软件行业,但这家创业公司所从事的事情与 C++ 或开发者工具无关。感谢多年来与我一起共事的所有人,在 Qt 以及通过 Qt 认识了许多朋友。这是一次奇妙的旅程,对此充满感激 —— Lars Knoll。

Lars Knoll 还发布了另一个邮件列表帖子,其中他想提名 Volker Hilsheimer 担任下一任 Qt 首席维护者。Lars Knoll 接下来将会完成工作的交接任务,并于6月底正式离开公司。

Qt 不再使用 LGPLv2.1 授权

Qt公司于2016年2月下旬宣布改变Qt跨平台应用开发框架的许可证授权。新版的Qt将在一个商业许可证、GPLv2、GPLv3和LGPLv3下授权,不再使用LGPLv2.1授权。Qt公司称,更新的开源许可证将能在用户使用开源版的Qt时确保用户自由,LGPLv3明确禁止封闭嵌入式设备分发LGPLv3授权的软件,在LGPLv3下分发的软件还向所有软件的接收者给予了专利许可。


Qt 5 转入商业化 LTS 支持引起广泛的争议

据外媒消息,从2021年1月5日起,Qt 公司开始将 Qt 5.15 作为仅供商业化的 LTS,现有的 Qt 5.15 分支将公开可见,但不会看到任何新补丁,只有付费账户才可以使用长期支持版本的 Qt 5.15 。

2020年1月,Qt 公司宣布对 Qt 项目的运营策略进行改革,所有用户都需要注册 Qt 帐户才能获取安装 Qt 的二进制文件(源码文件不受限制),同时长期支持版本(LTS)和离线安装程序仅面向拥有商业许可证的大型企业用户提供,此外面向初创企业和小型企业推出每年收费 499 美元的新 Qt 产品。只有最新的非稳定版本仍可供用户免费使用。此举也引起了社区的强烈不满,同时引发了基于 Qt 开发的 KDE 社区的担忧。有用户在 Qt 官方公告下留言讽刺道:“所以,基本上您是在告诉所有忠实的开源用户,现在他们将仅被视为商业客户的 beta 测试者,并且作为奖励,他们将只能下载非 LTS 版本。你们真是太亲切了!”

据悉从2021年1月5日起,只有活跃的商业许可证持有人才能访问包含 Qt 5.15 LTS 发行版本代码的私有存储库,首个仅用于商业用途的 Qt 5.15 LTS 标记发行版将于 2 月发布。目前仅有刚发布不久的 Qt 6.0 可供用户免费使用。而与 Qt 5.15 一样,将来的 Qt 6.2 被确认是另一个仅用于商业用途的 LTS。

Qt 公司激进的商业化举动也让一些来自外部的代码贡献者感到心寒。长期的 Qt 贡献者,来自英特尔公司的开发者 Thiago Macieira 表示,至少对于他在 Qt 中处理过的代码,他不会再参与修复、评论和审查后端错误报告。目前已经有开发者发布了一个 Qt.io 错误报告呼吁对社区版感兴趣的开发者维护 Qt 5.15 的“免费”分支,希望借此提出社区用户的述求以影响 Qt 公司的决定。但 Qt 公司尚未对此提议做出回应。而在2016年的2月份,Qt 不再使用 LGPLv2.1 授权,都是今天变异的重要线索。


KDE 社区的担忧:Qt 公司正考虑仅面向付费用户提供新版本

2020年4有12日,一封题为 Qt, Open Source and corona 的邮件在 KDE 社区引发了广泛的讨论,其内容主要是指出 Qt 公司正考虑在 Qt 发布新版后的 12 个月内,新版本将限制为仅面向付费客户提供(即不将其作为开源项目发布)。也就意味着,在新版发布后长达一年的时间里,开源用户将无法使用它——除非成为付费客户。就此引发的各种讨论,Qt 公司进行了简短的回应,大意是说这些内容不能代表 Qt 公司的观点和计划,最后还表示 Qt 公司为自己致力于客户、开源和 Qt 治理模型的理念而感到自豪。

然而整篇声明没有重申其及时开源 Qt 和面向所有用户提供下载等承诺,这样的回应显然得不到信服。下面介绍此次事件的背景信息。

首先有必要说明 KDE 社区、Qt 项目和 Qt 公司这三者之间的关系:
KDE 基于 Qt 框架开发,因此 KDE 社区既受益于 Qt 也直接为 Qt 贡献代码
Qt 既背靠着拥有雄厚资金实力的 Qt 公司,也从庞大且知名的 KDE 社区中获益甚多
Qt 公司受益于 KDE 社区,因为大量开源贡献者、开发者和社区专家帮助其改进 Qt 项目

可以看到三者有着密切的关系,且都能从中获益。不过根据邮件的描述,Qt 公司目前正在考虑停止这种健康的合作。据 Olaf Schmidt-Wischhöfer(任职于 KDE Free Qt Foundation 董事会的 KDE 开发者)的介绍,在过去两年里,Qt 公司和 KDE Free Qt 基金会一直在就更新合同进行谈判,后者在谈判中的目标是:
在不损害 Qt 项目和 KDE 社区的前提下,帮助 Qt 公司增加收入
加强对 Qt 项目和 KDE 社区的保护
避免 Qt 公司和 Qt+KDE 社区之间的分裂

谈判的具体内容包括:
修复 Qt 付费许可条款与使用/贡献开源软件之间的不兼容问题
(“Prohibited Combination” in https://www.qt.io/terms-conditions/)
修复 Qt Design Studio(属于受限的自由软件)与现有合同不兼容的问题
要求 Qt 公司及时发布 Qt 自由软件版本的更新以确保 KDE LTS 版本的安全修复
更新合同并将 Wayland 纳入其中
评估公司提出的合同变更建议,以使 Qt 业务的经济效益更高,例如可以选择将 Qt 与其他软件捆绑销售,或与第三方专有软件进行整合

然而,Qt 公司在今年1月宣布的三个变更让谈判遭遇了挫折:
需要使用 Qt 帐户才能获取安装 Qt 的二进制文件(源码文件不受限制)
长期支持版本(LTS)和离线安装程序仅面向拥有商业许可证的用户提供
面向初创企业和小型企业提供新版 Qt 每年收费 499 美元

尽管如此,这时双方仍在努力寻找对各方都有利的方案。然而就在上周,Olaf 表示 Qt 公司突然通知 KDE e.V. 董事会和 KDE Free Qt 基金会,称由于新冠病毒造成的经济前景给他们带来了更大的压力,所以需要增加短期收入。因此 Qt 公司考虑,在所有 Qt 版本发布新版后的 12 个月内,新版本将限制为仅面向付费客户提供。对此,Olaf 希望 Qt 公司能重新认真考虑此方案,毕竟这对开源社区造成的威胁是可以预见的。Qt 公司表示只有当 KDE 社区在其他方面能给他们提供让步时,他们才愿意重新考虑此方案。但 Olaf 提到,半年前双方在讨论合同更新期间,Qt 公司突然限制了 LTS 版本的发布。

KDE 社区和 Qt 公司之间曾经达成过一项协议,其中规定:如果 Qt 公司在开源许可证有效的情况下停止开发自由软件版本的 Qt(Qt Free Edition),那么基金会有权以 BSD 许可证或其他开源许可证发布 Qt。

“[…] should The Qt Company discontinue the development of the Qt Free Edition under the required licenses, then the Foundation has the right to release Qt under a BSD-style license or under other open source licenses.”

虽然 Qt 公司并未正面回应“仅面向付费客户提供新版本 Qt”的传闻,但从目前的情况来看,Qt 公司大刀阔库进行商业化的举动无疑已受到广泛的抨击。在 KDE 社区中,有人已经呼吁社区与其他 Qt 利益相关者合作(例如 fork 出另一个 Qt),并且在与 Qt 公司的对话中不要做出让步。不过无论如何,相信没人会受益于 Qt 公司和 KDE 社区之间的严重分歧。

笔者注:在笔者2004年刚接触到Linux时,就知道两大桌面环境GNOMEKDE,其背后的开发工具分别为GTK与QT,也当然知道其后面开发厂商对它们各自的态度:GTK为开源开发工具套件,而QT为当时奇趣公司下的开发工具集,QT的使用在当时就有在版权方面不小的争议且一直持续着。这么多年过去了,这个问题不但没有得到改善,反而更加的白热化和恶化。对此也不禁感叹:全面拥抱社区全是整个行业的出路。

Qt 简化商业授权方案

2022年2月上旬消息,Qt公司正在积极探索改进其产品多样性和提升财务业绩的方法,除了最近的 Qt Digital Advertising 1.0(Qt 数字广告 1.0),近日它还宣布简化其商业授权方案。

Qt 现在已将其面向开发者的商业产品整合为四个版本,具体如下:


Qt 将这种授权模式称为“洋葱架构许可证” (onion-architecture license)。因此,某个授权方案的级别越高,它包括的功能就越多。在这种授权模式中,上层的授权方案包括“内部/下层”方案的特性和功能。

这次变更的重大根本变化之一是,即使 Qt 开发者的许可证到期后,客户现在也可以继续分发基于 Qt 的应用程序。此前 Qt 的商业许可条款之一需要有效的开发者订阅许可才能使用此工具包分发应用程序。现在此条款已被删除,因此如果开发者的许可证失效,他们可以继续分发自己的软件。

据介绍,Qt 正在将过往以单独授权出售的多个附加组件整合到整体产品中。这些商业插件提供 machine-to-machine (M2M) 协议、用于开发微控制器用户界面的库,以及用于安全关键应用、汽车特定用途和应用管理的功能。

Qt for Application Development 最低定价的是 Professional 版本:每个用户每月 302 美元,而带有额外功能的 Enterprise 版本则为每个用户每月 329 美元。可点此查看详细的定价方案。