[Qt-creator] Some thoughts about 2.5

tobias.hunger at nokia.com tobias.hunger at nokia.com
Thu May 31 10:03:31 CEST 2012

Hi Gero!

The "best build system" is a hottly debated topic in the C/C++ world:-) There are
lots of competing ways to do things, each with their benefits and set of (mis-)features.
It is way less controversial in the Java world and that makes it easier to get a
hold on the problem there.

>From my experience developers working on any project use whichever tool they
prefer to work with. This is how 100% of all open source projects work and about
95% of "professional" software development, even when management thinks all
their developers are using the same standard setup:-) You won't believe how many
man hours I've seen wasted on making visual studio projects build in
whatever-strikes-the-fancy (and I was guilty of that myself on more than one

So I think a IDE should accomodate developers using whatever way they prefer to
work. This means that the IDE needs to _not_ change the build system, but use it
instead. The build system usually is there before a project (in the IDE sense) exists.
This seems to be your setup, too, if I understood your mails correctly.

> Respect to the build-functionality, I would categorize IDEs in 3 levels like
> this:
> 1.) entry level:
> an IDE can only manage projects created by itself, no import for existing
> projects created by other IDEs
> 2.) mid level:
> an IDE can manage projects created by itself and offers an import possibility,
> where projects created by other IDEs will be read and translated to the build
> system used by the IDE - or in other words: this IDE can read multiple build-
> systems, but write-support is limited.
> 3.) professional level:
> this kind of IDE can manage any kind of project - no matter, which IDE created
> the project, or whether it has been created manually. It has read and write
> support for a lot of build-systems and is able to continue using the build-
> system of the imported project.

Entry level IDEs are completely useless in such a setup since it stops people from
using their preferred tools. Developers will waste lots of time to rewrite the existing
build system to work with the IDE.

Mid level IDEs suck almost as hard: A developer imports a project, converting it into
a IDE specific format. He ends up on an island where he alone can add files and
stuff, with each commit of his commit breaking the build for everybody else. Alternatively
the IDE user can update the original build system and reimport the project all the time,
most likely loosing quite a few of his settings in the process.

Professional level IDEs are impossible: It is just not possible for a program to
parse all possible build scripts (all with their own languages, many of them touring
complete) out there.

So I argue that the propossed categories are either useless or impossible...
which makes this not a good system to classify programms with:-)

I would suggest using a category system like this instead, based on how well
a IDE can work with an existing build system:

Level 0:
The IDE can be informed of all necessary information on a project by IDE specific
ways. It does not look at the actual build system at all.

Level 1:
A IDE can extract all the required data to set up a project properly from one type
of build system (cmake, qmake, whatever).

Level 2:
Level 1 + the IDE can actually update that build system when files are added, etc.

Level 3:
Level 2 + support at level 1 or 2 for additional build systems.

> So according to this levels, I consider QtCreator a good (if not already the
> best) entry-level IDE and I wanted to send some triggers so that QtCreator
> could raise one level and become a mid-level IDE.

According to my classification Creator's qmake support is in Level 2 (and still could
be improved, no doubt about that), Autotools and CMake are at Level 1 (again with
room for improvement). The "generic project" support we have is of course Level 0.

This places Creator firmly as a Level 3 IDE:-).

Anyway: The interesting question is how can we make creator better, not how to
classify IDEs. You did raise a couple of good points. Unfortunately they seem
to get mentioned somewhere in more generic mailing list threads where they are
bound to get lost. Maybe you could report those _specific_ issues you ran into to
our bug tracker at https://bugreports.qt-project.org/ ? The more generic discussion
is fine here.

PS: Thanks for taking the time to press your issues!

Best Regards,

Tobias Hunger
Software Engineer
Nokia, Qt Development Frameworks

Nokia gate5 GmbH
Firmensitz: Invalidenstr. 117, 10115 Berlin, Germany
Registergericht: Amtsgericht Charlottenburg, Berlin: HRB 106443 B
Umsatzsteueridentifikationsnummer: DE 812 845 193
Geschäftsführer: Dr. Michael Halbherr, Karim Tähtivuori

More information about the Qt-creator mailing list