2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Linux 版微信正式官宣,居然选了这个 90 年代的老牌小众框架

  • 2024-11-12
    北京
  • 本文字数:3925 字

    阅读完需:约 13 分钟

大小:1.74M时长:10:06
Linux版微信正式官宣,居然选了这个90年代的老牌小众框架

长期以来,Linux 下的微信体验一直是用户讨论的焦点,如今大家期待的原生 Linux 版本终于来了。

 

前几天,微信上线了 Linux 客户端的下载页,提供了适用于 x86、Arm 和龙芯 LoongArch 三种架构的测试版应用下载。其中,x86 和 Arm 平台支持 deb、rpm 和 AppImage 三种包格式,而 LoongArch 平台目前仅提供 deb 版本。

 

选用 Qt 进行全面重构

 

根据公开资料,微信 PC 4.0 版已开始公测,不但 Windows、macOS 系统下保持同步,还首次同步上架了统信 UOS、deepin 深度系统、麒麟系统的应用商店,无论界面还是功能都保持一模一样。可支持消息撤回、支持浏览、刷新朋友圈,通讯录界面改版,支持深色与浅色模式切换等功能。官方表示,微信 Linux 4.0 公测版全面重构,不仅架构上实现了突破,更在功能上实现了不同平台的全面对齐。

 

这是 Linux 系统在国内普及的重要一步。如今,国内两大主流 IM 工具都实现了跨平台,这无疑会让腾讯在 Linux 用户群体中赢得一些认可。

 

不少人对新版本微信实现跨平台的方式颇感兴趣。有知乎网友通过分析微信 4.0 的安装目录文件,发现其中的 Weixin.dll 文件包含了 Qt 库,由此推测微信或许是通过 Qt 来实现跨平台支持的。另外,客户端中的“关于”信息,也显示了微信 4.0 是基于 Qt 开发。





图片来源:https://www.zhihu.com/question/2731975763

 

Qt 和 MFC 一样古老,同属于上世纪使用 C++ 开发 Windows 应用程序的重要框架。只是自 1990 年代中期发布以来,Qt 不断发展,逐渐能够支持广泛的平台和多种使用场景。如今,使用 Qt,开发者只需编写一次代码,即可在多个平台上部署,包括 Windows、Linux、macOS 以及移动平台如 Android 和 iOS。并且 Qt 还提供丰富的库和工具,支持 GUI 开发、网络连接、数据库访问等功能,不仅适用于桌面应用,还适用于嵌入式和物联网 (IoT) 开发方面。QT 官网列出的典型客户案例,主要是松下机上娱乐系统、AMD 图形软件之类。

 


虽然 Qt 在 C++ 社区中享有盛誉,拥有强大的跨平台能力、丰富的组件库和灵活的架构,但始终未能走出小众圈子。特别是在 Flutter、Electron 和 React Native 等跨平台框架大行其道的今天,Qt 似乎已经逐渐淡出了大众的视野。

 

在各大技术论坛上,我们经常能看到这样的讨论:“为什么没有更多的桌面应用选择 Qt 开发?”、“Qt 功能如此强大,为什么不够流行?”甚至有人直接提出“Qt 快要死了吗?”这样的疑问。就连 Qt 官方的技术论坛上也存在类似的讨论,可见开发者对 Qt 的未来发展充满了疑虑。

 

QQ 选择 Electron 而不是 Qt 开发桌面应用,也从侧面反映出了 Qt 目前所面临的困境。QQ 官方曾表示,选择 Electron 的主要原因是考虑到人才储备。在国内,熟练掌握 Qt 技术栈的开发者相对较少,这无疑增加了开发和维护成本。

 


被智能手机时代抛弃的、最好的 C++ GUI 框架

 

Qt 诞生于 1991 年,由 Haavard Nord 和 Eirik Chambe-Eng 两位挪威程序员共同开发。他们因对跨平台 GUI 开发的需求,创立了 Qt。1992 年,他们引入了创新的“信号与槽”机制,为 Qt 奠定了基础。

 

