kdepimlibs Splitting Epic


The KDE PIM community has outlined the following plan for splitting kdepimlibs into Frameworks libraries

  • Wait for the kdelibs split to be completed and the preview release to be made
  • A frameworks branch to be created in kdepimlibs and Qt5 / KF5 basic porting to be performed here mostly by the Frameworks team (old frameworks branch to be reviewed and deleted)
  • Once work is started here no more style fixes to be applied to Master
  • Code relying on qt3support and deprecated libraries will be removed as part of the porting
  • All classesto be reviewed by key maintainers to decide if any should move elsewhere
  • Once porting is completed then kdepimlibs will be spilt into separate frameworks
  • Once split the maintainers of each framework will take over work to make any API and code changes required
  • PIM Frameworks will be released as and when they are ready, we do not need to release them all at the same time
  • PIM Frameworks will be prioritised depending on usage, i.e. libraries needed by KDE Workspaces and Kolab should be released first
  • kdepim-runtime will be split between PIM Framework and kdepim


See the other Frameworks pages for the KDE Frameworks Policies, the kdelibs Split Policies and the Definition of Done .

The kdepimlibs specific policies are:

  • Modules that use qt3support are to be removed
  • Deprecated API is allowed to be removed
  • Source compatibility requirements are relaxed due to fewer clients, but major rewrites are discouraged. Instead port the old library and create a separate new library (e.g. KHolidays and QHolidays).
  • Most libraries will aim for Tier 2, but some may be able to target Tier 1.
  • The initial KF5 port may rely on kde4support to enable the port to be performed by non-experts, but no Framework released may rely on kde4support so the maintainer must remove all usage. In particular all KDateTime, KTimeZone and KLocale usage must be removed and the Qt replacements throughly tested for regressions and behaviour changes.


The following libraries are known to be used outside of KDE PIM and so may be a higher priority in porting.

For Plasma support the decision has been made to deprecate the use of DataEngines and use QML includes instead.

Priority items:

  • Akonadi
  • KABC
  • KCalCore
  • KMime
  • KHolidays
  • QGpgme
  • KXMLRPCClient
  • + other Kolab libs



  • kde-workspace/libs/plasmaclock/
    • KHolidays (for selection widget, could be moved elsewhere?)
    • CalendarEngine
  • kde-workspace/plasma/generic/dataengines/akonadi/
    • Akonadi
    • KMime
    • KABC
    • Microblog
    • KPimUtils (linked but not included?)
    • AkonadiEngine not used anywhere
  • kde-workspace/plasma/generic/dataengines/calendar/
    • Akonadi
    • KCalCore
    • KCalUtils
    • KHolidays
    • CalendarEngine only used in kde-workspace/libs/plasmaclock/
  • kde-workspace/plasma/generic/dataengines/rss/
    • Syndication

Note: It is recommended that the Akonadi DataEngine be reworked/renamed as EMailEngine, ToDoEngine, etc, as this is client developer facing API and so the implementation name should be abstracted/hidden from them, i.e. as is done with the CalendarEngine.



  • kde-runtime/drkonqi/
    • KXMLRPCClient
  • kde-runtime/kwalletd
    • QGpgme



  • kdeplasma-addons/libs/lancelot-datamodel
    • Akonadi - for email support
  • kdeplasma-addons/runners/contacts
    • Akonadi
    • KABC
  • kdeplasma-addons/runners/events
    • Akonadi
    • KCalCore
  • kdeplasma-addons/applets/news/
    • RssEngine
  • kdeplasma-addons/applets/rssnow/
    • RssEngine

Runners could be converted to either use KPeople, or to use the QML includes? Or the DataEngines?


WIP. Basically most of the lower-level libraries and all of kdelibs!

  • KABC
  • KCalCore
  • KMime

Code Units

The following is a high-level list of the different Code Units in kdepimlibs and kdepim-runtime. A Unit may be a library or other software artefact that is to be considered as a stand-alone unit of code.


Initial listing of top-level directories in kdepimlibs and the README file, if subdirectories need breaking out separately then please add to list.

