Trim down KIO (API and dependencies)
Open, Needs TriagePublic

Description

KIO is a very large library both code and dependency wise. It has various use-cases that somewhat overlap. It provides:

  • The implementation of the slave/job mechanism
  • Implementation of slaves/jobs
  • Stuff needed for apps to use slaves/jobs
  • Stuff needed for apps to implement own slaves/jobs
  • slave-independant file classes and widgets
  • KFilePlacesModel (with a lot of redundant code in Dolphin)
  • Some web related stuff

If an application wants to use only a small part of the API, e.g. KFileItemActionPlugin it would drag in all of the above.

To mitigate this we could split KIO into the the slave/job part and the slave-independant file(widget) part.
The latter could be a place for API that is missing in QFile, but wouldn't justify pulling in all of KIO to use it

UPDATE: if we can trim it down enough, then maybe we don't need to actually split it up.

nicolasfella added a parent task: T12089: KIO for KF6.
nicolasfella updated the task description. (Show Details)
meven added a subscriber: meven.Nov 24 2019, 8:17 AM

If our ideas to reduce the dependencies work out as we imagine I don't see much reason anymore to do this. Let's reevaluate this when we know more.

Even if not split up, it would be neat if possible to build the core and non-core part independently (see current KIOCORE_ONLY variable)

meven added a subscriber: dfaure.Jan 12 2021, 11:45 AM

@dfaure should be consulted for this.

meven added a comment.Mar 27 2021, 3:49 PM

A bit related https://phabricator.kde.org/T12285 move KTextWidgets to KIOExtras

ervin moved this task from Needs Input to In Discussion on the KF6 board.Mar 27 2021, 3:51 PM
ervin moved this task from In Discussion to Needs Input on the KF6 board.Mar 27 2021, 4:53 PM
dfaure renamed this task from Split up KIO to Trim down KIO (API and dependencies).Mar 27 2021, 5:10 PM
dfaure updated the task description. (Show Details)
ervin moved this task from Needs Input to In Discussion on the KF6 board.Mar 28 2021, 8:13 AM
ervin moved this task from In Discussion to Needs Input on the KF6 board.
ervin moved this task from Needs Input to In Discussion on the KF6 board.Mar 28 2021, 9:10 AM
dfaure added a comment.EditedMar 28 2021, 9:32 AM

KIOCore dependencies:

  • Remove KDBusAddons once kdeinit is removed, it was only used for KDEInitInterface. T14310
  • Move DesktopExecParser up to KIOGui to remove the dependency on KService. T14309
  • Remove KProtocolManager::defaultUserAgentFromPreferredService and hardcode WebEnginePart instead of KHTML. T14307

Port ktelnetservice away from KToolInvocation::kdeinitExec, remove dependency on KService. T14304

kcms/kio/kproxydlg.*: port from KLineEdit to QLineEdit, remove dependency on KCompletion. T14305

KUriFilter / KUriFilterPlugin: T14306

  • Deprecate configModule() virtual method, let the plugins provide the KCModule as a separate plugin object, separate from KUriFilterPlugin
  • Then in KF6 KUriFilter and KUriFilterPlugin can move to KIOCore
  • Then change the target_link_libraries for all urifilter plugins.
ervin moved this task from In Discussion to Needs Splitting on the KF6 board.Mar 28 2021, 12:22 PM
dfaure moved this task from Needs Splitting to Metatasks on the KF6 board.Apr 3 2021, 12:44 PM
adjam added a subscriber: adjam.Jun 15 2021, 3:04 PM