Frameworks/Epics/kdepimlibs
kdepimlibs Splitting Epic
Planning
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
Policies
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.
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
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
kdepimlibs libraries
Listing of top-level directories in kdepimlibs and the README file, if subdirectories need breaking out separately then please add to list.
Library | Description | Internal Dependencies |
---|---|---|
akonadi | Client access library for using the Akonadi PIM data server. | |
akonadi/calendar | Calendar-specific Akonadi client library | many... |
akonadi/contacts | Contact-specific Akonadi client library | kabc, kcalcore, kmime, pimutils, akonadi, kio, kdeui, nepomuk |
akonadi/kabc | what's the difference to the above? | kabc, akonadi, kdecore |
akonadi/kcal | KCal-specific Akonadi client library (deprecated?) | |
akonadi/kmime | Mail-specific Akonadi client library | kmime, akonadi, kdecore, kdeui, kio |
akonadi/notes | Notes-specific Akonadi client library | akonadi, kmime |
akonadi/socialutils | Social media Akonadi client library | akonadi, kio, qjson |
cmake | ||
docs | ||
gpgme++ | C++ API for libgpgme | |
includes | Camel case forwarding headers | |
kalarmcal | ||
kblog | C++ API for weblogging access | |
kcal | C++ API for the iCalendar and vCalendar formats (Deprecated by kcalcore and kcalutils) | |
kcal/libical | A basic iCalendar protocol implementation, see RFCs 2245,2246 | |
kcalcore | C++ API for the iCalendar and vCalendar formats | |
kcalutils | C++ library containing utility functions on top of kcalcore. | |
kholidays | C++ library for calendar holidays | |
kimap | C++ API for IMAP support | |
kioslaves/imap4 | imap4 kioslave | |
kioslaves/ldap | ldap kioslave | |
kioslaves/mbox | mbox kioslave | |
kioslaves/nntp | nntp kioslave | |
kioslaves/pop3 | pop3 kioslave | |
kioslaves/sieve | Sieve kioslave | |
kioslaves/smtp | smtp kioslave | |
kldap | C++ API for LDAP access | |
kmbox | ||
kmime | C++ API for MIME handling | |
kontactinterface | The glue for embedding KParts into Kontact | |
kpimidentities | C++ API for shared identities for mail applications | |
kpimtextedit | Provides a textedit with PIM-specific features and can convert the textedit content to various markup formats | |
kpimutils | A library for general purpose PIM utilities | |
kresources | ||
ktnef | C++ API for the handling of TNEF data | |
kxmlrpclient | An XML-RPC client library | |
mailtransport | C++ API and support code for managing mail transport | |
microblog | A library for microblogging | |
qgpgme | A C++ wrapper for gpgme | |
syndication | An RSS/Atom feed parser library |
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 |