News emerged recently that Qt Software (formerly Trolltech) were working on their first IDE
for Qt, code named Project Greenhouse. Today saw the release of the
first technical preview under the name Qt Creator. The initial
release is binary only, and under the terms of the Qt preview license,
but the final release will be released with source code under a GPL
compatible license. The initial release is available for Linux, Mac OS
X and MS Windows. Read on for a users review.

The Greenhouse project began as a research project within Trolltech.
We are told that the design is entirely plugin based, suggesting that
ultimately we will have the ability to add support for new languages,
debuggers etc. The documentation suggests a plugin for the CMake build
system used by KDE is in the works. At the moment things are a little
too bare for the benefits of this approach to be readily apparent, but
it is a sensible approach to take when developing an IDE.

Unusually for the dot, I have decided to look at the Windows install of
Qt Creator. The reason I have chosen to do this is that I have tried to
get applications working with the open source Qt version for Windows
before with little success, it has always been more trouble than I have
time for. Hopefully the combined Qt+IDE+Mingw package will make this
a pretty painless experience, which will bode well for future work on
KDE on the windows platform.

The initial download for Windows is pretty huge, over 200MB, however
since this includes the compiler and run time environment as well as
Qt and the IDE itself that is something I can live with. The installer
is a standard windows-style setup.exe and is pretty much idiot proof
(if rather slow).

The inital screen you see when running the IDE is very bare in
comparison to other IDEs - a basic page with a button to get to the
getting started guide. There is a sidebar on the left with some pretty
self-explanatory buttons and a menu bar but unusually there is no
toolbar at all, let alone the common sight of an overwhelming
collections of icons.

The getting started guide itself is pretty weak right now, and is
definitely alpha quality. The switch from a very clean initial view
to the fairly ropey tutorial with a massive index of the entire Qt
documentation on the left is jarring. Rather than cheating by reading
the docs, let's just dive right in and write something, how hard can
it be?

I will begin with the obvious - create a new project. We have a number
of choices of project type, but let's go with a GUI application. I
note here that the dialog starts as an OK/Cancel style dialog then
seems to change to a wizard, this could do with some work. I will call
the project DotDemo. I have chosen to include the Webkit module as well
as the basic Qt modules, as these will be required for what I want
this project to do. The final screen of the wizard is for project
management, but is totally disabled and the file names are off the
edge of the dialog - fair enough, this is alpha code.

Now we have got a basic project, let's see if the IDE provided shell will
build on its own. Clicking the big 'Build&Run' button on the left
brings up the build settings rather than actually building or
running, I discovered that you need to use the 'Play' arrow button
there instead. The result is a small progress bar in the sidebar
saying building. The resulting app is pretty unimpressive, but the
generated code has built and run successfully - a good start.

Double clicking the mainwindow.ui file in the file view brings up the
familiar sight of Designer embedded in the IDE. Since my usual demo
is a browser, I have dragged a QWebView into the view and added a
layout. This works as expected, and a click of the 'Play' button later
I have a working minimal browser application. Not bad since I haven't
written any C++ yet!

At the moment, Qt Creator seems to have quite a few rough edges in the
UI department and more missing features than I can count, but this is
looking like it is something worth watching. This is the first time
I have got the open source version of Qt on Windows to do anything
useful despite having previously got working code from Visual C++,
and having lots of experience developing with Qt on Linux. Qt Creator
certainly looks like it could lower the bar for Qt development on
Windows, and if the CMake suppport mentioned in the documentation is
added then this could be a useful tool for KDE developers.

Comments

Why? Because it is a product. There are many products out there that can be had with far less investment than free software involves. They work, are productive and cheap.

I am even less interested in the business model of Qt and Nokia.

I'm far more interested in the process of creating software. The process of proprietary software leads to monopolies. I remember the harm that came to users from the gradual dissolution of proprietary software choice. It is a natural monopoly business.

The process of free software has been able to break the strangleholds of monopoly power. And in a short time producing remarkable software.

It doesn't surprise me that the processes that have made free software so remarkable have been used internally in some companies. I would be surprised if they weren't. Having some nominally free interfaces to a controlled process, as I said above, is profoundly uninteresting.

