How KDE 4 is blocking Qt 4.5

But in a good way :-)

I remember back in 2006, when I was a brand, new engineer at then-Trolltech AS, I was the only one who still built KDE 3 from sources. Everyone was using distribution-prepared packages: mostly Kubuntu and SuSE, but also source distros like Gentoo, as well as FreeBSD (ports tree). And I remember this fact for one simple reason: being able to run many Qt applications (KDE) with the Qt you're developing makes you find your issues a lot sooner. In other words, the chances for ugly issues slipping through releases was much less.

But 2006 means we were working on Qt 4.2 already, while KDE hadn't released 4.0 yet. We had only Qt Designer, Assistant, Linguist, and one other internal application to test with.

Now, the situation is different. Many of the engineers are running KDE 4. Not only that, a few brave souls are actually running -- if not compiling -- KDE 4 with the current Qt 4.5 from our Git repository. That's why I say KDE 4 is blocking the release of Qt 4.5. I won't say it is the only reason, but it's a very important one.

Three weeks ago, I did a full build of KDE 4 from trunk (to-be-4.2) with the standard Qt 4.4 sources. Then I launched it with Qt 4.5. For one thing, I haven't detected a single issue related to symbols, so there don't seem to be any binary- or source-compatibility issues.

However, even though applications started, they were unusable, if they didn't crash. Three weeks ago, this was the situation of a KDE 4 desktop with Qt 4.5 (with desktop effects enabled):

  • the Plasma panel was 100% transparent
  • moving the mouse over the Panel taskbar had no on-mouse-over effects; worse, the clicks went through the taskbar to the panel, so you couldn't activate windows with it
  • for a few days, Plasma crashed on startup
  • Plasma looked completely horrible with the raster paint engine
  • Kontact crashed on startup
  • the slideshow screensaver (kslideshow.kss) showed inside a window, occupying half of my left screen only (the rest of the desktop was visible and updating)
  • going to an https website in Konqueror then going to the next would show the wrong certificate
  • Akregator hit an assertion failure and crashed
  • opening any directory with Dolphin would show everything unsorted, until you changed the sort order
  • krunner crashed when you typed "kat" (no e)
  • some threaded applications (like krunner) crashed randomly
  • ...

I must point out that the same KDE 4 build worked fine with Qt 4.4.

Suffice to say that a release of Qt 4.5 with those issues would be a Brown Paper Bag release.

So we looked at our plans for Qt 4.5 beta and decided: among other criteria, we would make sure KDE 4 was running smoothly on X11 with whatever we released. (Other criteria included Qt Creator running smoothly on all our main platforms, all of our Tier 1 and 2 platforms compiling, etc.)

We then assigned Olivier and Alexis to spearhead the project that would ensure those issues were solved before the release. Of course they couldn't do everything -- for example, the screensaver issue required getting the Graphics Team to add a new flag to Qt 4.5. And some of the issues weren't Qt issues, but bugs in the KDE code that just happened to get away with it in 4.4.

However, most of the issues I listed above were actual Qt regressions.

And I'm happy to announce that, today, the last visible issue we could see has been fixed! More than that, Qt 4.5 also fixes some issues that I still see in my laptop (which runs 4.4), like kontact randomly crashing when I click a folder, some KIO networking issues, or a race condition in QtDBus code.

By no means we're done (krunner crashed on me today in QtDBus code), but at least it looks like we're in good shape for a beta release sometime soon.

Stay tuned!

Blog Topics: