AICon议程上新60%,阿里国际、360智脑、科大讯飞、蔚来汽车分享大模型探索与实践 了解详情
写点什么

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:521

评论

发布
暂无评论

企业如何突破数据治理临界点,四大数据要素深度剖析

袋鼠云数栈

大数据 数据中台

集合去重的境界

flyhero

Java 程序员 后端 4月月更

RocketMQ-Streams架构设计浅析

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件

产品宣传手册是如何制作的?

小炮

产品宣传册

我和TiDB的故事 | 毫无准备地不期而遇,却想说与你相遇好幸运

TiDB 社区干货传送门

大巧不工,袋鼠云正式开源大数据任务调度平台——Taier(太阿)!

袋鼠云数栈

数据库 开源

K8S Pod 新安全策略 Pod Security Admission 介绍 | K8S Internals 系列第一期

BoCloud博云

Kubernetes Pod Security Policy Pod Security Admission

后端开发【干货知识】—Redis,Memcached,Nginx网络组件

Linux服务器开发

reactor 中间件 后端开发 组件 Linux后台开发

今晚7点直播!聊一聊“进击的开源操作系统”

OpenAnolis小助手

InfoQ 龙蜥社区 CentOS停服 开源操作系统 今晚直播

多批爱心物资驰援,妙可蓝多助力上海抗疫

科技新消息

16 台服务器达成 1000 万 tpmC!挑战分布式数据库性能极限

SphereEx

opengauss ShardingSphere SphereEx apache 社区 分布式解决方案

社区文章|MOSN 社区性能分析利器——Holmes 原理浅析

SOFAStack

golang GitHub 开源 SOFA

淘特 Flutter 流畅度优化实践 · 二期

阿里巴巴终端技术

flutter

【ELT.ZIP】《CCF开源高校行第一期》观后感

ELT.ZIP

Linux LVS OpenHarmony ELT.ZIP CCF开源高校行

被你质疑价值的混沌工程,阿里巴巴已落地实践了9年

阿里巴巴中间件

阿里云 云原生 中间件 混沌工程

百度智能云天工边云融合物联网平台,助力设备高效上云

百度开发者中心

【ELT.ZIP】OpenHarmony啃论文俱乐部——细数生活中的压缩点滴

ELT.ZIP

OpenHarmony 数据压缩 ELT.ZIP

招商银行 KubeVela 离线部署实践

阿里巴巴中间件

阿里云 最佳实践 云原生 中间件 KubeVela

漏洞挖掘之目录遍历漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

数字化转型-信息技术引发的系统性变革

Geek_XOXO

企业数字化转型

湖仓一体架构解析

五分钟学大数据

数据湖 4月月更

龙蜥社区第七次运营委员会会议顺利召开

OpenAnolis小助手

开源社区 龙蜥社区 理事单位 运营委员会

WebApi性能优化

神农写代码

对话达梦副总经理冯源 | 假如你身处被“科技制裁”的俄罗斯-墨天轮专访

墨天轮

数据库 oracle 国产数据库 达梦

系统性能分析从入门到进阶

阿里巴巴中间件

云计算 阿里云 云原生 中间件

如何画好流程图

Hockor

前端 流程图

能直接调试的开放API?这个API Hub绝了

Liam

Jmeter Postman API swagger Mock

招聘|欢迎加入非凸,学习Rust,了解内存和线程安全问题

非凸科技

聚焦丨看泛建材巨头如何实现数字化改造,推动企业业务增长

数商云

产业互联网 数字化转型 企业数字化

IP(定位数据库)地理位置查找真的能有效帮助阻止网络攻击吗?

郑州埃文科技

IP定位 IP数据库

企业为什么需要文档协同

小炮

文档协同 团队协同

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