Frameworks/Epics/kdepimlibs
kdepimlibs Epic
Status
Status as at 16 Apr 2014.
- Akonadi supports Qt 5 since release 1.11
- All kdepim has CMake automoc
- Most of the kdepimlibs subdirs are now building using ECM.
- Porting the kdepim libraries to KF5/Qt5 started.
- Maintainers are requested to fill in the Code Units grid below
Planning
At the KDE PIM sprint the following plan was discussed on the assumption that no work had been started yet, so it was better to wait until the kdelibs split had been performed:
- Wait for the kdelibs split to be completed and the preview release to be made
- A frameworks branch to be created in kdepimlibs
- All obsolete libraries to be deleted
- Qt5 / KF5 basic porting to be performed 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 classes to be reviewed by key maintainers to decide if any should move elsewhere
- Once basic 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
Since then Stephen Kelly has advised he has already completed significant parts of the port and is recommending the following plan be followed:
- Clean-up in Master branch
- Port away from obsolete code
- Includes
- Q_SLOTS and Q_SIGNALS
- kde4_add_library -> add_library
- Merge to frameworks
- Delete obsolete code from frameworks branch
- Port to Qt5 / KF5
- Adapt to upstream api changes, includes, cmake, etc
- Use kde4support as required
- Remove use of kde4support
- Code rearranging
- Internal library splits, merges
- Code improvements
- API changes
- Refactoring
- Coding Style fix
- Split
- Release
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
- 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
Basically most of the lower-level libraries and kdelibs(kdecore)!
Dependencies of libkolab:
- KIMAP
- KABC
- KCalCore
- KMime
- KCalUtils (only for invitation formatting, incidenceformatter.h/stringify.h)
- KPimUtils (only for email parsing, email.h)
- akonadi/notes (note wrapper around KMime message)
- kdelibs (KDateTime, jobs and dependencies of kdepimlibs)
Since libkolab is used on the server, all it's dependencies shouldn't have GUI/DBUS/runtime-deamon dependencies.
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 |
---|---|---|---|---|---|
IN PROGRESS | akonadi | Client access library for using the Akonadi PIM data server. | Dan Vratil | KJob, KDialog, KDebug, KLocale, KMimeType, Ki18n, KIcon, KPixmapSequence, KComboBox, KLineEdit, KStandardShortcut, KItemModels/Views, KXmlGui, KApp/KCD/KCmdLineArgs, KPimUtils, KAction, KConfig, KStandardDirs, misc K* widgets, KColorScheme, KIO, KTextBrowser, KDateTime, Solid, KGlobal::ref, KInputDialog, KMessageBox, KProcess, KRun, KUser, KFileDialog, KPluginLoader, KRandom, KMime (tests only) | |
IN PROGRESS | akonadi/calendar | Calendar-specific Akonadi client library | Akonadi, Akonadi Contacts, Akonadi KMime, Mailtransport, KCalCore, KCalUtils, Mailtransport, Ki18n, KLocale, KDateTime, KTimeZone, KJob, KPimIdentities, KEmailSettings, KIO, KTemporaryFile, KMessageBox, various K widgets, KStandardDirs, KIcon, KItemModels, KPimUtils | ||
IN PROGRESS | akonadi/contacts | Contact-specific Akonadi client library | Akonadi, KABC, Ki18n, KLocale, KConfig, KStandarddirs, KJob, KIO (incl. NetAccess), KStringHandler, KDialog, KPluginFactory/Info, various K widgets, KIcon, KMessageBox, KToolInvocation, KRun, KDebug, KAction, KColorSchme, KTextBrowser/Edit, KDatePicker, KPixmapRegionSelectorDialog, KFileDialog, KAccelManager, KPimUtils, KApp/KCD/KCmdLineArgs (tests only), KCalCore, KMime, KCM, KAboutData (kcm and tests only), Nepomuk2 Core, Phonon | ||
TODO | akonadi/kabc | what's the difference to the above? | none!? | ||
DONE | akonadi/kcal | KCal-specific Akonadi client library (deprecated?) | to be deleted | ||
IN PROGRESS | akonadi/kmime | Mail-specific Akonadi client library | Akonadi, KMime, Ki18n, KDebug, KMessageBox, KIO, KAction, KIcon, KLocale, KApp/KCD/KCmdLineArgs (tests only) | ||
IN PROGRESS | akonadi/notes | Notes-specific Akonadi client library | Akonadi, KMime, KDateTime, KDebug, Ki18n | ||
IN PROGRESS | akonadi/socialutils | Social media Akonadi client library | Akonadi, KIO, QJson, KImageCache, KDebug, KDateTime | ||
DONE | cmake | N/A | |||
TODO | docs | KDoctools | |||
IN PROGRESS | gpgme++ | C++ API for libgpgme | Marc Mutz | no Qt/KDE | |
DONE | includes | Camel case forwarding headers | |||
DONE | kabc | Tobias koenig | KLocale, Ki18n, KStandardDirs, KCD, KRandom, KConfig*, KMessageBox, KCodec, KDialog (? KRes removal ifdef seems not strict enough), KMimeType, KApplication & friends (tests only) | ||
IN PROGRESS | kalarmcal | David Jarvie | KCalCore, KHolidays, Akonadi, KLocale, KTimeZone, Ki18n, KDebug, KPimIdentities, KMessageBox, KDateTime, KConfig | ||
IN PROGRESS | kblog | C++ API for weblogging access | Christian Weilbach | KDebug, KDateTime, KTimeZone, KXmlRpcClient, KIO, KCal, Ki18n, KStandardDirs | |
DONE | kcal | C++ API for the iCalendar and vCalendar formats (Deprecated by kcalcore and kcalutils) | Sergio Martins, Allen Winter | to be removed | |
IN PROGRESS | kcalcore | C++ API for the iCalendar and vCalendar formats | Sergio Martins, Allen Winter | KDebug, KDateTime, KTimeZone, KCodecs, KRandom, KConfig, K[Temp,Save]File, KMimeType, KStandardDirs, KApp/KCD/KCmdLine (tests only) | |
IN PROGRESS | kcalutils | C++ library containing utility functions on top of kcalcore. | Sergio Martins, Allen Winter | kcalcore, kpimidentities, ki18n, kpimutils, KDialog, KDebug, KMimeType, KTimeZone, KDateTime, KCalendarSystem, KIconLoader, KMessageBox, KLocale | |
DONE | kholidays | C++ library for calendar holidays | John Layt, Allen Winter | kdeui, kio ( KComboBox, KStandardDirs, KCalendarSystem, KLocale, KLocalizedString) | Plasma, KMyMoney |
IN PROGRESS | kimap | C++ API for IMAP support | Christian Mollekopf | KMime, KDebug, K1i8n, KTcpSocket, KIO/SSL, KJob, KCD/KAboutData (tests only) | |
DONE | kioslaves/imap4 | imap4 kioslave | to be removed | ||
DONE | kioslaves/ldap | ldap kioslave | Ki18n, KIO, KDebug, KCD, KLDAP | ||
DONE | kioslaves/mbox | mbox kioslave | Ki18n, KIO, KDebug, KCD | ||
DONE | kioslaves/nntp | nntp kioslave | Ki18n, KIO, KDebug, KCD | ||
DONE | kioslaves/pop3 | pop3 kioslave | Ki18n, KIO, KDebug, KCD, KMD5, SASL2 | ||
DONE | kioslaves/sieve | Sieve kioslave | Ki18n, KIO, KDebug, KCD, KMessageBox, SASL2 | ||
DONE | kioslaves/smtp | smtp kioslave | Ki18n, KIO, KDebug, KCD, SASL2, KEmailSettings | ||
DONE | kldap | C++ API for LDAP access | Szombathelyi György | KDebug, Ki18n, KProgressDialog, KLineEdit, KMessageBox, KComboBox | |
DONE | kmbox | Bertjan Broeksema | KMime, KStandardDirs, KDebug, KTempDir (tests only) | ||
IN PROGRESS | kmime | C++ API for MIME handling | Volker Krause, Marc Mutz | KCharsets, KLocale, KDateTime, KCalendarSystem, KDebug, KAscii, kpimutils (header-only), KCD (tests only), Ki18n | |
IN PROGRESS | kontactinterface | The glue for embedding KParts into Kontact | Allen Winter | KPlugin, KXmlGui, some K widgets, KDialog, KPimUtils, K[Unique]Applications/KCmdLineArgs, KWindowSystem, KParts, KAboutData, KCD, KStandardDirs, KRun, KDebug, KGlobalSettings, KIcon*, KStartupInfo, KLocale | |
IN PROGRESS | kpimidentities | C++ API for shared identities for mail applications | KPimUtils, KEmailSettings, KConfig*, KUser, KRandom, Ki18n, various K* widgets, KDebug, KProcess, KMessagebox, KRichTextEdit, KIcon*, KShellCompletion, KPimTextEdit, Sonnet | ||
IN PROGRESS | kpimtextedit | Provides a textedit with PIM-specific features and can convert the textedit content to various markup formats | Thomas McGuire, Stephen Kelly | KImageIO, KFileDialog, KDialog, KAction*, KRichtextEdit, KIcon*, KCharSelect, KI18n, KStdDirs, various K widgets, KEmoticons, KMime, Sonnet, KCursor | |
IN PROGRESS | kpimutils | A library for general purpose PIM utilities | KMessageBox, KStdGuiItem, KI18n, KDebug, KURL, KMime (yay, cyclic dependency!), KEmoticons, KPixmapSequence | ||
DONE | kresources | Tobias Koenig | to be removed | ||
IN PROGRESS | ktnef | C++ API for the handling of TNEF data | Michael Goffioul | KPimUtils, KCalCore, KABC, Ki18n, KDateTime, KMimeType, KSaveFile, KDebug | |
DONE | kxmlrpclient | An XML-RPC client library | KIO, KDebug, Ki18n | ||
IN PROGRESS | mailtransport | C++ API and support code for managing mail transport | Ki18n, KDebug, KDialog, KJob, KStringHandler, KMime, Akonadi, KStdDirs, KMessageBox, some K widgets, KIO, KApp/KCD/KCmdLineArgs (tests only), KWallet, KConfig, KEmailSettings, KRandom, Akonadi KMime, KCM/KPlugin* (KCM only), KTcpSocket/SASL (no-KIO mode) | ||
DONE | microblog | A library for microblogging | Tom Albers | KDebug, KPimUtils | |
IN PROGRESS | qgpgme | A C++ wrapper for gpgme | Marc Mutz | QtCore only | |
IN PROGRESS | syndication | An RSS/Atom feed parser library | Frank Osterfeld | KIO, KCharset, KDateTime, KDebug, Kapp/Kcmdlineargs/KCD (tests only), KRandom, KProcess |
kdepim-runtime
Status | Unit | Description | Maintainer | Dependencies | External Usage |
---|---|---|---|---|---|
TODO | accountwizard | Generic account setup wizard framework - how does this relate to WebAccounts? | Kross, Akonadi, Mailtransport, KPimIdentities, QtUiTools, KNewStuff3, KConfig, KMime, KIO, K[Unique]App/KCD/KCmdLineArgs, KAboutData, KMessageBox, KAssistantDialog, KPageWidget*, KDebug, KLocale, Ki18n, KStringHandler, KDebug, KWallet, KPimUtils, KMimeType, KDesktopFile | ||
TODO | agents/invitations | Map iTip invitations to a calendar | |||
TODO | agents/maildispatcher | Mail sending | |||
TODO | agents/migration | Migration agent | |||
TODO | agents/nepomukfeeder | Indexing of PIM data | |||
TODO | agents/nemailnotifier | New Mail Notfications | |||
TODO | cmake | ||||
TODO | defaultsetup | Akonadi | |||
TODO | doc | ||||
TODO | kcm | ||||
TODO | kioslave | Akonadi KIO integration | |||
TODO | kresources | Akonadi KResources | Kevin Krammer | to be removed | |
TODO | libkdepim-copy | ||||
TODO | migration | Plug-ins for the migration agent, and other migration tools | |||
TODO | opensync | ||||
TODO | plugins | Serializer Plugins | |||
TODO | qml | ||||
TODO | resources/agentserver | ||||
TODO | resources/birthdays | Birthday Resources | |||
TODO | resources/contacts | Local Addressbook | Tobias König | ||
TODO | resources/facebook | Facebook Resource | Martin Klapetek | ||
TODO | resources/ical | iCal File Resource | |||
TODO | resources/imap | IMAP Resource | Christian Mollekopf | ||
TODO | resources/kabc | KABC KRes Resource | Kevin Krammer | to be removed | |
TODO | resources/kcal | KCal KRes Resource | Kevin Krammer | to be removed | |
TODO | resources/kolabproxy | Kolab Resource | Christian Mollekopf | ||
TODO | resources/maildir | Maildir Resource | Andras Mantia | ||
TODO | resources/mixedmaildir | KMail1 legacy resource | |||
TODO | resources/nntp | NNTP Resource | |||
TODO | resources/pop3 | POP3 Resource | Thomas McGuire | ||
TODO | resources/vcard | VCard file resource | |||
TODO | resources/akonotes | ||||
TODO | resources/dav | ||||
TODO | resources/google | Martin Klapetek | |||
TODO | resources/icaldir | ||||
TODO | resources/kalarm | David Jarvie | |||
TODO | resources/kdeaccounts | ||||
TODO | resources/localbookmarks | ||||
TODO | resources/mailtransport_dummy | Mailtransport Unit Test Resource (move to mailtransport?) | |||
TODO | resources/mbox | MBox file resource | |||
TODO | resources/nepomuktag | Tag folders | |||
TODO | resources/openxchange | ||||
TODO | resources/shared | ||||
TODO | resources/vcarddir | ||||
TODO | resourcetester | ||||
TODO | tray | Akonadi Tray | kill? |
Split Tasks
kdepimlibs Tasks
Status | Framework | Tier | Assigned | Priority | Action Required |
---|---|---|---|---|---|
TODO | akonadi | merge with akonadi server? | |||
TODO | akonadi/calendar | Tier 3? | |||
TODO | akonadi/contacts | Tier 3? | |||
TODO | akonadi/kabc | Tier 3? | merge to akonadi/contacts? Only defines 2 aliases for payload parts and is only used by akonadi_serializer_addressee, but I've never seen such part names in my Akonadi. Maybe it could even be deleted? | ||
DONE | akonadi/kcal | N/A | deprecated - delete | ||
TODO | akonadi/kmime | Tier 3? | |||
TODO | akonadi/notes | Tier 3? | |||
TODO | akonadi/socialutils | Tier 3? | |||
DONE | cmake | N/A | FindLDAP: move to kldap, FindQgpgme: obsolete by config file, FindGpgme: move to gpgme++, FindQJSon: obsolete, already upstream, FindQtOAuth: ?, CheckTimezones: ? FindLibical: move to kcalcore, FindXsltproc: rename and move to Akonadi | ||
DONE | doc | KRES KCM: obsolete, KIOslave docs: move to slaves | |||
TODO | gpgme++ | ||||
DONE | includes | N/A | distribute to splitted modules, auto-generate? | ||
TODO | kabc | remove KResource dependencies | |||
TODO | kalarmcal | remove optional KCal dependency | |||
TODO | kblog | port to KCalCore | |||
DONE | kcal | N/A | To be deleted | ||
TODO | kcalcore | High (Workspace) | |||
TODO | kcalutils | High (Workspace) | |||
TODO | kholidays | Tier 1 | High (Workspace) | Split as is and clean-up api. Will be replaced later by OpenHolidays. Will need internal copy of QCalendarSystem, Gui uses KComboBox. Replace KStandardDirs? | |
TODO | kimap | ||||
DONE | kioslave/imap4 | N/A | To be deleted | ||
TODO | kioslave/ldap | ||||
TODO | kioslave/mbox | ||||
TODO | kioslave/nntp | ||||
TODO | kioslave/pop3 | ||||
TODO | kioslave/sieve | ||||
TODO | kioslave/smtp | ||||
TODO | kldap | ||||
TODO | kmbox | ||||
TODO | kmime | ||||
TODO | kontactinterface | ||||
TODO | kpimidentities | ||||
TODO | kpimtextedit | ||||
IN PROGRESS | kpimutils | remove networkaccesshelper and spellingfilter, move the used functions from processes.h to kontactinterfaces | |||
DONE | kresources | N/A | delete | ||
TODO | ktnef | remove KCal dependency | |||
TODO | kxmlrpcclient | ||||
TODO | mailtransport | ||||
TODO | microblog | obsolete after microblog resource removal? | |||
TODO | qgpgme | ||||
TODO | syndication |
kdepim-runtime Tasks
Status | Framework | Tier | Assigned | Priority | Action Required |
---|---|---|---|---|---|
TODO | accountwizard | ||||
TODO | agents | ||||
TODO | cmake | ||||
TODO | defaultsetup | ||||
TODO | doc | ||||
TODO | kcm | ||||
TODO | kioslave | ||||
TODO | kresources | N/A | 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 |