1994 年,他们正式成立公司,立志打造一个“世界最佳 C++ GUI 框架”。该公司最初名为 Quasar Technologies,后来更名为 Trolltech。然而,创业初期并不顺利。作为两个年轻的程序员,他们想要进入一个已经相对成熟的市场,但面临着客户少、产品未完成、资金不足等困境。幸运的是,他们的妻子都有工作,因此能够在 Eirik 和 Haavard 预计开发产品并开始赚钱的两年时间内养活丈夫。

 

Qt 的命名颇有趣味:选择字母“Q”作为类前缀,因为这个字母在 Haavard 的 Emacs 字体中看起来很漂亮。添加“t”代表“toolkit”,灵感来自 Xt,即 X Toolkit。1995 年 5 月,Qt 首次公开发布,并提供了商业和开源两种许可。同年,挪威公司 Metis 成为 Qt 的首个商业客户。

 

1996 年,欧洲航天局也采用了 Qt,他们购买了 10 个商业许可证,而 Matthias Ettrich 则使用 Qt 构建了 KDE,这使得 Qt 成为 Linux 上 C++ GUI 开发的事实标准,为 Qt 的发展奠定了坚实基础。

 

2008 年初,意识到自研软件平台竞争力不足的诺基亚,以 1.53 亿英镑收购了 Trolltech,并将其 C++ 框架作为其开发者战略的核心。彼时,诺基亚的软件平台在用户体验上已明显落后于苹果和谷歌。其界面设计老旧,操作繁琐,与竞争对手的简洁直观形成了鲜明对比。而 Qt 已用于构建成功的消费软件产品,如 Google Earth 和 Skype 客户端,因此这是一笔不错的生意。

 

诺基亚的管理层希望通过引入 Qt,为开发者提供一个更现代、更灵活的开发平台,以提升其软件的竞争力。Qt 作为一款成熟的 C++ 框架,具有强大的跨平台能力和丰富的功能,Qt 也没有固定的外观和风格,这给了诺基亚很大的定制空间。

 

Trolltech 团队在 Symbian 平台上引入了 Qt,并对用户界面进行了现代化改造。他们认为,简单地对旧界面进行修补是毫无意义的,只有全新的设计才能满足用户不断变化的需求。

 

另一方面,诺基亚内部存在着激烈的竞争,不同团队之间缺乏协作,导致了资源的浪费和重复开发。这种内部竞争的文化,源于诺基亚 2004 年的一项重组,旨在避免官僚主义的形成。然而,这种做法却导致了多个相互竞争的 UI 框架的出现,包括 Symbian 原有框架团队设计的名为 Orbit 的项目,以及 Linux 团队开发称为 libdui 或 Direct UI 的框架。

 

Qt 框架原本被视为统一诺基亚设备开发的工具,但工程师们却开发了两个不兼容的 UI API。这严重影响了源代码的兼容性,导致开发效率低下。诺基亚管理层似乎并未意识到这一问题的严重性,继续支持这两个并行的 UI 项目。经验丰富的 Epoc 开发者 Sander van der Wal 对此感到非常失望,他指出诺基亚再次犯了碎片化 API 的错误。

 

2010 年诺基亚换了一位新 CEO,他很快就认定 Qt 不足以为诺基亚赢回开发者或客户,并果断地取消了 Orbit 和 Linux 团队的 DirectUI 项目。

 

然而,在这些内耗的过程中,Symbian UI 的现代化工作被严重耽误。诺基亚的产品设计师仍然不得不与一个过时的、用户体验糟糕的界面打交道。

 

知情人士曾评价诺基亚的失败是因为“在无效的用户界面上浪费了 2000 人年”:拥有 Linux 和 Symbian 两个平台后,80% 的代码无需更改即可让诺基亚重获竞争力。而 Symbian 的代码已经投入了数千人年的开发,只有前 20% 的代码(最多)需要更新。然而,诺基亚未能实现这一点。正所谓“因缺少一颗钉子,整个王国都消失了”。

 

