Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free.

So much has been written that I'm kinf of confused, but if I'm not mistaken Canonical is building the next generation of Unity for mobile devices with Qt, and in the near future the desktop will also be migrated to qt.

I just wanted to know the technical and/or political reasons driving this decision, and what consequences could it mean for the currently existing unbutu desktop applications.

share|improve this question
Programming in GTK is a huge pain because it's built off of GObject, which is a miserable attempt to shoehorn OO concepts into C. Qt just uses C++, which supports OO (and other paradigms) out of the box. C++ may not be perfect, but GObject just sets the bar soooo very low. –  weberc2 Jul 22 at 13:43

3 Answers 3

up vote 17 down vote accepted

You can find the answer on the mailing list and on Mark Shuttleworths blog. This blog post probably answers it best:

As part of our planning for Natty+1, we’ll need to find some space on the CD for Qt libraries, and we will evaluate applications developed with Qt for inclusion on the CD and default install of Ubuntu.

Ease of use, and effective integration, are key values in our user experience. We care that the applications we choose are harmonious with one another and the system as a whole. Historically, that has meant that we’ve given very strong preference to applications written using Gtk, because a certain amount of harmony comes by default from the use of the same developer toolkit. That said, with OpenOffice and Firefox having been there from the start, Gtk is clearly not an absolute requirement. What I’m arguing now is that it’s the values which are important, and the toolkit is only a means to that end. We should evaluate apps on the basis of how well they meet the requirement, not prejudice them on the basis of technical choices made by the developer.

In evaluating an app for the Ubuntu default install, we should ask:

* is it free software?
* is it best-in-class?
* does it integrate with the system settings and preferences?
* does it integrate with other applications?
* is it accessible to people who cannot use a mouse, or keyboard?
* does it look and feel consistent with the rest of the system?

Of course, the developer’s choice of Qt has no influence on the first two. Qt itself has been available under the GPL for a long time, and more recently became available under the LGPL. And there’s plenty of best-in-class software written with Qt, it’s a very capable toolkit.

System settings and prefs, however, have long been a cause of friction between Qt and Gtk. Integration with system settings and preferences is critical to the sense of an application “belonging” on the system. It affects the ability to manage that application using the same tools one uses to manage all the other applications, and the sorts of settings-and-preference experience that users can have with the app. This has traditionally been a problem with Qt / KDE applications on Ubuntu, because Gtk apps all use a centrally-manageable preferences store, and KDE apps do things differently.

To address this, Canonical is driving the development of dconf bindings for Qt, so that it is possible to write a Qt app that uses the same settings framework as everything else in Ubuntu. We’ve contracted with Ryan Lortie, who obviously knows dconf very well, and he’ll work with some folks at Canonical who have been using Qt for custom development work for customers. We’re confident the result will be natural for Qt developers, and a complete expression of dconf’s semantics and style.

The Qt team have long worked well in the broader Ubuntu community – we have great Qt representation at UDS every six months, the Kubuntu team have deep experience and interest in Qt packaging and maintenance, there is lots of good technical exchange between Qt upstream and various parts of the Ubuntu community, including Canonical. For example, Qt folks are working to integrate uTouch.

I’d draw a distinction between “Qt” and “KDE” in the obvious places. A KDE app doesn’t know anything about the dconf system configuration, and can’t easily integrate with the Ubuntu desktop as a result. So we’re not going to be proposing Amarok to replace Banshee any time soon! But I think it’s entirely plausible that dconf, once it has great Qt bindings, be considered by the KDE community. There are better people to lead that conversation if they want, so I’ll not push the idea further here . Nevertheless, should a KDE app learn to talk dconf in addition to the standard KDE mechanisms, which should be straightforward, it would be a candidate for the Ubuntu default install.

The decision to be open to Qt is in no way a criticism of GNOME. It’s a celebration of free software’s diversity and complexity. Those values of ease of use and integration remain shared values with GNOME, and a great basis for collaboration with GNOME developers and project members. Perhaps GNOME itself will embrace Qt, perhaps not, but if it does then our willingness to blaze this trail would be a contribution in leadership. It’s much easier to make a vibrant ecosystem if you accept a certain amount of divergence from the canonical way, so to speak Our work on design is centered around GNOME, with settings and preferences the current focus as we move to GNOME 3.0 and gtk3.

Of course, this is a perfect opportunity for those who would poke fun at that relationship to do so, but in my view what matters most is the solid relationship we have with people who actually write applications under the GNOME banner. We want to be the very best way to make the hard work of those free software developers matter, by which we mean, the best way to ensure it makes a real difference in millions of lives every day, and the best way to connect them to their users.

To the good folks at Trolltech, now Nokia, who have made Qt a great toolkit – thank you. To developers who wish to use it and be part of the Ubuntu experience – welcome.

share|improve this answer
...and after some years they are going to say "If your app is not native, it cannot be added to Ubuntu store!" and as we all know QT is not Free for commercial use! –  VassilisGr Nov 14 '14 at 20:13
Last I checked QT is completely free.It was not like that before but now everything is free. –  Mario Kamenjak Dec 22 '14 at 11:53
@VassilisGr Qt has been GPL-compatible for some time now (which makes it as free as other GPL things). However, for Qt to take a code contribution from the community, that contribution must be granted under a dual-license allowing whatever company that owns Qt today to sell a non-GPL license to the code if somebody pays them. Which in the Stallman definition of "Free as in Freedom Software" is not a problem (as long as we only consider taking software from the people who didn't pay and thus are using GPL...) Ubuntu wouldn't be paying, and thus be GPL, which Linux is anyway...so fine. –  HostileFork Mar 1 at 10:08

GTK+ does not support resolution independence, Modern mobile devices have ultra high pixel densities. If you run a GTK+ application on a mobile screen all the user interface elements would be so small as to be unusable.

This has been an open bug on GTK+ since 2008 but they have not done anything about it.

When GTK+3 was released, the project had the perfect opportunity to add resolution independence, because they were breaking compatibility anyway. They chose not to, and now it is really too late for them.

On the GTK+ Roadmap, resolution independence is planned for the release after 4.0, so they will release 4.0 then the major release after that will have it. If they stick to that plan then even desktop GNU/Linux will have to abandon GTK+ because high DPI desktop monitors and laptop monitors are available already and are about to become the new normal.

share|improve this answer

My take on the Technical/pragmatic reasons: Nokia purchased Trolltech and invested a lot into QT. Its lightweight and has years of optimization toward mobile platform. Regardless of your current opinions of Nokia, the N900 was years ahead of its time ... and it was debian / QT based... but pricey. However, I have no real knowledge of the decisions.

share|improve this answer
QT is also substantially more portable. More bang for the buck for a developer that creates an application using QT, as they will find native support on many, many more OS's -- Android, Blackberry, Windows Mobile, WebOS among others. and of course Mac OS and Windows. QT also benefits from significantly more contributors. –  mike stewart Apr 13 '13 at 19:44

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.