Unit Description Maintainer Internal Dependencies
akonadi Client access library for using the Akonadi PIM data server. xxx
akonadi/calendar Calendar-specific Akonadi client library xxx many...
akonadi/contacts Contact-specific Akonadi client library xxx kabc, kcalcore, kmime, pimutils, akonadi, kio, kdeui, nepomuk
akonadi/kabc what's the difference to the above? xxx kabc, akonadi, kdecore
akonadi/kcal KCal-specific Akonadi client library (deprecated?) xxx
akonadi/kmime Mail-specific Akonadi client library xxx kmime, akonadi, kdecore, kdeui, kio
akonadi/notes Notes-specific Akonadi client library xxx akonadi, kmime
akonadi/socialutils Social media Akonadi client library xxx akonadi, kio, qjson
cmake xxx
docs xxx
gpgme++ C++ API for libgpgme xxx
includes Camel case forwarding headers xxx
kalarmcal xxx
kblog C++ API for weblogging access xxx
kcal C++ API for the iCalendar and vCalendar formats (Deprecated by kcalcore and kcalutils) xxx
kcal/libical A basic iCalendar protocol implementation, see RFCs 2245,2246 xxx
kcalcore C++ API for the iCalendar and vCalendar formats xxx
kcalutils C++ library containing utility functions on top of kcalcore. xxx
kholidays C++ library for calendar holidays xxx
kimap C++ API for IMAP support xxx
kioslaves/imap4 imap4 kioslave xxx
kioslaves/ldap ldap kioslave xxx
kioslaves/mbox mbox kioslave xxx
kioslaves/nntp nntp kioslave xxx
kioslaves/pop3 pop3 kioslave xxx
kioslaves/sieve Sieve kioslave xxx
kioslaves/smtp smtp kioslave xxx
kldap C++ API for LDAP access xxx
kmbox xxx
kmime C++ API for MIME handling xxx KCharsets, KLocale, KDateTime, KCalendarSystem, KDebug, KAscii, kpimutils (header-only), KCD (tests only), Ki18n
kontactinterface The glue for embedding KParts into Kontact xxx
kpimidentities C++ API for shared identities for mail applications xxx
kpimtextedit Provides a textedit with PIM-specific features and can convert the textedit content to various markup formats xxx
kpimutils A library for general purpose PIM utilities xxx
kresources xxx
ktnef C++ API for the handling of TNEF data xxx
kxmlrpclient An XML-RPC client library xxx
mailtransport C++ API and support code for managing mail transport xxx
microblog A library for microblogging xxx
qgpgme A C++ wrapper for gpgme xxx
syndication An RSS/Atom feed parser library xxx

kdepimlibs Split Tasks

Maintainers as per the MAINTAINERS file, please change if not correct.

Status Framework Tier Porter Maintainer Comments
TODO akonadi Tier 2? Dan Vratil merge with akonadi server?
TODO akonadi/calendar Tier 3?
TODO akonadi/contacts Tier 3?
TODO akonadi/kabc Tier 3?
TODO akonadi/kcal N/A deprecated - delete
TODO akonadi/kmime Tier 3?
TODO akonadi/notes Tier 3?
TODO akonadi/socialutils Tier 3?
TODO cmake Tier 2?
TODO doc Tier 2?
TODO gpgme++ Tier 2? Marc Mutz
TODO includes N/A distribute to splitted modules, auto-generate?
TODO kabc Tier 2? Tobias Koenig remove KResource dependencies
TODO kalarmcal Tier 2? David Jarvie
TODO kblog Tier 2? Christian Weilbach
TODO kcal Tier 2? To be deleted
TODO kcalcore Tier 2? Sergio Martins, Allen Winter High priority, needed by Workspace.
TODO kcalutils Tier 2? Sergio Martins, Allen Winter High priority, needed by Workspace.
TODO kholidays Tier 1 John Layt, Allen Winter High priority, needed by Workspace. Split and basic port, will be replaced later by OpenHolidays. Will need internal copy of KCalendarSystem
TODO kimap Tier 2? Christian Mollekopf
TODO kioslave/imap4 Tier 2? To be deleted
TODO kioslave/ldap Tier 2?
TODO kioslave/mbox Tier 2?
TODO kioslave/nntp Tier 2?
TODO kioslave/pop3 Tier 2?
TODO kioslave/sieve Tier 2?
TODO kioslave/smtp Tier 2?
TODO kldap Tier 2? Szombathelyi György
TODO kmbox Tier 2? Bertjan Broeksema
TODO kmime Tier 2? Volker Krause, Marc Mutz
TODO kontactinterface Tier 2? Allen Winter
TODO kpimidentities Tier 2?
TODO kpimtextedit Tier 2? Thomas McGuire, Stephen Kelly
TODO kpimutils Tier 2?
TODO kresources N/A Tobias Koenig delete
TODO ktnef Tier 2? Michael Goffioul
TODO kxmlrpcclient Tier 2?
TODO mailtransport Tier 2?
TODO microblog Tier 2? Tom Albers obsolete after microblog resource removal?
TODO qgpgme Tier 2? Marc Mutz
TODO syndication Tier 2? Frank Osterfeld

kdepim-runtime Split Tasks

Listing of top-level directories in kdepimlibs, if subdirectories need breaking out separately then please add to list.

No MAINTAINERS file, please populate.

Status Framework Tier Porter Maintainer Comments
TODO accountwizard
TODO agents
TODO cmake
TODO defaultsetup
TODO doc
TODO kcm
TODO kioslave
TODO kresources N/A N/A Kevin Krammer to be deleted
TODO libkdepim-copy
TODO migration
TODO opensync
TODO plugins Merge with corresponding akonadi/foo frameworks?
TODO qml
TODO resources
TODO resourcetester Merge with libakonadi?
TODO tray

This page was last edited on 19 April 2019, at 08:07. Content is available under Creative Commons License SA 4.0 unless otherwise noted.