Derek (who has finally been called a troll. I'll mark it on my calendar)

Derek, I never thought of you as a troll... but now it's all so clear to me. ;-) In case people don't know I'm kidding...

Seriously, they say it will be released with a GPL compatible license. I'm sure you remember KDE had serious issues when it was introduced and they were put to bed. It is likely that there are internal licensing issues and code audits that must be reviewed and releases signed before it can be properly licensed. They did say this didn't start out as a product, but just looking into it. It makes sense for them to have more software showing up on all platforms.

As for me I'm in total agreement with you on the importance of free, as in speech, software. I'm also painfully aware of the paradoxes in free software. KDE is so good because there is a professional organization with a financial incentive to maintain the toolkit. My impression from my interactions leads me to believe that this is not going got change under Nokia. Almost all the same KDE people are there still. I think they deserve the benefit of the doubt until the actual release.

That's not what he is saying, Eric, he said he did not care if it was GPL or not, as long as something is developed by paid developers he is not interest. He's not a troll, he's an outsider who tells computer scientists like me that I should do something different for a living if I like free software. At the same time he misunderstands the mechanics of the free software community completely. Try to remove everything that was contributed by institutions and companies from the free operating system and see what you are left with. Either I'm completely misunderstanding him, or what he says is very disturbing.

Matthias, you are misunderstanding him. His criterium is not money, but openess. As things stand right now, for anyone outside Nokia, Qt Creator is an opaque piece of software. Maybe that is a good thing for a quick and decisive start, maybe it is the right thing to do for the interests of Qt generally, maybe things are going to change very soon or most likely a bit of all that together. You will know, because you are an insider. Outsiders, like Derek and me however perceive things very differently : closed development whose fruits currently are not free (as in spirit) software.

Full disclosure : I am a professional programmer who uses Qt with a commercial license besides writing open source also based on Qt. Speaking with my commercial hat on, my team will surely evaluate Qt Creator when it has matured. But it also has to be said that an IDE is not exactly the development tool that I'd have liked Nokia to focus on. With my open source hat on, I think Derek reflects my sentiments exactly : Qt Creator is just not interesting right now...

I meant "outsider" as in "not a C++ programmer, not the target audience of a C++ IDE". We've made it pretty clear that the code will be available under a GPL compatible license. All his points about this being uninteresting closed source are mood. A valid question would have been: why didn't you release the source code right away? My answer to that: because we didn't want to wait any longer with showing the community (commercial and open source) what we work on.

I think you were conveniently dodging the point of openess in this case, it's not just the availability of source code at some point but also the history, decision makings and design thoughts involved in the making of it (not all of which can be garnered from the pure code). At another part of this page you talked about the "greater communities" of webkit, which incidentally is also more of an opaque project were the publically available date (source code, some public blogs and mailing lists) don't tell the whole picture. Mozilla also had and still to some degree has this issue. At its core it's a rather philosophical issue of documentation: as soon as you have company involved the people representing it or being paid by it don't get the free bonus of trust like people contributing out of free will get. Such companies usually have to build this trust for every of its products/projects, which they tend to dodge as unnecessary parts of community-making. Then when the flamings start the consequential exchange of "you have no idea how it works at our company" versus "of course not, you don't show us" appears like on this page.

Hm, which makes me wonder if you could motivate more developer to work for Qt Software if you were (even) more open about how things works at your place. From outside there's just some typical programmers' blogs as well as a well known head who tends to be bitchy not unlike the equally bitchy creator of Linux. Must be in the genes. =P

I posit that Trolltech, Qt and the profits of the sale to Nokia wouldn't exist if there wasn't a free desktop that used, promoted, generated a market for, and trained developers of Qt. A symbiotic relationship if there ever was one, and one for the history books.

I don't begrudge anyone their paycheque. I enjoy mine. I fully understand the challenges of managing a software business. From that standpoint, I fully understand why you did what you did.

That is exactly my point. If I have to worry if my investment of time and energy and money in developing using a platform depends on someone's business decisions and success, then the solution is obvious; Microsoft, with their billions in cash. I've learned, developed on and lost all that time and effort on two platforms already.

You see, KDE and much of free software, especially the desktop, doesn't make sense from a business standpoint. That is why it has broken the monopoly of Microsoft. Anyone who depended on cash flow or investment to challenge Microsoft just plain starved, and disappeared. Free software has different motivations, when pooled together equal more than the sum of it's parts.

As for the goodwill among KDE developers who work for Nokia, fine. What about the ones who write their paycheques?

Things have changed. Trolltech was sold to someone. It is very very common for large businesses to purchase smaller ones, run them awhile to see what benefit there can be, then drop them, subsume them, cherry pick the value and sell them. Where would that leave KDE?

What is the symbiosis, the dependence of Nokia on KDE? The way this was released shows me that the relationship is unclear at least. Is no one insulted that a beta is released without source? Does Nokia not need KDE anymore? Or is it just a low cost apprenticeship system?

I'll ignore the mood comment. Otherwise I may be convinced of ill intent.

You can't just dismiss him because he is 'not a C++ programmer', since I very much agree with him and mot definetly am part of your target audience. Someone else argued already the releasing source is not the same as being open. Even when that is said, I find your reason about having to wait really strange. In my experience it takes far more time to make a binary release than to pur a tarball out there. So if your consideration really was time-to-audience only, you'd just have opened your source repository the very first month this project started, no?

I could ask in what way does releasing a closed source beta contribute to free software.

My real question is how does it benefit Nokia?

It's developers who are going to be using it. Don't you think that they may be able and willing to provide bug reports with, god forbid, code?

The free software community is far more powerful and provides far more opportunity than any one company, institution or individual could create. Would IBM be as strong as they are without it? Google? Novell? Probably not.

They would be fools to fight against what has allowed them to thrive.

But fools exist. Nokia released a beta development tool without source code. Said tool designed for a library that is open source.

Having the sources open for anyone to contribute to isn't how all open source software works from the beginning. I think thats just fine. I'm thinking of Quassel which didn't go public for a year or two.

Good I am not owning any :-D But seriously, developing software in a company isn´t all that different from developing in the open source community, at least not in Qt Software. We do a bit more pair programming because we share offices, and we have more channels to actually figure out what the customers really want (and not only the vocal minority on community lists and channels). But in the end, non of us would write a single line of code if we didn´t believe this was the right thing to do. The job market for computer scientists is way too good to work for a bad company. Did I mention we have open positions?

I'm trying to learn Qt. Which IDE do you think will help me more to get a better understanding of Qt faster. I know, books are great, but I've always found that a good IDE helps me understand things faster.

I'd say for learning it is not that good to use an IDE. In my opinion the best way to learn is from a simple text editor. This way it may be a bit harder to write code but your brain will train better this way. In a sense it is similar to maths in school. Using calculator would be a lot easier but you use paper and pencil, the hard way, and in this way you learn better.

Well, I think you are both right and wrong in different aspects. Using a simple editor is of great help while you are learning to think in a certain way. But when you have a certain mindset, abstracting the "already acquired knowledge" away helps you focus on a more mature understanding of things.

Funnily this is already the fourth attempt to offer an IDE solution by the Trolls:

1. There was a simple C++ editor inside Designer for Qt 2 - dropped
2. QSA (QScript for Applications) was another IDE - dropped because QSA was replaced by QtScript
3. Qt plug-in for Eclipse - still in development and looking nice
4. Qt Creator - actually looking and working great :)

