Here’s another small update on the progress around KDE Frameworks 6, a lot has happened again since last month’s post. Only a few modules aren’t building yet, and the vast majority of building modules now also has passing unit tests.

Building against Qt6

Only three frameworks don’t build out of the box yet.

  • KTextEditor, due to QTextStream::setCodec gone and needing a manual replacement, as well as due to issues with the first attempt of porting from QDesktopWidget to QScreen for completion popup placement.
  • Plasma Frameworks, due to changes in the low-level X11 and OpenGL APIs of Qt and a few remaining uses of deprecated KPluginInfo API.
  • KQuickCharts, due to needing to be ported to QtShaderTools.

Note that this is only about compilation, this doesn’t automatically mean things are also expected to run yet, especially for QML code that isn’t the case yet.

Task T15127 tracks the progress of this.

Unit tests

With things building the next step is to make all unit tests pass (or at least behave identical to a Qt5 build). Numerous fixes have gone in over the past weeks for this, and we are down to just four modules that have additional failures compared to KF5, and two more with at this point still expected QML test failures (due to QML code not being portable prior to branching).

There are some recurring patterns we might also hit again in Plasma or application code:

  • QHash is no longer a node-based container, which means its iterators can more easily become invalid.
  • QVariant::isNull is now just a “shallow” check, ie. it no longer checks whether the payload is a null value of the corresponding type, but only checks whether there is a payload at all.
  • Qt container sizes are no longer int but qsizetype, which is a 64 bit value on 64 bit systems. While mostly a compile-time problem, this can also have implications at runtime, e.g. when serializing container sizes into a QDataStream.

Task T15232 tracks the progress on this.

Continuous integration

Linux/Qt6 continuous integration has meanwhile also been set up for some Plasma modules. Plasma modules include important parts of the platform integration, such as the Breeze style or the Qt platform plugin that brings you KIO file dialogs, which are relevant to actually use a KF6 application eventually.

Plasma 6 Sprint

For the bigger picture Qt6/KF6 porting plans for Plasma there’s a sprint being planned, see this mailing list thread.

For anyone working on KF6 this is probably worth attending, as there’s plenty of overlap and inter-dependencies in those efforts.


Obviously all of the above is the result of a big team effort, and you can be part of that!

The KF6 workboard is the central place for coordinating the work related to Frameworks 6. There’s also a weekly one hour call on Tuesday 17:00 CET. It’s also worth joining the kde-frameworks-devel mailing list and the #kde-devel channel on Matrix.