随着苹果和 Android 在市场上独占鳌头,Qt 对诺基亚来说也就变得毫无意义了。2012 年,诺基亚正式放弃了这项技术,Qt 被无情地“转手”给了 Digia。诺基亚放弃 Qt 之后,人们对该平台的信心一直在逐渐减弱。

 

从 Trolltech 到诺基亚,再到 Digia,应用框架 Qt 的发展历程充满波折,尽管它始终在开发者中保有拥趸。2014 年,Qt 从 Digia 分离出来成立了一个独立子公司,专注于将商业版和开源版 Qt 重新对齐。

 

复杂的使用条款

 

事实上,Qt 从第一天起就有两种许可证:商业开发需要商业许可证,而开源开发则提供免费软件版本。

 

其许可证多次变更,最终在 2022 年形成了一套很复杂的许可方式:商业开发者在购买 Qt 框架及相关工具时,可以在应用程序开发和设备创建两类许可中进行选择。这些版本在提供的功能数量、工具支持以及部署目标方面有所不同。价格从每月 302 美元起(仅适用于选择一年预付的用户),适用于专业应用程序开发许可;企业版则起价 329 美元,现有的 Qt 应用程序开发许可将自动转换为此企业版。

 



其许可也是导致 Qt 不够流行的原因之一。

 

在 2000 年以前,Qt 的许可证并不友好于开源软件开发。这在当时导致许多注重开源的人士拒绝使用 Qt。这也正是 GNOME 桌面环境诞生的部分原因。直到 2005 年,Qt 才允许开发适用于 Windows 的免费软件。因此,许多早于这些年份启动的开源项目无法采用 Qt 进行开发。对于商业软件开发,则需要支付许可费用。

 

另外,一些应用程序的许可要求与 GPL、LGPL 或 Qt 的商业许可不兼容。GPL 不适用于商业软件,LGPL 不适用于静态链接软件,而商业许可需要花钱——许多人都不愿意花钱。

 


截图来源:https://news.ycombinator.com/item?id=14068652

 


截图来源:https://www.v2ex.com/t/1023458

 

在社交平台咨询 Qt 许可模式的不在少数。近期,还有开发者在使用 Qt 开发软件后收到了 Qt 代理商的告知函,称其可能侵权。 尽管开发者仅是动态链接了 Qt 的核心库和控件库,并未修改源代码,但仍感到困惑。这是因为 Qt 使用了 LGPL 许可证,该许可证的条款相对复杂,尤其是关于修改源代码和开源方面的规定,让开发者难以完全理解。此外,国内外 Qt 授权的差异,以及代理商的告知函,加剧了开发者对 Qt 商用许可的困惑。

 

社区中对此也存在诸多争议,一些开发者建议避免使用 Qt,而另一些开发者则建议在软件中明确标明使用了 LGPL 协议。

 

总的来说,Qt 的商业化应用涉及到复杂的法律问题,开发者在使用 Qt 进行商业开发时,务必谨慎对待,并寻求专业的法律建议。

 

参考链接:

https://www.zhihu.com/question/3360014967

https://www.zhihu.com/question/2731975763

https://www.infoq.cn/article/99suibztx2be1fwvqjwg

https://doc.qt.io/qt-5/licensing.html

https://doc.qt.io/qt-5/licenses-used-in-qt.html

https://www.theregister.com/2011/03/10/nokia_ui_saga/?page=3

https://www.theregister.com/2011/03/07/nokia_qt_bye/

https://www.theregister.com/2012/08/29/qt_android/

https://rtime.felk.cvut.cz/osp/prednasky/gui/the-qt-story/

https://softwareengineering.stackexchange.com/questions/88685/why-arent-more-desktop-apps-written-with-qt

