Well, almost. I do admit that there is a lot of stuff I do manually that a proper GUI could alleviate me of. Switching between headers and implementations, for instance. Every IDE I try, though, adds more inconvenience than convenience to my life. Maybe I'm just not giving them a fair shake .. and so every so often I try them again.
With Qt Creator having been recently announced, I decided to give it a whirl. In turn, that caused me to svn up and build KDevelop, too. Here are my thoughts and findings.
First, The Elephant In The Room
Before I get on to the interesting bits about the actual IDEs themselves, however, I'd like to address the proverbial elephant in the room: why the hell is Qt Software releasing an IDE? My perspective on that, which follows, is as a spectator to it all. I've known for a couple years that this was happening, respected the privacy of those involved but wasn't actually involved in any way with any of it. Honestly, I gave it a slim chance of ever seeing the light of day at all. ;)
Well, it was started back when the future of KDevelop was, shall we say, in a dubious state. That's an important bit of context to understand. Second, it was started as a bit of a skunkworks project, a "let's see what could be possible" thing. There really was a lot less intent at the start than one might expect. ;)
Today things are a bit different: KDevelop has momentum again. It seems to be a much more open project now, as well. It still has a lot of work needed to be done.
In the end, one can't always get 100% efficiency and there will be times people work on their own thing for less than purely logical reasons. We aren't vulcans, we are humans after all. There are some significant differences between Qt Creator and KDevelop, but really .. they are duplications in my opinion. That's unfortunate, but perhaps it's as close as we'll get to efficient. I hope that the two groups will find ways to share code and what not.
What really didn't help was how it was announced. The guys working on Qt Creator are not diplomats, they are engineers. (I stole that one, verbatim, from Mattias Ettrich himself, actually.) I tried to warn them that they needed to be really, really, really clear about licensing (something they have since corrected, so kudos for that) and the relationship to KDevelop.
I was very concerned it could cause unnecessary bickering and create schisms that are unnecessary. I hope that both the KDevelop hackers and the Qt Creator hackers can get along well (so far it seems so) and that the rest of us will let them live in peace in the meantime so they can all sort out whatever needs sorting out without pressure or incitement.
Ok, the elephant is now fully worked over, let's move to useful things!
Qt Creator: What I Loved
There are many things about Qt Creator that I struck me right off the bat in a positive way. I loved:
- how when you collapse a bit of code, it has a little "collapsed" marker that you can hover over to see the code that is collapsed in an overlay. Hover interfaces rock for those kinds of use cases.
- how the first thing you see when you start it up is "Get Started" if it's your first time running it or a project listing and session restore options if you've already used it for work. It's a great compromise between the insane menagerie that is the NetBeans opening page and the blank spaces of other IDEs that force you to instantly hit the menu system. Having the obvious start points front and center just waiting for you to click is perfect.
- how when a file was open, it listed all the methods in the file in the "smart bar" at the top. I don't really know what that thing at the top is called, but I'm going to call it the smart bar. It looks smart, and it works smart. .. ergo it's a smart bar. =P That same bar also shows open files in a drop down which I find much more sensible than tabs.
- the smart bar at the bottom of the window with it's quick open (typing "| Animator" to get the Plasma::Animator class is neat) and it's quick access buttons for things like open tasks.
- the side bar which gave me access to all the things I need: editing, debugging, building, help ... I never hit the menu bar except to see what was actually in there after actually using it for a while yesterday.
- the speed was impressive: things opened quickly, syntax highlighting was fast, fast, fast.
As you can see, it's all about the interface. The text editor itself was good though not mind blowing. The use of subtle animations in places was good and the subtle use of colour is something that katepart could learn from I think. I didn't like that I had to press a key combo for autocompletion; I like that to be automatic but I couldn't find a configuration option for that.
Sounds like I'm starting to complain a bit, which means I must be ready for the next bit:
Qt Creator: What I Hated
It wasn't all one big rose garden, however. It's not a complete product, so there are going to be rough edges. Here are the things that cut me and left me to bleed in this pre-release:
There is only support for Perforce. No subversion, no git, no cvs ... Huh-what? Ok, historically Qt Software uses Perforce internally, but there's been a big movement towards git as well. Qt Creator doesn't even support git though, and that's a big WTF.
There is only support for qmake. I don't use qmake and have only a handful of projects on disk that use it. CMake is a bare minimum here.
There is only a plain text editor for the build files, which is crazy. I totally get the idea that it should be possible to edit the text directly and agree with the Qt Creator guys that simple GUI wizard things are not enough for real build systems. That doesn't mean that there shouldn't be some basic GUI there though that covers 90% of the use cases (allowing it to remain simple and focussed) with a "edit manually" fallback to cover the other 10% of use cases that 90% of projects will need 2% of the time. (I love faux-tistics!)
Qt Creator looks great, but it goes overboard in its aggressive "style everything!" approach. It should keep its hands off my push buttons, for instance. The buttons in Qt Creator look like ass compared to the nice Oxygen buttons, and don't even get me started on my guess as to why they themed the menu bar but not the menus themselves. It really takes the shine off an otherwise gorgeous visual approach. As important as knowing what to theme is knowing what not to.
It would also be awesome if the icons used followed the xdg spec for those so we could theme them up, but that's not a "hate" more of a "wistfulness".
Back to the hating, the keyboard controls are either completely non-obvious or just completely missing. If I have to take my hands off the keyboard or press more than 2 keys to get to things I need, the word of the day becomes "FAIL". "Ctrl+K, 'l', space, #, enter" is exactly two too many key strokes to go to a line in the document, something I do all the time. "Ctrl+G, #, enter" is so much more sensible, and it could still use the uber-slick quick open bar, with Ctrl+G automating the "Ctrl+K, 'l', space" bit.
One might think Qt Creator is a bit mouse centric, but its not. In fact, the keyboard controls are actually better than the mouse interaction as can be seen by clicking in the bookmarks and stop points bar in the text editor. Try it and you'll see what I mean. ;)
Crashes are to be expected with a product at this point, but it amazes me that there isn't any autosave-while-editing feature. That makes crashes not only frustrating but deadly: I can't afford to lose work.
The lack of creating projects based on existing sources was also frustrating. Missing things like a class browser is also a bit mystifying.
These are all "little" things compared to the work that's been done. It's nearly usable today, but not quite. If they can push hard on this project for another 6 months or so I think it could be stellar, as none of the above point to problems with the actual underlying design of things. It's just not a completed product and as such has a bunch of holes. Fair enough, I can wait.
I could also contribute, but of course the source is still locked away. I don't get that, to be honest, and will by final entry in the "hate" column. The whole "we'll show you a binary for a while first" culture is really broken. Nobody in Qt Software will be surprised to hear me say that, but I'm tired of saying it quietly internally while watching the parade continue in public.
KDevelop: What I Loved
I gave KDevelop a spin as well. What's interesting is that what I hated about Qt Creator was mostly addressed in KDevelop: it's keyboard friendly, it has autocomplete, it blends and integrates with my desktop better, it supports all the revision control systems and build frameworks I might want, it has integration with valgrind, it imports existing projects nicely. It also supports tons of languages and has all these other plugins, too!
What really shone for me, though, was the ability to click on a symbol and get a summary window that is very visually attractive but more importantly contains insanely useful information. Things like the documentation from the header file for that method, what file it is defined in, what file it is declared in and where it is used in the project! Really, really nice.
When I discovered the Outline function which does that for every method in the current file I was sold on the idea.
I also liked the "Code / Debug" drop down in the toolbar that switches the tools between those two modes. Nice touch.
The fact that the text editor has tons of features and things like vi text mode is really cool as well.
KDevelop: What I Hated
There are a few areas that KDevelop really needs improvement from a simple user's perspective, and I'm sure neither of these things are news to the developers. Since I ragged on Qt Creator, though, it's only fair I do similarly with KDevelop. Apologies in advance.
There are a number of "not complete" features in KDevelop right now, such as the class browser which seems a bit random at times: why does it only show me the Plasma classes when it loads all of KDE base, though I selected only workspace/libs/plasma when importing the project? Like Qt Creator, KDevelop for KDE4 is not a completed product, however, so this is understandable.
The user interface, however, is in a general shambles. The menu system is something that I'm forced to interact with too often, and things are scattered everywhere it seems. Simply having useful shortcuts, such as a quick open bar as Qt Creator does would eliminate a lot of this pain.
There are moments of brilliance in the UI, like the code outliner and the class browser or how the UI never blocks even when it's churning through the code and parsing it out in the background.
Applying this elegance right across the UI would make KDevelop formidable. Instead I'm left wondering why every revision control system known to mankind is listed in the context menu when it's obvious that the project is using subversion, or where I should go to create a new class (I expected this in the class browser in the form of a "new" button or in the context menu even?).
As it stands, KDevelop has a great toolset and some really interesting features, but I can't bring myself to use it because of the UI. It's sort of the opposite situation compared to Qt Creator, isn't it? =)
The other thing that needs work in KDevelop right now is speed. Many things have gotten a lot faster in the last few months, and kudos on those accomplishments to the KDevelop team. However, when I opened libplasma as a project it imported all of kdebase. This not only took a rather long time (somewhat understandable as it's a good chunk of code), it didn't give me much visual feedback (again, the whole "UI elegance" thing) and then when it was finally up opening subdirectories in the Project explorer took 2-4 seconds. So there's room for improvement here in ways that will make the user experience nicer.
Oh, and the lack of autosave-as-you-edit in katepart is just as insane an omission as it is in Qt Creator.
Wrap Up
So what will I be using to code with this month? Vim and Konsole.
In six months it might be a different story. I might be using either Qt Creator or KDevelop; both have intense promise, and just need to show what they are capable with over the next year.
For the Qt Creator team I'd strongly suggest opening the code now rather than later and build a development community around it. The functionality holes in the app are huge and I don't think you'll be able to fill them all yourself. I know this isn't how other Qt Software tools get written, but maybe it's time for a shift there. Keep the focus on clarity and simplicity, but engage the audience to build bigger, better, faster and quicker.
For the KDevelop team, I'd strongly suggest casting an eye to the UI. It has plenty of features and seems to actually generally work. It's really time to think about how the user interacts with those things: make it dead easy to get to the most needed features, make it dead easy to navigate around the project and get rid of the UI cruft. It's a different kind of work compared to doing the crunchy yet great Declaration-Usage Chain stuff, but all your efforts put into DUChain may be for nothing if the UI doesn't speak to the user. It's a step up from where KDevelop3 was, but only a small step up so far. The outliner gives me hope, however, and it might be sensible to stop working on IDE features and force yourselves to shift to user interface.
I know that the above is not easy. If it was easy, it would already be done by this point. I know how hard it can be to expose your code and share with a global team (in the case of Qt Creator) or to step away from your main goal to focus on a temporary goal that will bring you users (in the case of KDevelop). I've faced both in the last year with Plasma (focusing on making a good traditional desktop experience causing a temporary sidelining of the 'revamp the user experience' during that cycle has been painful for me these last 5 months), and so you have my empathies.
You probably also have earned a "bitch at Plasma" card now. ;)
I am happy to see that we have so much movement on the devel tools side of things in the Qt/KDE world now though. It wasn't a happy place a couple years ago. In fact, it was a depressing grey place, but now the dawn is upon us. Let's see what full daylight looks like when Qt Creator and KDevelop make stable production releases.
Maybe I'll even say goodbye to vim at that point.

