Hi,

as an update for where we are right now:

On 12/6/23 21:51, Nicolas Fella wrote:
Hi,

the transition of many apps to Qt6 provides some challenges for apps
producing and consuming KParts.

KParts are implemented as Qt plugins and as such are specific to the Qt
version they are built against. In other words, a KPart built against
Qt5 cannot be loaded by an app using Qt6 and vice versa.

Since some parts are used by a variety of apps this is causing problems.
When we last discussed this problem the consensus was "Port as many
things as possible and see where we are at then". Now we are approaching
a point where we need to take stock and decide what to do.

 There's several cases to consider:

1) Applications using their own parts without external users. This
happens in PIM where e.g. kmailpart is only used by KMail and Kontact.
No problem here

2) Applications loading specific parts from other applications. These
are easy enough to search for. We have the following cases:

konsolepart (Konsole master is Qt6 only) is used by:

- kdevelop (no Qt6 port)

Qt6 port is in progress, but not finished:
https://invent.kde.org/kdevelop/kdevelop/-/merge_requests/522


- konversation (MR with Qt6 port available)

Meanwhile ported to Qt6


- kile (no Qt6 port)

There is a MR to port:
https://invent.kde.org/office/kile/-/merge_requests/60


- Dolphin (already using Qt6)

- Kate (already using Qt6)

- Okteta (Q6 port available)

Unchanged as far as I can tell


- Yakuake (already using Qt6)

- Krusader (no Qt6 port)

Small steps towards a port, but still a lot of work


- Hotspot (extenal, Qt6 port available)

okularpart (Okular is in the process of getting ported):
Okular is meanwhile ported
- kile (no Qt6 port)

See above


- kbibtex (no Qt6 port)

Builds with Qt6 meanwhile


dolphinpart (Dolphin is using Qt6):

- konqueror (already using Qt6)

katepart (available for both Qt5 and Qt6):

- kompare (Qt6 branch available)

kgraphviewerpart (not using Qt6):

No change


- hotspot (external, Qt6 port available)

We do have two options for how to deal with these:

a) Port and release all relevant consumers of a given part at the same
time

b) Make sure the part is available for both Qt versions

3) There's a number of "general-purpose file type" parts that aren't
loaded explicitly but based on their mime type. Examples include
gwenviewpart, svgpart, markdownpart, okularpart. There's a number of
applications consuming those:

- Ark for file preview (Qt6 port available but not default yet)
Meanwhile using Qt6

- Kate for file preview (Qt6-only)

- Konqueror

- Krusader

- KBibTex

Here we would ideally have as many as possible available for both Qt
version (as long as we have Qt5-based KParts-consuming software).
However in cases like Ark the loss of functionality by not having
specific parts available would not be catastrophic.

Cheers

Nico

Reply via email to