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.

Priorities

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

Usage:

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

Usage:

kde-runtime/drkonqi/

KXMLRPCClient

kde-runtime/kwalletd

QGpgme

kdeplasma-addons

Usages:

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?

Kolab

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

KIMAP

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 and the README and MAINTAINERS files. If subdirectories need breaking out separately then please add to list.

Note that the status listed in this table is solely whether the information required has been completed, not that theport has been completed.

kdepimlibs

Status

Unit

Description

Maintainer

Dependencies

External Usage

TODO

akonadi

Client access library for using the Akonadi PIM data server.

Dan Vratil

TODO

akonadi/calendar

Calendar-specific Akonadi client library

many...

TODO

akonadi/contacts

Contact-specific Akonadi client library

kabc, kcalcore, kmime, pimutils, akonadi, kio, kdeui, nepomuk

TODO

akonadi/kabc

what's the difference to the above?

kabc, akonadi, kdecore

TODO

akonadi/kcal

KCal-specific Akonadi client library (deprecated?)

TODO

akonadi/kmime

Mail-specific Akonadi client library

kmime, akonadi, kdecore, kdeui, kio

TODO

akonadi/notes

Notes-specific Akonadi client library

akonadi, kmime

TODO

akonadi/socialutils

Social media Akonadi client library

akonadi, kio, qjson

TODO

cmake

TODO

docs

TODO

gpgme++

C++ API for libgpgme

Marc Mutz

TODO

includes

Camel case forwarding headers

TODO

kabc

Tobias koenig

TODO

kalarmcal

David Jarvie

TODO

kblog

C++ API for weblogging access

Christian Weilbach

TODO

kcal

C++ API for the iCalendar and vCalendar formats (Deprecated by kcalcore and kcalutils)