True. Too many C++ "purists" misunderstand what Qt is doing. It adds three macros, not keywords. And two of those macros expand to nothing. MOC sees those macros and generates what is in essence a publish/subscribe backend. All of the magic happens because of a QObject/QMetaObject hierarchy that implements reflection. There's nothing "illegal" about it.

But these macros are inhibiting the use of some C++ features that, in 2008, should be considered as elemntary parts of the language. Neither nested classes nor class templates can be QObjects.
I hope that at some point the extra features of Qt (I believe that it boils down to the signal/slot mechanism) can be implemented in a more C++-conforming way.

> I hope that at some point the extra features of Qt (I believe that it boils down to the signal/slot mechanism) can be implemented in a more C++-conforming way.

1. It does not boil down to signals/slots. Even without these, QObjects would have the nice introspection features that are for example used in Qt Designer to implement a generic property viewer, or which are absolutely necessary in QtDbus, QtScript, or the QXmlToQObjectConverter (or similar) that is coming soon.

2. About signals/slots implementation, you can actually do this with templates. ClanLib does that. But you have to implement the templates separately for each parameter count (unless you would like to fiddle around with the ... operator in C++), and you cannot get all the goodies that Qt's meta objects offer (to name two, signal transfer across threads or DBus message busses, and automatic argument omission, i.e. connect signal with 3 arguments to slot with 1 argument etc.).

Actually, one might be able to get these features without a separate precompiler, but that would require C++ to include Design By Contract at least.

Personally I think that Qt Creator will be usefull for Qt Beginners, Because when I brought 2 Qt Books in order to start developping and searched for an IDE, I tried Kdevelop. I must admit that it was really a pain, you had to configure a lot of things in order to get it work (Code completion, etc.), and I didn't found an easy tutorial like "Everything you need to setup in order to start Qt Programming". So maybe Kdevelop is only missing some good starter guides, but if I would start developping right now I would go with Qt Creator, which does not mean that after being a little more comfortable with Qt I won't change to Kdevelop.

What I'd like to know is, why on Earth did it take so long for the Trolls to figure out that they should have a focused IDE for Qt development, using Qt? We got Qt Designer which was sort of a halfway-house, and then people had to resort to other fuller IDEs for code development such as KDevelop, Eclipse or Visual Studio on Windows.