24 comments:
Nice post.
I am glad to see innovation in the devel tools area.
And KDevelop is certainly not alone with UI problems .. a lot of open source GUI tools are done by engineers and they are mostly no diplomats and no UI-designers ..
Maybe something like QEdje for all of KDE would be nice. If I understood it correctly it would split the UI-work from the coding. That way it would be easier to get UI-people to contribute.
Aaron typesit "why the hell is Qt Software releasing an IDE?"
The goal of Qt Software (and of Trolltech before them), was to get lots of people developing with Qt. The more people using it, the more licenses and support services sold (even into the free-as-in-beer doorway). Anything that nudges developers into the Qt doorway is good. Qt Creator is one of these. If it manages to lure over enough new developers then the cost of development will have been worth it.
There are developers out there who aren't going to use Eclipse or [gasp] KDevelop. But some of them may consider using Qt Creator. It's smaller, much easier to install, and doesn't have a heavy interface. It's not for everyone, but it may be for some.
I do admit that there is a lot of stuff I do manually that a proper GUI could alleviate me of. Switching between headers and implementations, for instance.
http://www.vim.org/scripts/script.php?script_id=31
Aaron typesit "(focusing on making a good traditional desktop experience causing a temporary sidelining of the 'revamp the user experience' during that cycle has been painful for me these last 5 months)"
And I for one thank you for that work.
Just FYI, Quickopen was already an essential part in KDevelop3, and in KDevelop4 it is even improved. Looks clear where the Qt Creator took that Idea from. ;-)
But anyway, I'll be doing some more blog-posts in near future to increase awareness of such features.
I would love to see Yzis integrated into KDevelop. See http://www.yzis.org/
Have you ever tried jVi plugin of NetBeans? As a Vimmer I loved it a lot. You feel at home (Vim) while benefiting from IDE features of NetBeans such as project management and smart auto-complete. See http://jvi.sf.net/
If I can ask, do you write all your gui code from scratch and let QT handle the layout? I've been researching PyQt4 for my first project that involves a simple GUI and sorting through all the documentation and how-to's have made my head hurt. I wish there was a way to get an Instructor lol to help out with the early noob questions and point me in the right directions. This would be a problem if I was still 14 and had all the time in the world but having a real job and responsibilities I have to manage my time now. This is one of those goals Ive had for a while and it keeps beating me. Write a gui application and learn some coding skills for work.
P.S.
Could anyone recommend a good set of tools for using PyQt4 in Windows Server 2008? Right now I use a virtual install of Opensuse11 with python2.6 PyQt4 and Eric4 :/
Vim+Konsole is your main development platform, Vim+Yakuake is mine.
Qt has the anti-free-software trend and I don't think we can rely upon Qt-creater to be open-source-software (Remember how many years does it take to turn Qt into GPL? ).
If Kdevelop is better I'll switch from vim+yakuake to Kdevelop, I will never use Qt-creater because it is only Qt-related. The KDE is a well-integrated desktop environment and the full-integration with KDE is one of the key feature of any KDE application we may want to develop using Kdevelop.
Could we happily develop a KDE application with Qt creator? I don't think so.
@pansz that's a bunch of silliness. I wish people would judge software as software, not a lifestyle choice.
@aseigo "There is only a plain text editor for the build files, which is crazy. I totally get the idea that it should be possible to edit the text directly and agree with the Qt Creator guys that simple GUI wizard things are not enough for real build systems."
My only experience with the GUI wizard thing for build system was some KDevelop version and it really didn't work very well at all for even basic stuff. I mean having computer-controlled-build-files is an easier task then having the computer write the whole program. No doubt. But its still seems complicated enough that a computer can only ever do a half-ass job of it. I don't like half-assed features.
So to me this whole feature is a "feature table check box" thing. You don't even really appear to want an IDE, so I doubt you have any real desire for this feature anyways. Its just something that people feel the need to talk about in reviews. :D
On Qt Creator & KDevelop: I'm currently using Kate, I look forward one or both of these tools to really shine. I actually would like an IDE, especially for C++ parsing, integrated documentation, refactoring and code completion. When doing Java programming for school, I found Eclipse to be the best "feature" of Java. Looking forward to an equivalent for C++.
Hi Aaron, nice post really. Actually thanks for pointing out the Ui problems you see with KDevelop, I know that at least I don't always see these problems.
Two notes on the buildsystem parts though:
- GUI's for buildsystem plain don't work. We might be able to pull of "add files/directories" and removal via context menu, but other than that the average buildsystem - even qmake - is too complex to have these things available
- the other thing is opening a subdir inside a CMake project, unfortunately CMake simply doesn't allow to do that without parsing all of the projects CMake files, so we have to do the same unfortunately. That said we still have one ass up our sleeves to improve parsing performance of CMake files, but that might have to wait until 4.1
pansz: "Qt has the anti-free-software trend"
Do I need to remind you that Qt is licensed under the GPL?
@zwabel so? FYI I designed, wrote and (also) named the original version of Quick Open in gideon/kdev3 :-)
Heh, once upon a time I used Eclipse for KDE related development (C++ - never ever used it for Java though), mainly because of the Subversion plugin.
And then I realised that I am using a bloated, slow IDE which has an underpowered editor compared to Vim (which I got quite accustomed to for a quite a few years now) only for the Subversion integration.
So, the next step was to make an IDE out of VIM - ctags and intellisense, project plugin, svn, header <-> source switching, code navigator (smart bar from QtCreator)... everything works well while it is still a lean mean editor.
The only thing I missed was a normal file browsing dialogue (the KDE's one) so it got fixed too using some vim.python scripting and kdialog.
The only IDE that works for me now is NetBeans since I found a fantastic Vim-like editor that integrates into it :)
Thank you for a nice overview, but I would be curios to give a try to Eclipse IDE and to see your opinions.
@aaron: doesn't the ctrl+l shortcut -- in qt creator -- do the same as the ctrl+k + l?
@Roberto: I just wrote this because it looked in the post like it was a Qt Creator exclusive feature, which it isn't, no matter who has invented it ;)
I don't know what on Earth took the Trolls so long to realise they needed a Qt IDE. They should have done it years ago, and it would have saved a certain amount of divergence regarding the usage and development of other IDEs with Qt such as KDevelop, Eclipse and Visual Studio on Windows. Certainly, I think both Qt Creator in whatever form it would have been in, and KDevelop likewise, would have been much further on than they are right now.
I don't really know why Matthias Ettrich is whining on another blog post about some of the reaction. They are at least partially responsible by not providing a clear development direction for their software years ago.
@braindepth: making ui files with qt designer and loading those in your code is often far easier :) vim+konsole+designer is my IDE ;)
@pansz: please don't make up stories. matthias himself said he wants this IDE to be open source.
@aseigo: switching to/from header files? um, if you're using hte kdelibs style helper it's trivial. ,h for header and ,p for private (except the private thing prolly won't work for the ones you put in their own directory)
I hope you have, but have to ask anyway, Have you sent this to the Qt Creator team or the Qt Creator mailing list? They're super open to criticism that helps make it a better product. (Should have seen the heat laid on it on the internal dev lists).
Good post, Aaron!
For a *beautifully-done*, small, clean, simple and easy-to-use IDE, Geany is imo unmatched -
http://www.geany.org
Fwiw, my Geany setup has far fewer buttons on it, and they are large ones, so the screenshots at the above site don't really show how nice it is.
Geany takes the approach that once you get more than about six buttons on the screen, things get cluttered really, really quickly.
Anyway, just thought I'd mention it... ;)
I'd recommend CodeBlocks instead of any of these products. Provided you are not interested in interface building (though CodeBlocks supports it through wxWidgets), I think it is a very good and mature choice.
@Baltasar: Unfortunately for you, you have to expect that the audience on Planet KDE is interested in UI building, and certainly not with wxWidgets. ;-)
@aaron: QtCreator and KDevelop have two different targets: QtCreator targets Qt developers on many platforms, KDevelop targets several major languages on Linux (ok and maybe *BSD), It is not about developing for KDE, or java, or C, nor pascal, fortran, php or perl. They are not duplications. If anything, it is a duplication of QDevelop. If you think they are duplications, so is.. gnome/kde, [x]emacs/vim, etc. and besides, whats wrong with choice?
As well, Qt Creator is in 'alpha' and 'beta' stage, and as such features such as class browser are in early stage. That goes for git support as well, I believe.
It does have support for 'creating projects from already existing ones', you just need to use a .pro file, like every other Qt project.
@pansz: What "anti-free-software trend" is that? If anything, it has the 'free software trend'.
So, 6 months are over - miss your follow-up post... ;)
I'm currently at the same point of choosing an IDE. And I'm still undecided. KDevelop is awsome, but still a bit buggy and crashed some times already, and it feels a bit slow.
I just installed Qt-Creator and give it a try...
Post a Comment