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.