A few days before Christmas we released the beta version of Qt Creator and judging from the feedback we received so far it seems that our developers did a very good job.
One of the most important things introduced with the beta was the opening of our source code repository. This gives users and interested developers the possibility to compile Qt Creator themselves, closely follow up the development process and provide patches or even larger code contributions.
Unfortunately, most of the Qt Creator developers are on their well deserved Christmas holidays right now, meaning that most of your contributions and emails won’t be processed until early next week. But once they are back at the office they will take care of your feedback immediately - promised!
Until then keep playing around with Qt Creator, join the #qt-creator channel at irc.freenode.org and help other users on the qt-creator mailing list.
I was searching the Internet now for the phrase “Greek present”, but I couldn’t find it in English. It appears to be a Portuguese expression only: “presente de grego” means a present you really don’t want. The reference is to one famous present the Greek gave to the Trojans a couple thousand years ago.
The reason this came to my mind today was we’re giving you two early Christmas presents today, both related to the Greek alphabet. And unlike the Ancient Greek, we think you’re going to like these presents . The first one, Thorbjørn blogged about earlier today. The second, it’s my honour to present once again: Qt 4.5 Beta is released!
That’s two betas in one day. You’d think that we would have planned this carefully to coincide and to be close to the holidays. I guess that, had we planned that in the first place, we wouldn’t have made it. But it’s all for the better that it worked out fine
You all know the main features we added for Qt 4.5, so I won’t dwell on them here. But you can see that the addition of a new port (to Mac Cocoa) is our focus for the moment (Watch the Widget Pimp^W^W^WTrenton’s video on Youtube if you can’t see in our webpage)
I’d like to emphasise one point that Thorbjørn didn’t emphasise enough: Qt Creator is now Open Source. We had planned on doing that the whole time, but the need to publish the alpha trumped getting organised. And more than that: Qt Creator’s source code repository is available for everyone to see. Unlike the existing Qt snapshots, this is the real thing and is the same source code that our developers are using. No tricks!
And it couldn’t be any different: Qt Creator beta uses Qt 4.5 beta. So you should download the latest and greatest Qt too.
The Qt 4.5 beta is a great improvement to the technical preview we released almost two months ago. Whereas that was a package just after feature freeze, containing whatever we had at the time, with minimal QA, the beta is about a more polished product. We aren’t release quality yet, but we’re that much closer.
Between the TP and the Beta, we’ve done a lot of bug-fixing, regression testing and general polishing. We’ve updated the documentation and added new examples and demos too (I highly recommend the new Boxes demonstration, even though that’s very CPU and GPU intensive). Like I mentioned in my last blog, we’ve taken a lot of care to fix both glaring and subtle issues that still plagued Qt. I’ve been running KDE 4.2 beta using Qt 4.5 beta for the past weeks, without major issues, and, like I said above, the Qt Creator beta is also using Qt 4.5 beta.
That says a lot. In fact, when we started discussing with other groups inside Nokia what they call “alpha” and “beta”, it became quite apparent that our definitions are one step ahead of theirs. What they call “beta”, we’d call “alpha” or “technical preview” (feature-complete, documented, unit-tested, minimal integration testing and manual QA). For us, “beta” has to pass a series of baseline scenarios, compile in all of our supported platforms, plus it needs a month or two of QA.
That being said, you’ll still probably find issues with Qt 4.5 beta. If you do, please let us know: send email to the qt4-preview-feedback@trolltech.com mailing list (see the announcement for subscription instructions).
This release marks an important milestone between the alpha release and the road to 1.0. Not just because of all the new features we added since the alpha and the many bugs we fixed, but mainly because Qt Creator is now released as free software. Additionally, from now on we’ll be doing development completely in the open. This will allow other developers to not only compile Qt Creator themselves, but also to have full access to all the changes we’re making as well as being able to feed changes back in.
The feedback on the alpha release and subsequent daily snapshots releases has been very positive, and also very helpful. We hope that opening up the development of Qt Creator will allow communication with outside developers to become even better.
One of my favourite new features in the beta is the navigation history (Alt+Left and Alt+Right), which in combination with the existing ‘follow symbol under cursor’ (F2) allows you to really navigate your code efficiently. In addition, F2 has been enhanced to also jump to macro definitions and include files. Another nice thing about the beta is that configuring the different kinds of text editors has been made easier by applying the same settings to all of them. However, because this is still a beta as well as being built against the development version of Qt 4.5, there are some known issues. On some Linux window managers for example, Qt Creator won’t redraw itself after being unminimized. If you hit this problem, just resize the window to make it draw itself, or try a more recent Qt Creator snapshot of course.
If you want to compile Qt Creator yourself or even start hacking on it, clone the git repository on labs. Note that you will need a recent version of Qt 4.5 to compile it. One way to get this is via the git snapshots.
If you want to contribute to Qt Creator, don’t forget to read the doc/coding-style.qdoc document in the repository. It not only describes our coding style but also explains how to go about submitting patches. Note that none of the exposed interfaces are set in stone. Stabilizing and documenting those interfaces is still an ongoing process.
So what are you still waiting for? Go try Qt Creator beta for yourself!
Writing documentation from a dungeon with two machines and a stuffed fish for company is not as bad as it seems. OK. I lied about the dungeon, but the stuffed fish is real!
Early 2007, I somehow landed in Oslo from South East Asia, on the development floor of Trolltech, surrounded by so many men (a much coveted spot among my female friends mind you) as a Technical Writer for Qt. It’s a middle man job, sitting between the developers and the users to ensure that code written is clearly documented so everyone knows how to use Qt.
That’s the official job description. The unofficial one is a lot more fun - chasing after developers who make our documentation tool unhappy (it spurts out a long list of errors) and bribing them to fix the errors. Some days I bribe them with rare gems like TimTams or home baked muffins. Other days I just stand outside of their office with a miserable expression. Do I nag them? Never! I just remind them
So what does the job entail? When I am not playing Bomberman on the Wii, I spend a significant amount of time documenting classes. The old classes require maintenance and the new ones require a fleshed out Detailed Description with lots of style and consistency checking.
I also write examples on how to use Qt, such as the AddressBook, TextFinder, Previewer, and FormExtractor. Last winter, between brooding over the lack of sunlight and worrying about losing my fingers to the cold, I wrote the Address Book tutorial. Early this year, it was the Qt Quarterly article on QtXmlPatterns. Qt Quarterly is heaps of fun to work on because it gives me an opportunity to drop the formal writing style and write in a more relaxed manner. Also, nothing beats the satisfaction of seeing your name on printed material. Recently, I spent the end of Summer in our uber cool Berlin office helping to document Qt Creator.
Documentation is an iterative process. Hence, all those e-mails to support reporting typos and requesting clarification are very much appreciated from this end because it is very easy to overlook typos and confusing paragraphs. Also, I am subscribed to qt-interest, qt-jambi-interest and qt-creator so if you have comments on our documentation, you can also send them that way.
A quick documentation tip before I sign off: Simplicity
Since Qt is used by developers all over the world, we make a consistent effort to keep the documentation straight-forward and to the point; we also have to keep it simple. A quick example would be:
This signal is emitted when the first (initial) layout of the frame has happened. This is the earliest time something can be shown on the screen.
If we reword it, to improve clarity:
This signal is emitted when the frame is laid out for the first time. This is the first time you will see contents displayed on the frame.
Putting a new idea, or a preview of a new project, into the open is always risky. You know it’s not ready, you know it has flaws. You see the potential, but you don’t know if others will also see it. You know you must quickly respond to feedback, but if things go very well you might not have the capacity of doing that.
Presenting Qt Creator so far has been overwhelming. The video has been seen over 17.000 times, and the download figures are in line with this. The amount of good feedback on the mailing list is more than we can handle - and all that without any real marketing activities. To sum it up: There’s definitely interest out there in a Qt-based IDE that dares the balancing act between the ease of a real man’s text-editor and the power of a modern integrated development environment. Most reviewers also understand that this is a preview and does not show the final feature set.
There is one important thing to know about Creator: in many ways it is really just connecting the dots, a combination of pieces we already had: an editor (QPlaintextEdit), a C++ parser (jambi, qt3to4), a pro-file reader (from linguist), a visual designer (Qt Designer), and the qhelp doc integration that is part of Qt. And don’t forget Qt itself. So when people ask us: why did you develop a new cross-platform IDE from scratch we can honestly answer: we didn’t.
During my DevDays presentation in Munich I joked: Please like Qt Creator, otherwise we will be doomed to develop Eclipse plugins in eternity. As with most jokes, there’s some truth to it. First of all, we will of course continue to develop Eclipse plugins, but secondly, we need a good reception. Only when it becomes obvious that Qt Creator is going to make a difference in developing software with Qt, we can turn this engineering-driven creative Friday project into an official and well-supported free software project. To me this means project plans and tasks on openly accessible wikis, an open repository as well as external contributors.
Things so far look very good.
The negative reception in the free software community was as expected. Never look a gift horse in the mouth does not apply here. It happens each time a new project is announced, and it did happen each time I founded or co-founded anything:
I don’t need it, you should rather work on something that I need.
You suffer from NotInventedHere-syndrome, you should have contributed to [some project] instead.
You will not succeed because [lame arguments go here].
You suck.
Actually I did announce stuff where I only got feedback #4, my KDE port of the gimp was one of those, so compared to that, Creator got a fair and friendly reception.
Funny enough the worst feedback came from the KDE community. “Funny” because they say exactly the same things that were said against creating KDE in the first place. And before that the same things were said against creating Qt. The company the original version of Qt was written for even rejected it in favor of Motif, back then the Eclipse among the Unix toolkits. Needless to say that many years later they bought Qt licenses.
Do you want to know what I think why Gnome currently has the lead despite inferior technology? License? Crap. They succeeded because they quickly learned that a) the focus must be on the users, and b) they welcomed corporate contributions with open arms. Both are obviously related, if your focus is “what is best for the users” you welcome new contributors easier than if your focus is “what’s in it for me, how do I get most users for my code”.
Anyway, as long as we have more than 100 users for every guy bitching against it, we have all the reason in the world to be happy. And we are.
When I started at Trolltech about two years ago, I never imaged that I would end up writing a C++ IDE. I mean, I knew that I would develop Qt tools, since that is one of the two main development areas done in Berlin (the other one is Qt/WinCE), but that meant things like Designer, Assistant, Linguist or the VS/Eclipse integrations at the time.
On the other hand, an IDE could well be called the top of all development tools, so all in all it’s a logic consequence
It’s cross-platform. Hell, if it wasn’t, we couldn’t use it ourselves!
Slim and fast. One of the questions leading to QtCreator was “What does a text editor need to become an IDE?” Well, you don’t want your text editor to take a minute to come up .
Doesn’t invent yet another build system. Instead it’s directly working on pro-files. It’s open for extension with other build systems as well.
Talking about editors, QtCreator has a very powerful C++ editor: Incremental search highlighting all occurrences.
Code completion and of course Syntax highlighting, Auto-indentation, (Un-)Commenting code, Code folding, Bookmarks, …
Inline error markers while you type warning you of many common mistakes that otherwise lead to compile errors. (Ever thought “ow, man, another edit-compile cycle just because I forgot that !*%$ semicolon”?)
Quick Navigation between your files, switch between header and source file, jump to symbol definitions under your cursor, jump to named symbols from your project and all referenced projects.
Debugger frontend that let’s you easily set breakpoints, step through your code, and examine variables, showing you common Qt types in a friendly way (QLists, QVariants, QFiles, QMaps, …). Currently supporting gdb.
Context help for the symbol under the cursor, right beside your code, integrating Assistant/QtHelpSystem in the most comfortable way.
And lots of other things I forgot to mention here!