![为什么 Canonical 选择 QT 而不是 GTK 作为 Unity 的下一代产品?](https://linux22.com/image/1114788/%E4%B8%BA%E4%BB%80%E4%B9%88%20Canonical%20%E9%80%89%E6%8B%A9%20QT%20%E8%80%8C%E4%B8%8D%E6%98%AF%20GTK%20%E4%BD%9C%E4%B8%BA%20Unity%20%E7%9A%84%E4%B8%8B%E4%B8%80%E4%BB%A3%E4%BA%A7%E5%93%81%EF%BC%9F.png)
已经写了这么多,我有点困惑,但如果我没记错的话,Canonical 正在使用 Qt 为移动设备构建下一代 Unity,并且在不久的将来桌面也将迁移到 qt。
我只是想知道推动这一决定的技术和/或政治原因,以及它对现有的 Ubuntu 桌面应用程序意味着什么后果。
答案1
您可以在邮件列表和Mark Shuttleworth 的博客这篇博文可能对此给出了最好的回答:
作为 Natty+1 规划的一部分,我们需要在 CD 上为 Qt 库留出一些空间,并且我们将评估使用 Qt 开发的应用程序,以便将其纳入 CD 和 Ubuntu 的默认安装中。
易于使用和有效集成是我们用户体验的关键价值。我们关心所选应用程序是否彼此和谐以及与整个系统是否和谐。从历史上看,这意味着我们非常偏爱使用 Gtk 编写的应用程序,因为使用相同的开发工具包默认会带来一定程度的和谐。话虽如此,由于 OpenOffice 和 Firefox 从一开始就存在,Gtk 显然不是绝对要求。我现在要说的是,价值才是最重要的,工具包只是实现这一目的的一种手段。我们应该根据应用程序满足要求的程度来评估它们,而不是根据开发人员的技术选择来偏见它们。
在评估 Ubuntu 默认安装的应用程序时,我们应该问:
- 它是免费软件吗?
- 它是同类产品中最好的吗?
- 它是否与系统设置和偏好设置集成?
- 它与其他应用程序集成吗?
- 无法使用鼠标或键盘的人可以使用它吗?
- 它的外观和感觉是否与系统的其余部分一致?
当然,开发人员对 Qt 的选择对前两者没有影响。Qt 本身长期以来一直以 GPL 形式提供,最近才开始以 LGPL 形式提供。而且有很多一流的软件是用 Qt 编写的,它是一款非常强大的工具包。
然而,系统设置和首选项长期以来一直是 Qt 和 Gtk 之间产生摩擦的原因。与系统设置和首选项的集成对于应用程序在系统中的“归属感”至关重要。它会影响使用与管理所有其他应用程序相同的工具来管理该应用程序的能力,以及用户使用该应用程序时可以获得的设置和首选项体验。这一直是 Ubuntu 上 Qt / KDE 应用程序的一个问题,因为 Gtk 应用程序都使用可集中管理的首选项存储,而 KDE 应用程序的做法不同。
为了解决这个问题,Canonical 正在推动 Qt 的 dconf 绑定的开发,这样就可以编写一个使用与 Ubuntu 中其他所有东西相同的设置框架的 Qt 应用程序。我们已经与 Ryan Lortie 签约,他显然非常了解 dconf,他将与 Canonical 的一些一直使用 Qt 为客户进行定制开发工作的人合作。我们相信结果对于 Qt 开发人员来说将是自然而然的,并且是 dconf 语义和风格的完整表达。
Qt 团队长期以来在更广泛的 Ubuntu 社区中工作出色——每六个月,我们都会派出优秀的 Qt 代表参加 UDS,Kubuntu 团队在 Qt 封装和维护方面拥有丰富的经验和浓厚的兴趣,Qt 上游与 Ubuntu 社区的各个部分(包括 Canonical)之间有很多良好的技术交流。例如,Qt 人员正在努力整合 uTouch。
我会在明显的地方对“Qt”和“KDE”进行区分。KDE 应用程序对 dconf 系统配置一无所知,因此无法轻松地与 Ubuntu 桌面集成。所以我们不会很快提议用 Amarok 取代 Banshee!但我认为,一旦 dconf 具有出色的 Qt 绑定,KDE 社区完全有可能考虑使用它。如果他们愿意,有更好的人来领导这场对话,所以我不会在这里进一步推动这个想法。尽管如此,如果 KDE 应用程序除了标准 KDE 机制之外还学会使用 dconf,这应该很简单,它将成为 Ubuntu 默认安装的候选者。
决定对 Qt 开放绝不是对 GNOME 的批评。这是对自由软件多样性和复杂性的赞美。易用性和集成性仍然是 GNOME 的共同价值观,也是与 GNOME 开发人员和项目成员合作的重要基础。也许 GNOME 本身会接受 Qt,也许不会,但如果它真的会接受,那么我们愿意开辟这条道路将是对领导力的贡献。可以说,如果你接受一定程度的偏离规范方式,那么建立一个充满活力的生态系统就会容易得多。我们的设计工作以 GNOME 为中心,随着我们转向 GNOME 3.0 和 gtk3,设置和首选项是目前的重点。
当然,对于那些嘲笑这种关系的人来说,这是一个绝佳的机会,但在我看来,最重要的是我们与那些在 GNOME 旗帜下编写应用程序的人之间的牢固关系。我们希望成为让这些自由软件开发人员的辛勤工作变得最好的方式事情,我们的意思是,这是确保它真正改变每天数百万人生活的最佳方式,也是将其与用户联系起来的最佳方式。
感谢 Trolltech(现为诺基亚)的优秀员工,他们让 Qt 成为了一款出色的工具包。欢迎希望使用它并参与 Ubuntu 体验的开发人员。
答案2
GTK+ 不支持分辨率独立性,现代移动设备具有超高像素密度。如果您在移动设备屏幕上运行 GTK+ 应用程序,所有用户界面元素都会太小而无法使用。
这已经GTK+ 上的一个未解决的错误从 2008 年到 2014 年,它被关闭,评论为“我们现在有高 dpi 缩放支持 - 虽然它不完全相同,但足够接近以使这个错误过时”。
当 GTK+3 发布时,该项目有绝佳的机会添加分辨率独立性,因为他们无论如何都会破坏兼容性。但他们选择不这样做,现在对他们来说真的太晚了。
在GTK+ 路线图,计划在 4.0 之后的版本中实现分辨率独立性,因此他们将发布 4.0,然后之后的主要版本将拥有它。如果他们坚持该计划,那么即使是桌面 GNU/Linux 也必须放弃 GTK+,因为高 DPI 桌面显示器和笔记本电脑显示器已经可用,并且即将成为新常态。
答案3
Ubuntu 首席技术官Matt Zimmerman 的博客也有信息:
正是本着这种精神,我最近一直在思考 Qt。我们希望能够快速、轻松、无痛地开发 Ubuntu 应用程序,而 Qt 是应用程序开发人员值得探索的一个选择。在思考这个问题时,我意识到 Qt 的优势与 Ubuntu 的一些新方向有相当多的共同之处:
- Qt 在ARM 和 x86,因为它在嵌入式设备上很受欢迎。消费产品已经使用 Qt on ARM 构建了 10 多年。我们为 ARM 提供 Ubuntu 产品已有近两年的时间,10.10 支持的 ARM 主板比以往任何时候都多,包括来自 Freescale、Marvell 和 TI 的参考主板。Qt 正在添加 ARMv7 优化,以惠及最新的 ARM 芯片。我们这样做是为了向 OEM 提供硬件选择,而不会牺牲软件选择。Qt 为应用程序开发人员保留了同样的选择。
- Qt 是一个跨平台应用程序框架,具有适用于 Windows、MacOS 等的官方端口,以及适用于 Android、iPhone 和 WebOS 的实验性社区端口。强大的跨平台支持是 Qt 的原始原则之一,它体现在官方端口的成熟度上。随着 Ubuntu Light 安装在装有 Windows 的计算机上,Ubuntu One 登陆 Android 和 iPhone,我们需要与其他平台的互操作性。还有大量开发人员已经知道如何定位 Windows,他们也可以通过选择 Qt 来接触 Ubuntu 用户。
- Qt 已经相当成熟触摸输入系统,目前已支持多点触控和手势(包括 QML),但仅在 Windows 7 和 Mac OS X 10.6 上才完整。与此同时,Canonical 一直在与社区合作开发适用于 Linux 和 X11 的低级多点触控框架,以造福 Qt 和其他工具包。这些努力最终会达成妥协。
总体而言,我认为 Qt 可以为想要为 Ubuntu 开发应用程序的人提供很多帮助,尤其是现在。它已经支持流行的跨平台应用程序,如 VLC,更不用说整个 Kubuntu 发行版。去年发生这种情况时我错过了,但 Qt 现在可以在 LGPL 2.1 或 GPL 3.0 下使用,这应该使它适用于几乎所有的 Ubuntu 应用程序。它拥有强大的商业支持以及庞大的开发者社区。当然,没有一个解决方案可以满足所有开发人员的需求,因此 Ubuntu 支持多种工具包和框架,但 Qt 似乎是我们工具箱中未来道路上的一个很棒的工具。
一个Ars Technica 文章讨论这篇博文提供了一些见解:
Qt 可以将第三方开发人员引入 Linux
尽管 Gtk+ 仍然具有价值,并且有许多理由继续使用它来构建原生 Linux 软件,但 Qt 现在是面向多个平台的 ISV 的不二之选。Qt 可以非常轻松地遵循底层平台的原生外观和感觉,或构建完全自定义的用户界面,以最佳地适应目标设备或外形尺寸。
随着诺基亚和英特尔将 MeeGo 引入各种设备,它将吸引一些主要的商业软件供应商。这些软件公司可以相对轻松地使用与 MeeGo 相同的代码将其移动 Qt 应用程序引入 Linux 桌面。Qt 专为简化这一过程而设计。这对桌面 Linux 来说将是一个巨大的胜利,因为它将带来原本无法获得的第三方应用程序。
值得注意的是,由于诺基亚支持该工具包,一些知名移动软件供应商已经积极拥抱 Qt。例如,移动视频流公司 Qik 正在开发其流行应用程序的实验性 Qt 端口,旨在将其引入 MeeGo。
本文作者是 Gwibber IM 应用程序的创建者,因此他有为 Linux 开发 GUI 的一些经验。
答案4
我对技术/实用原因的看法:诺基亚收购了 Trolltech,并在 QT 上投入了大量资金。它很轻量,并且经过多年的移动平台优化。无论您现在对诺基亚的看法如何,N900 都领先时代很多年……而且它基于 Debian/QT……但价格昂贵。但是,我对这些决定并不了解。