DevHeads.net

Minutes from the KF6 BoF session at Akademy

We discussed the topic of KF6, to have some sort of common direction.
When, what, how, etc.

Raw notes at <a href="https://notes.kde.org/p/akademy2019-kf6-notes" title="https://notes.kde.org/p/akademy2019-kf6-notes">https://notes.kde.org/p/akademy2019-kf6-notes</a>, but let me try to
make this more readable here.

* We created a phabricator board to manage all the tasks involved in being
able to have a Qt6-based KF6 when the time comes:
<a href="https://phabricator.kde.org/project/board/310/" title="https://phabricator.kde.org/project/board/310/">https://phabricator.kde.org/project/board/310/</a>

* The idea of a KF6-specific sprint was floated around, in December or later,
if needed to keep the momentum going. Right now a lot is happening, but then
people will go back to their daily lives.... Anyone up for organizing such a
sprint? Discuss in <a href="https://phabricator.kde.org/T11535" title="https://phabricator.kde.org/T11535">https://phabricator.kde.org/T11535</a>

* The main tasks that were identified were:

** Porting KF5 away from deprecated methods in Qt (which is a moving target,
but we're starting with what is currently deprecated, and then we'll try to
keep up). It's too early to look at Qt6, we'll do that (and create KF6
branches) once there's an alpha release of Qt6.

** Porting Applications/Plasma/Extragear/Calligra away from deprecated classes
and deprecated frameworks that we would like to remove (kdelibs4support,
khtml, kjsembed, kross, possibly more depending on further investigation)
This means we won't just remove stuff and break apps, the rule will be to port
apps first and then remove the stuff. Note that playground isn't included, so
if you have a stable app in playground, it's time to move it to one of the
above areas. React in <a href="https://phabricator.kde.org/T11563" title="https://phabricator.kde.org/T11563">https://phabricator.kde.org/T11563</a> to discuss the set of
modules covered by policy, see the board for the discussion on the individual
candidates for removal (there's one for each framework listed above).

** We will decide later whether a KF5Support library will be useful/needed.

There are many cleanup tasks in the board, but some big ones are:

** Split up kdeclarative and move its code to relevant Frameworks, please
contribute in T11536

** Possibly kill Plasma components in favour of QtQuickControls2 + kirigami,
task T11558. This probably needs to be discussed between KDE and Qt people,
possibly at QtCon or specific sprint.

** Redesign frameworks where API and implementation are too tied together (ex:
KWallet). T11556. Help welcome.

** We need to think about what we are missing in Qt in order to solve issues
in Frameworks. Much like we did around Qt 5.0 times, contributing to Qt the
things that help untangle dependencies between frameworks, especially.
A big one in that category would be a QWidget-independent QAction (T11555).

** Remove unneeded dependencies on QWidget e.g. to set parent windows or
display errors (T11547), I took care of KWindowSystem recently and I plan to
redesign KRun, at least, but there are probably more.

** We should mark code that needs change with "// TODO KF6: ..." already now
(on things that are clearly defined and doable, not pie-in-the-sky wishes).
We'll really need to go through those; there were quite some leftovers at KF5
time...

** We need to think about which policies/design guidelines we want to change
for frameworks, such as how to handle bindings (T11557).

The question came up whether we'll be able to use C++ modern features like
std::optional in KF6? The answer is yes, Qt6 will require C++17 so we can do
the same.

This is all mainly a heads up. If you can think of other things that need to
be done before Qt6 and/or KF6 is out, add tasks to the board.

Some work (investigating and porting) has started and is on-going but we can
definitely use many more hands on board for all of those tasks. Pick a task,
drag it to the "In progress" column, and start helping. Note: when a task is
done, don't close it (that would make it disappear from the board), just drag
it to the Done column. It's motivating to see a growing list of done tasks.

Let's set sail for a great KF6! All on board :-)