https://devclass.com/2022/02/02/qt-company-commercial-license-change/

https://news.ycombinator.com/item?id=14068652

 

2024-11-12 10:526381

评论 1 条评论

发布
用户头像
是老牌,但是不能说小众吧... 以前公司做车载导航设备,Qt基本行业首选啊. 桌面应用来说,Maya、Photoshop 的 GUI 也是用 Qt 写的,小众吗....
2025-01-07 15:53 · 湖北
回复
没有更多了
发现更多内容

体验百度Java后端一面凉经,让我有了新的感悟

小小怪下士

Java 百度 程序员 面试

行业方案 | 新规落地,企业集团财务公司如何构建数智财务体系?

袋鼠云数栈

AI作画技术实践第二期|用腾讯云智能图片融合优化AI绘画的效果

牵着蜗牛去散步

腾讯云 腾讯 AI作画 腾讯云智能 智能内容创作

数据治理:聊聊数据血缘!

用友BIP

重磅 | 招商局集团、招商局港口荣获CGMA年度大奖——九科信息与百年招商局共同探索财务数智化转型之路

九科Ninetech

大数据有没有必要参加培训?

小谷哥

QSDK/ipq5018/2T2R/Bluetooth BT5.1 supporting QCN9074/industrial wifi6 module

wallysSK

QCN9074 ipq5018

PCB工程师最实用的拼版案例合集请查收!

华秋PCB

PCB PCB设计 拼版

面对复杂中国式报表,哪款BI商业智能工具适合你?

小偏执o

StoneDB荣获"2022年度优秀开源技术团队" : 决心做好下一代MySQL高性能分析加速器

StoneDB

MySQL 开源 HTAP 数据库· StoneDB

研发 Leader 怎样写出非研发也看得懂的年终总结?

思码逸研发效能

研发效能 年终总结

Zebec正在以流支付的方式,推动加密支付走向主流

股市老人

公司项目终于用上了插入式注解,真香!

Java永远的神

程序员 程序人生 项目 架构师 后端开发

任务管理轻松实现大规模设备管理控制——设备管理类

阿里云AIoT

运维 监控 云安全 消息中间件 储存

MatrixDB v4.5.0 重磅发布,全新推出 MARS2 存储引擎!

YMatrix 超融合数据库

数据库 存储引擎 超融合数据库 版本迭代 YMatrix

零基础学习前端开发培训机构怎么选

小谷哥

一名曾因线上P0故障导致月工资扣了10%的码农心得:如何在故障10分钟黄金时间快速排障

KINDLING

Java 运维 可观测性 线上故障 ebpf

武汉前端培训学习靠不靠谱?

小谷哥

学习web前端应该选择哪个培训机构?

小谷哥

瓴羊Quick BI 权限管理:开拓数据分析效率和智能化水平的新高度

对不起该用户已成仙‖

产品负责人 VS 产品经理

ShineScrum

产品经理 产品负责人

LeaRun.net代码生成器 一键生成前后端代码

力软低代码开发平台

我人傻了!新入职的同事三下五除二就搭建了一个简易版秒杀系统

程序员小毕

程序员 程序人生 后端 架构师 秒杀系统

无代码是否能成为主流

间隔

云计算技术是基于互联网和网络的新技术

Finovy Cloud

云服务器 云技术 云渲染

Java: 在Excel中插入和提取图片

Geek_249eec

Java Excel 图片

柏睿数据完成阿里云PolarDB数据库产品生态集成认证

阿里云数据库开源

阿里云 polarDB PolarDB-X PolarDB-PG PolarDB for PostgreSQL

零基础去程序员培训机构靠不靠谱?

小谷哥

ROMA集成关键技术:增量数据集成

华为云开发者联盟

云计算 后端 华为云 12 月 PK 榜

Linux版微信正式官宣,居然选了这个90年代的老牌小众框架_架构/框架_Tina_InfoQ精选文章