Yesterday, Trolltech released the final version of Qt 4.4, their graphical toolkit which forms the base for, among a lot of other things, the KDE project. It still features the dual-license model (of course), so proprietary developers can license Qt, while open source developers can get a GPLd version (both GPL 2 as well as 3). Read on for a quick overview of the new features, as well as some findings by Ars Technica.Qt 4.4 incorporates WebKit, allowing developers to integrate web content into their applications. Phonon, the KDE 4 multimedia framework, has also become part of Qt, allowing developers to integrate multimedia content into their programs. Also, Qt 4.4 brings support for Windows CE devices (Marble already runs on Windows Mobile), alongside the existing support for embedded Linux. There is a new concurrency framework for multithreaded development, as well as better XML support and widgets in graphics view.
Ars Technica took an in-depth look at the new Qt 4.4 release. They were very pleased with QGraphicsView:
When we first experimented with this feature last year, we looked at some Trolltech’s demo code to figure out how it works, and then we made a test application that displays a QWebView widget scaled and rendered at an angle on a QGraphicsView. It is remarkably easy to manipulate widgets and very little code was required to make it work.
The Phonon integration is also well-received. Originally, Phonon only supported a Xine backend, but thanks to Qt, it now also supports Gstreamer, DirectShow 9, and Quicktime 7 as backends. This also means it supports all the codecs that those backends support.
According to Trolltech CTO Benoit Schillings:
With Qt 4.4 we advanced three of our key design goals. First, giving developers the ability to develop cutting-edge user interfaces, second, enabling them to more efficiently develop faster, high performance applications, and finally extending our vision of Qt Everywhere by adding support for Windows CE.
So far, the best toolkit I ever used hands down. Good docs, amazingly portable, rational license terms, fast and very well thought out. Now complete with kitchen sink.
Very thanks Trolltech!
Overall, I like it as a GUI toolkit. But I don’t like how it tries to replace the STL with its own counterparts, or how it uses the Meta-Object Compiler to extend the language. That, combined with its dual-licensing policy, I tend to prefer other toolkits.
Though, I have to admit this is primarily taste . Obviously things like QString curently provide advantages, like good internationalization support. But you are locking yourself into one toolkit, which can be OK for applications, but is less nice for e.g. libraries.
The concern about replacing parts of the STL has, in my opinion, been adressed in the 4.0 release when Qt was split into smaller modules. For instance, if you use QString in a library, you only need to link to QtCore. That is a reasonable dependency just like another. It is much lighter than linking to all of Qt — which practically no app or library does.
It is perfectly OK to replace the standard library and Qt is certainly not the only such alternative. For example Boost also provides replacements for many classes, and I think that GTK (and GTKmm) also does. The standard library is rather old-fashioned and C++ programming has evolved since the times when it was designed, 20 years ago. You mention better unicode support as an advantage of QString over std::wstring, and I would mention at least another one: copy-on-write. Being able to write a function that just returns a QString without paying the overhead of uselessly copying that string, is awesome.
About the Meta-object-compiler, (MOC) what’s wrong about it? It provides huge advantages that one just can’t achieve otherwise. The biggest one is introspection. Ever wondered why Apple uses Objective C instead of C++? Introspection. The MOC brings introspection to C++, and that’s huge. QObjects can e.g. enumerate their own methods, call methods by name, etc. This allows for much more flexible signals-and-slots than is possible with tempate solutions (a la GTKmm). Hugely valuable for a GUI toolkit, to connect to dynamically loaded components. It also improves the i18n system. Trust me the MOC brings enough benefits to justify its existence And by the way who said C++ was an immuable thing that nobody may improve except for an ISO committee Some more info here:
http://doc.trolltech.com/4.3/templates.html
Edit: one important precision, the MOC is, like the other Qt tools, Free software released under the GPL 2/3. So it’s not at all a “proprietary extension to c++” as is sometimes trolled.
Edited 2008-05-07 14:31 UTC
No doubt that the MOC has many benefits, but some programmers (myself included) may not use the IDEs sponsored by Qt, and therefore having to call the MOC manually. If Qt also supported signals and slots templates, there would not be a need to invoke the MOC manually.
Almost nobody calls moc manually. It is the job of your build-system to call it for you or to let ‘make’ call it for you. For example the KDE projects uses CMake and therefore KDE developers never run the MOC manually. Even, say, on the Windows platform, CMake can generate Visual Studio project files and have the MOC be automatically run, I believe (I have no experience with that, though). So, from the point for view of build automation, the MOC is just like the compiler, the linker, etc. Nothing specific to it. By the way Trolltech doesn’t ‘sponsor’ any IDE, as far as I know.
You don’t need to invoke MOC manually, even if you do not use an IDE with Qt integration.
Basically all IDEs are capable of working with a Makefile based project, at least I don’t know anyone which doesn’t.
And Makefiles generated by qmake contains all the rules for MOC, UIC and a rule to update the Makefile itself if the .pro file changed, making it very pleasent to work with, independent of platform.
Nice additional advantage is that one can use the very same Makefiles for automated builds during the night, again on all platforms (e.g. using nmake and VS commandline compiler cl.exe on Windows)
What exactly is wrong with the dual-licensing policy?
If you are going to use Qt in a closed, commercial, for-your-profit application, you have to pay Trolltech a license for using Qt as part of your product. This is the same deal as with any other commercial toolkit.
If you are going to use Qt in a give-code-back-to-the-developer-community open source application, then Trolltech are happy that you need pay them no license fee for that.
It seems like a perfectly fair arrangement to me.
Edited 2008-05-07 14:49 UTC
You forgot another one.
If you’re going to use Qt in your for profit company for in-house code you can use the open source edition too.
http://www.gnu.org/licenses/gpl-faq.html#InternalDistribution
To me, that is pretty clear.
Others may even say, but I wouldn’t wanna try it, that you don’t have to buy the commercial license to dynamically link to it and sell commercial software.
http://en.wikipedia.org/wiki/GNU_General_Public_License#The_GPL_in_…
That one, is not so clear cut.
There are some other good GUI toolkits with licenses that allow both use in free software and proprietary software. So, this can be an advantage of some toolkits other than Qt.
This starts to look like a straw man , I never said their arrangement unfair. Troll Tech created Qt, so it’s their call to draw the lines. But this, and the other properties of Qt I mentioned make it less attractive to me, and possibly others.
Remember, not everybody is an absolutist .
Edited 2008-05-07 18:59 UTC
Qt can also be used in free software as well as proprietary software. I am absolutely certain because I use it for free software as a KDE developer and for proprietary software as a developer in a software company.
Actually some of the alternatives have only plain LGPL licences, which means it is not possible to link them or parts of them statically into a product without distributing all the rest as relinkable object files as well.
There is no way our management would approve these.
Only if you buy a license for proprietary software.
Err, no.
Qt can be used in free software without having to buy a license.
If you do buy a license, then Qt can be used for proprietary software as well, not instead of.
Buy a license for Qt, and it allows you to use it in both free software and in commercial software.
Don’t buy a license for Qt, and it allows you to use it in free software.
I can’t see any particular advantage there for other toolkits … Visual Studio requires you to buy a license does it not?
There are I believe some no-cost toolkits that can be used for both free software and for commercial software (Tcl? GTK+? FLTK) … but AFAIK these have nowhere near the power and capability of Qt. I wouldn’t have said they qualified as “good GUI toolkits” to the same standard as Qt provides.
But … by all means enlighten us. What are these other toolkits of equivalent features that are better options than Qt because of their licensing?
Mono + GTK# perhaps? Is it really better? Is it really unrestricted?
Edited 2008-05-08 04:53 UTC
How about wxWidgets to name one? It’s licensed under the LGPL plus some exceptions, making it a very liberal license. It’s a very nice and complete library, with bindings for many languages.
wxWidgets is indeed very nice, but it is not Qt.
http://www.wxwidgets.org/
http://trolltech.com/products/qt
I did ask … “What are these other toolkits of equivalent features”.
Uhm… NO?
Anyone can build and distribute windows .NET or API32 apps for free and sell them as closed source apps if they want. Nobody is required to buy any license. Of course if you want Visual Studio you have to pay for that, but you don’t need that. Microsoft offers a free limited version and a complete command-line SDK. The conditions are the same as with GTK.
In QT, on the other hand, you must pay an additional tax to distribute your proprietary software.
For proprietary vendors, QT isn’t freer than .NET at all.
So … Uhm… YES?
For any software author, to get the rough equivalent of Qt, you have to pay for Visual Studio.
In addition, if you use the standard GUI API for .NET, which is WinForms, then your application is constrained to be Windows-only. No cross-platform market for YOU.
For any software author, QT is significantly freer (as in freedom) than .NET. For open-source software authors, Qt is also free (as in no cost).
You’re missing the point. .Net is designed to be used with Visual Studio, you’ll need it to get the equivalent functionality of Qt, and you will also need licenses for Windows for both you and your customers. With Qt you can skip over that using a free OS like Linux.
You don’t need to pay any tax at all to distribute anything. Qt is purely based on developers licenses.
See above. .Net requires Windows, which is a large part of the reason why this whole free software thing came about in the first place.
It’s pretty sad how this stuff still keeps doing the rounds. You have to wonder at the quality of software some people are producing.
There’s nothing straw man about it.
Then that’s a decision you’ll have to make yourself. Quite frankly, the STL and libraries like Boost are often complained about as a reason why people just don’t like C++.
I’m not entirely sure what you think locks you into Qt. The only thing you can be talking about is the development effort you put in with Qt, but that’s true of all libraries you might use.
It’s more complicated than that. At face value, it seems like a disadvantage that Qt costs money for commercial development. However, this price gives you commercial support and some promises of future viability. This is an investment in your tool and your tool makes your work easier and more efficient – so this will give some returns. If you were to pay $0 for a toolkit which would stop being developed or advancing at a reasonable rate after your project is far along, dealing with the situation would probably be even more expensive.
Edited 2008-05-08 22:37 UTC
Of course, if you paid Trolltech^WNokia and then Nokia had a change of heart, you’d be doubly SOL. But large companies rarely exhibit changes of business strategy. Especially the ones that have been committed to this course for a very long time, like Nokia. So you are probably OK.
BTW, I wonder recently about one thing about Qt licensing.
AFAIK if you want to do closed-source app, you have start with bought Qt license right away, you can’t tinker for some time with GPL version and, seeing that it’s a viable project and works out nicely, buy commercial license then.
But…what if later, at some point, rms preaching will make you feel guilty and you’d like to GPL app that was developed, up to this point, using commercial Qt license?
(I’m sure this is answered somewhere, but I’m on mobile acces currently and this seems ontopic…)
That’s correct, although as long as you don’t release your code publicly first and then try to close it, I’m sure they won’t mind your small in-house experiments you did before buying a license. Technically the license forbids it, but Trolltech aren’t idiots and will overlook some things there.
No problem. If you buy a commercial license, you can release your program under any license you wish, free or proprietary.
I’ve never been completely sure about that one. I would have thought that you, being the copyright holder of your code, would be entitled to re-license in any way you saw fit, provided you had a license for Qt to permit other development from then on.
The price of a commercial license is extremely prohibitive. It’s approximately $4k a year per developer. Some people might laugh at that and say that’s no big deal. To put things in perspective, Visual Studio 2008 Professional sells for $689 on Amazon. Codegear’s (was Borland) RAD Studio costs $1k. REALBasic costs $500.
Qt is really expensive, and it’s quite hard to get that purchase order approved. Especially when Visual Studio + wxWidgets is a lot cheaper and isn’t really much worse off.
Not quite.. Yes that’s about the price of the initial purchase, which gets you the license + 1 year of support + upgrades. After that you can stop paying if you want.. You can develop with your version of Qt for as long as you want. It’s only when you want access to new versions you have to pay the support fee (which is about 1/3 of the initial purchase price) to gain access to them + another year of support.
So yes, I agree with you that it is relatively expensive, but I think (and apparently lots of other companies agree) that the license cost easily pays for itself in increased developer productivity.
I agree that it can be hard to get it approved if the benefits aren’t proven yet to the company. From my experience it is easily worth it, but I can see why it could be a hard sell without prior experience with it.
However I disagree that wxWidgets is essentially the same thing. It’s not. It’s not even close. That’s not to say wxWidgets is a bad project, but you just can’t compare it to Qt because Qt has had probably tens of more man-years invested in it and that has made it excel in many areas.
I think the price used to be less then 4000$ if you just need a single platform, but I could not find the prices at the trolltech website.
Does anyone know if they have removed all pricing information, or have they just moved it someware where neither I nor google could find it?
Yeah it seems the prices have disappeared. For reference, I paid 1160 USD last fall for a single platform desktop license with the small business discount.
Of course from a selfish point of view I’d love it if Nokia lowered prices to push adoption, but then again, even at the current price, Qt is making my (tiny) business possible. I have a full time day job and only do it in my free time, and I firmly believe that I couldn’t write the apps I write without Qt given those very limited resources. I’ve rewritten apps from MFC to Qt before and halved the lines of code. The author of the keyboard launcher Launchy had a similar experience.
Found the reference: http://sourceforge.net/forum/message.php?msg_id=4485857
That’s lower than the $1500 I remember that was published on the Trolltech website before they pulled the price list. It’s still quite a bit, but I guess it’s worth it for you.
Still, thanks for sharing the info since I’ve often been curious about what the small business discount was.
Interesting.
Do you have any numbers how much commerical wxWidgets support costs and which companies do have such offers?
Commercial support? Aside from hiring some consultants specializing in wxWidgets, commercial support is nonexistent. See http://www.wxwidgets.org/support/support.htm
On the other hand, after years of working in Win32 I wonder what you mean by commercial support? I can’t really think of what kind of commercial support I’d ever received when using Win32/ATL/MFC/WTL, all Microsoft technologies.
That’s a subjective argument, not an objective one.
If a developer is paid $40K per year, that amounts to 10% of their salary. If Qt reduces development time by more than 10% on any given project(s) over the course of a year, then the company sees positive ROI. It gets better the following year.
Since many developers are paid more than $40K per year, the ROI comes even quicker if Qt can reduce time-to-deliver for projects, particularly with a support infrastructure behind it. That’s why many of Tt’s customers pay even to use the framework internally, when they could simply use it for “free”.
And I’m being simplistic, at that. Even a $40K/yr developer would cost an organization considerably more when benefits, taxes and overhead costs are factored in, so any tool that makes that developer more efficient could bring considerable value.
The people that “laugh” at that are the ones that understand the value equation that companies use when determining value. Static price is meaningless on it’s own, it’s only relevant when compared to the value the product in question offers.
That’s not to say every organization would see value in Qt, but it’s about ROI, not upfront cost.
Apples, meet the oranges, I’d like to compare you.
VS2008 and RAD Studio are development environments, not application environments. REALBasic? Seriously.
Microsoft charges a developer fee similar to Trolltech. The difference is that MS spreads that cost out across the purchase price of all Windows licenses, which means the users are paying it incrementally, and not the developers. Tt has to try and offer better value over and above the “free” development licensing for platforms such as Windows (or OSX, or linux, etc.), to justify the price, and that’s not a bad thing. Given that they’ve been around this long, despite several years of armchair posturing that their model won’t stand against Gtk or wxWidgets, I’d say they’re doing something right.
Expensive in who’s opinion? Yours. Commercial organizations don’t make decisions based on price, they make them based on value. It gets very tiring to hear this argument brought up time and time again. The issue isn’t the cost of the license, it’s the value it brings. There are many intangibles that Tt brings to the table for Qt, including a road map and an infrastructure to provide high-level support for the product they are selling, aside from the capabilities of Qt/Qtopia itself. While many outside of the corporate world may dismiss these as frivolous, the commercial world places high value on such things.
If you’re already carrying the expense for a team of developers to work on a project, $4K per developer can simply an incremental cost, if it means your team can reduce development time and doesn’t need to rely on forums, mailing lists and IRC for support in order to meet or exceed a deadline.
I used to sell commercial firewall software. I’m sure there are people who would scoff at the thought of paying 50 or 100 grand for firewall software, yet none of those companies I sold into ever bickered over the price based on the fact that Best Buy sells linksys firewall routers for $200. That’s because those companies would never select a $200 firewall over the functionality of an enterprise-class firewall, just because it’s cheaper, even though they have some basic functionality in common.
Price and cost are two different concepts. For businesses, time is money. Upfront expenditure to mitigate expense down the road is not a foreign concept. It’s the way business works.
Again, not to say that every organization, or even independent developers, would find value in the license/support cost. Only saying that it is very myopic to assume that they won’t.
I don’t know where you live, but C++ developers are around $65k and up, per year.
Man, I need to move outta the UK. A C++ developer in the UK will rarely get £65k. Starting pay is about £22k. I’m in the ball park of 30k.
…which is about $60k at the current exchange rate. I’d say you were only slightly underpaid.
I wouldn’t mind, if the cost of living in the UK and the US were similar. Sadly, they’re not. Look at the price of all computer products (software of hardware) in the UK compared to the US. They tend to cost 30% more on average.
The cost of living in the UK is much higher than in the US.
Correction.
I am not sure how much of Qt features affected this, but was surprised to find out that VLC will be moving to a Qt based interface starting with 0.90. There was mention that Wireshark was looking at this also but not sure about that one.
VLC used wxWidgets, not GTK+ directly.
But I’m happy for the transition to Qt4, it rocks
Given the underlying Phonon, this could be of great benefit to VLC … it would save VLC form having to work out all the different requirements of various platforms to make sound work.
I think SMPlayer
http://smplayer.sourceforge.net/
http://smplayer.sourceforge.net/screenshots.php?tr_lang=en&PHPSESSI…
(being a Qt-based front end for Mplayer) has the same idea.
Yes. VLC is an application that I care about. Depending upon how things go, this could be a concrete example that helps convince me of the benefits of at least one part of the new KDE4 infrastructure. I´ve been something of a skeptic, as a few people around here probably know. 😉
I’m not sure if VLC is planning to use phonon. I doubt it. They have their own platform specific code, and their own codecs which work very well. Phonon is meant for basic playback mostly and doesn’t do everything that VLC does. However they are going in the other direction, there is a vlc backend for phonon, which means you could use vlc’s codecs to play media in other apps. http://code.google.com/p/phonon-vlc-mplayer/
Is that redundant with phonon?
Wouldn’t that make a mess of the code?
Seems to me that now with phonon, 90% of VLC could be created with QtDesigner.
Why hack support for Qt into it…start fresh.
Maybe phonon doesn’t have as many features as VLC, so add those features to phonon. Does phonon have subtitle support?
I’m rambling so I’ll stop
If i remember correctly the current version of phonon used by qt 4.4 doesn’t support subtitles, but the version in kde trunk does, or they are working on it
I wasn’t surprised. They used wxWidgets before and the GUI had many problems.
I also used wxWidgets for a project and I’m sorry to tell that it sucks.
Strange: ftp://ftp.trolltech.com/qt/source/ doesn’t have an actual Windows version (still rc1)
Edited 2008-05-07 20:28 UTC
See ftp://ftp.trolltech.com/qt/source/qt-win-opensource-src-4.4.0.zip.
I was looking for: ftp://ftp.trolltech.com/qt/source/qt-win-opensource-4.4.0-mingw.ex…
but if the zip is the same then it’s fine too.
For proprietary vendors, QT isn’t freer than .NET at all.
So what? Why should Trolltech give away Qt for free to people who develop proprietary software? Actually I think it is a good thing that proprietary vendors pay for Qt because Trolltech needs money to further develop and improve Qt and Trolltech wouldn’t make money if they give away Qt for free to proprietary vendors. The open source community greatly benefits from Trolltech improving Qt. By the way, you have to pay for an MSDN subscription too and many source managment systems and profilers are not for free either. Welcome to the world of commercial software development!
>I don’t know where you live, but C++ developers are around $65k and up, per year.
I live in Brazil, work for HP as junior developer and get paid less than $20k.
Looks like it’s time to for for other company or change country 🙁