Frameworks/Epics/kdepimlibs: Difference between revisions

From KDE Community Wiki
 
(176 intermediate revisions by 7 users not shown)
Line 1: Line 1:
== kdepimlibs Splitting Epic ==
== kdepimlibs Epic ==
 
=== Status ===
 
Status as at 31 Januray 2015.
 
* 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 (A big porting is port to QLocale)
* Maintainers are requested to fill in the [[Frameworks/Epics/kdepimlibs#Code_Units | Code Units grid]] below
* kdepimlibs is split in several modules.
* Some modules were renames : KABC->KContacts, kpimidentity->kidentitymanagement etc.
* KPimUtils was removed (merge in kf5)


=== Planning ===
=== Planning ===


The KDE PIM community has outlined the following plan for splitting kdepimlibs into Frameworks libraries
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
* 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)
* 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
* 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
* Code relying on qt3support and deprecated libraries will be removed as part of the porting
* Once porting is completed then kdepimlibs will be spilt into separate frameworks
* 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
* 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 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
* 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
* 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 ===
=== Policies ===
Line 25: Line 65:
* 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 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.


=== Existing frameworks ===
=== 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 ====
 
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
|- style="background: #ececec; white-space:nowrap;"
! Status
! Unit
! width=500 | Description
! width=200 | Maintainer
! width=300 | Dependencies
! width=300 | External Usage
|- {{ FrameworkInProgress | 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)| }}
|- {{ FrameworkInProgress | 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| }}
|- {{ FrameworkInProgress | 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| }}
|- {{ FrameworkTodo | akonadi/kabc | what's the difference to the above? |  | none!? | }}
|- {{ FrameworkDone | akonadi/kcal | KCal-specific Akonadi client library (deprecated?) ||to be deleted| }}
|- {{ FrameworkInProgress | akonadi/kmime | Mail-specific Akonadi client library |  | Akonadi, KMime, Ki18n, KDebug, KMessageBox, KIO, KAction, KIcon, KLocale, KApp/KCD/KCmdLineArgs (tests only)| }}
|- {{ FrameworkInProgress | akonadi/notes | Notes-specific Akonadi client library |  | Akonadi, KMime, KDateTime, KDebug, Ki18n| }}
|- {{ FrameworkInProgress | akonadi/socialutils | Social media Akonadi client library |  |Akonadi, KIO, QJson, KImageCache, KDebug, KDateTime| }}
|- {{ FrameworkDone | cmake | | | N/A| }}
|- {{ FrameworkTodo | docs | | |KDoctools| }}
|- {{ FrameworkDone | gpgme++ |C++ API for libgpgme | Marc Mutz |no Qt/KDE| }}
|- {{ FrameworkDone | includes |Camel case forwarding headers | | | }}
|- {{ FrameworkDone | kabc | | Tobias koenig |KLocale, Ki18n,  KStandardDirs, KCD, KRandom, KConfig*, KMessageBox, KCodec, KDialog (? KRes removal ifdef seems not strict enough), KMimeType, KApplication & friends (tests only)| }}
|- {{ FrameworkInProgress | kalarmcal | | David Jarvie |KCalCore, KHolidays, Akonadi, KLocale, KTimeZone, Ki18n,  KDebug, KPimIdentities, KMessageBox, KDateTime, KConfig| }}
|- {{ FrameworkInProgress | kblog | C++ API for weblogging access | Christian Weilbach  |KDebug, KDateTime, KTimeZone, KXmlRpcClient, KIO, KCal, Ki18n, KStandardDirs| }}
|- {{ FrameworkDone | kcal | C++ API for the iCalendar and vCalendar formats (Deprecated by kcalcore and kcalutils) | Sergio Martins, Allen Winter |to be removed| }}
|- {{ FrameworkInProgress | 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)| }}
|- {{ FrameworkInProgress | 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 | }}
|- {{ FrameworkDone | kholidays | C++ library for calendar holidays | John Layt, Allen Winter | kdeui, kio ( KComboBox, KStandardDirs, KCalendarSystem, KLocale, KLocalizedString) | Plasma, KMyMoney }}
|- {{ FrameworkInProgress | kimap | C++ API for IMAP support | Christian Mollekopf |KMime, KDebug, K1i8n, KTcpSocket, KIO/SSL, KJob, KCD/KAboutData (tests only)| }}
|- {{ FrameworkDone | kioslaves/imap4 | imap4 kioslave |  |to be removed| }}
|- {{ FrameworkDone | kioslaves/ldap | ldap kioslave |  | Ki18n, KIO, KDebug, KCD, KLDAP| }}
|- {{ FrameworkDone | kioslaves/mbox | mbox kioslave |  |Ki18n, KIO, KDebug, KCD| }}
|- {{ FrameworkDone | kioslaves/nntp | nntp kioslave |  |Ki18n, KIO, KDebug, KCD| }}
|- {{ FrameworkDone | kioslaves/pop3 | pop3 kioslave |  |Ki18n, KIO, KDebug, KCD, KMD5, SASL2 | }}
|- {{ FrameworkDone | kioslaves/sieve | Sieve kioslave |  |Ki18n, KIO, KDebug, KCD, KMessageBox, SASL2| }}
|- {{ FrameworkDone | kioslaves/smtp | smtp kioslave |  |Ki18n, KIO, KDebug, KCD, SASL2, KEmailSettings| }}
|- {{ FrameworkDone | kldap | C++ API for LDAP access | Szombathelyi György |KDebug, Ki18n, KProgressDialog, KLineEdit, KMessageBox, KComboBox| }}
|- {{ FrameworkDone | kmbox | | Bertjan Broeksema |KMime, KStandardDirs, KDebug, KTempDir (tests only)| }}
|- {{ FrameworkInProgress | kmime | C++ API for MIME handling | Volker Krause, Marc Mutz |KCharsets, KLocale, KDateTime, KCalendarSystem, KDebug, KAscii, kpimutils (header-only), KCD (tests only), Ki18n | }}
|- {{ FrameworkInProgress | 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| }}
|- {{ FrameworkInProgress | 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| }}
|- {{ FrameworkInProgress | 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| }}
|- {{ FrameworkInProgress| kpimutils | A library for general purpose PIM utilities |  |KMessageBox, KStdGuiItem, KI18n, KDebug, KURL, KMime (yay, cyclic dependency!), KEmoticons, KPixmapSequence| }}
|- {{ FrameworkDone | kresources | | Tobias Koenig |to be removed | }}
|- {{ FrameworkInProgress | ktnef | C++ API for the handling of TNEF data | Michael Goffioul |KPimUtils, KCalCore, KABC, Ki18n, KDateTime, KMimeType, KSaveFile, KDebug| }}
|- {{ FrameworkDone | kxmlrpclient |  |An XML-RPC client library |KIO, KDebug, Ki18n | }}
|- {{ FrameworkInProgress | 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)| }}
|- {{ FrameworkDone | microblog | A library for microblogging | Tom Albers |KDebug, KPimUtils| }}
|- {{ FrameworkDone | qgpgme | A C++ wrapper for gpgme | Marc Mutz |QtCore only| }}
|- {{ FrameworkDone | syndication | An RSS/Atom feed parser library | Frank Osterfeld |KIO, KCharset, KDateTime, KDebug, Kapp/Kcmdlineargs/KCD (tests only), KRandom, KProcess | }}
|}
 
==== kdepim-runtime ====
 
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
|- style="background: #ececec; white-space:nowrap;"
! Status
! Unit
! width=500 | Description
! width=200 | Maintainer
! width=300 | Dependencies
! width=300 | External Usage
|- {{ FrameworkDone | 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|  Moved to kdepim }}
|- {{ FrameworkTodo | agents/invitations|Map iTip invitations to a calendar| | | }}
|- {{ FrameworkTodo | agents/maildispatcher|Mail sending| | | }}
|- {{ FrameworkTodo | agents/migration|Migration agent| | | }}
|- {{ FrameworkTodo | agents/newmailnotifier|New Mail Notfications| | | }}
|- {{ FrameworkTodo | cmake | | | | }}
|- {{ FrameworkTodo | defaultsetup | | |Akonadi| }}
|- {{ FrameworkTodo | doc | | | | }}
|- {{ FrameworkTodo | kcm | | | | }}
|- {{ FrameworkTodo | kioslave |Akonadi KIO integration| | | }}
|- {{ FrameworkDone | kresources |Akonadi KResources| Kevin Krammer |to be removed| killed }}
|- {{ FrameworkDone | libkdepim-copy | | | | killed }}
|- {{ FrameworkTodo | migration |Plug-ins for the migration agent, and other migration tools| | | }}
|- {{ FrameworkDone | opensync | | | | killed }}
|- {{ FrameworkTodo | plugins |Serializer Plugins| | | }}
|- {{ FrameworkDone | qml | | | | removed }}
|- {{ FrameworkDone| resources/agentserver | | | | removed }}
|- {{ FrameworkTodo | resources/birthdays |Birthday Resources | | | }}
|- {{ FrameworkTodo | resources/contacts |Local Addressbook |Tobias König | | }}
|- {{ FrameworkDone | resources/facebook |Facebook Resource |Martin Klapetek | | removed }}
|- {{ FrameworkTodo | resources/ical |iCal File Resource | | | }}
|- {{ FrameworkTodo | resources/imap |IMAP Resource |Christian Mollekopf | | }}
|- {{ FrameworkDone | resources/kabc | KABC KRes Resource | Kevin Krammer |to be removed| removed }}
|- {{ FrameworkDone | resources/kcal | KCal KRes Resource | Kevin Krammer | to be removed | }}
|- {{ FrameworkTodo | resources/kolab |Kolab Resource |Christian Mollekopf| | }}
|- {{ FrameworkTodo | resources/maildir |Maildir Resource |Andras Mantia | | }}
|- {{ FrameworkTodo | resources/mixedmaildir |KMail1 legacy resource | | | }}
|- {{ FrameworkDone | resources/nntp |NNTP Resource | | | removed }}
|- {{ FrameworkTodo | resources/pop3 |POP3 Resource |Thomas McGuire | | }}
|- {{ FrameworkTodo | resources/vcard |VCard file resource | | | }}
|- {{ FrameworkTodo | resources/akonotes | | | | }}
|- {{ FrameworkTodo | resources/dav | | | | }}
|- {{ FrameworkTodo | resources/google | |Dan Vrátil | | }}
|- {{ FrameworkTodo | resources/icaldir | | | | }}
|- {{ FrameworkTodo | resources/kalarm | |David Jarvie | | }}
|- {{ FrameworkDone | resources/kdeaccounts | | | | removed }}
|- {{ FrameworkDone | resources/localbookmarks| | | | removed }}
|- {{ FrameworkDone | resources/mailtransport_dummy |Mailtransport Unit Test Resource (move to mailtransport?)| | | removed }}
|- {{ FrameworkTodo | resources/mbox |MBox file resource | | | }}
|- {{ FrameworkDone | resources/nepomuktag| Tag folders | | | removed }}
|- {{ FrameworkTodo | resources/openxchange | | | | }}
|- {{ FrameworkTodo | resources/shared | | | | }}
|- {{ FrameworkTodo | resources/vcarddir | | | | }}
|- {{ FrameworkDone | resourcetester | | | | killed }}
|- {{ FrameworkDone | tray |Akonadi Tray| |kill| }}
|}
 
=== Split Tasks ===
 
==== kdepimlibs Tasks ====


{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
Line 32: Line 276:
! Framework
! Framework
! Tier
! Tier
! Type
! width=120 | Assigned
! width=120 | Porter
! Priority
! width=120 | Maintainer
! Action Required
! Comments
|- {{ FrameworkTodo | akonadi | |  |  | merge with akonadi server? }}
|- {{Todo|akonadi|Tier 2?|???|||}}
|- {{ FrameworkTodo | akonadi/calendar | Tier 3? | | | }}
|- {{FrameworkTodo|cmake|Tier 2?|???|||}}
|- {{ FrameworkTodo | akonadi/contacts | Tier 3? | | | }}
|- {{FrameworkTodo|doc|Tier 2?|???|||}}
|- {{ FrameworkTodo | 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? }}
|- {{FrameworkTodo|gpgme++|Tier 2?|???|||}}
|- {{ FrameworkDone | akonadi/kcal | N/A | | | deprecated - delete }}
|- {{FrameworkTodo|includes|Tier 2?|???|||}}
|- {{ FrameworkTodo | akonadi/kmime | Tier 3? | |  | }}
|- {{FrameworkTodo|kabc|Tier 2?|???|||}}
|- {{ FrameworkTodo | akonadi/notes | Tier 3? | | | }}
|- {{FrameworkTodo|kalarmcal|Tier 2?|???|||}}
|- {{ FrameworkDone | akonadi/socialutils | Tier 3? | |  | gone }}
|- {{FrameworkTodo|kblog|Tier 2?|???|||}}
|- {{ FrameworkDone | 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 }}
|- {{FrameworkTodo|kcal|Tier 2?|???|||}}
|- {{ FrameworkDone | doc |  |  |  |KRES KCM: obsolete, KIOslave docs: move to slaves}}
|- {{FrameworkTodo|kcalcore|Tier 2?|???|||}}
|- {{ FrameworkDone | gpgme++ |  | | | moved to GnuPG upstream }}
|- {{FrameworkTodo|kcalutils|Tier 2?|???|||}}
|- {{ FrameworkDone | includes | N/A |  | | distribute to splitted modules, auto-generate? }}
|- {{FrameworkTodo|kholidays|Tier 1|???||John Layt|Split and basic port, will be replaced later by OpenHolidays}}
|- {{ FrameworkDone | kabc |  | | | remove KResource dependencies}}
|- {{FrameworkTodo|kimap|Tier 2?|???|||}}
|- {{ FrameworkDone | kalarmcal | | | |remove optional KCal  dependency}}
|- {{FrameworkTodo|kioslave|Tier 2?|???|||}}
|- {{ FrameworkTodo | kblog | | | |port to KCalCore }}
|- {{FrameworkTodo|kldap|Tier 2?|???|||}}
|- {{ FrameworkDone | kcal | N/A | | | To be deleted}}
|- {{FrameworkTodo|kmbox|Tier 2?|???|||}}
|- {{ FrameworkTodo | kcalcore | | | High (Workspace) | }}
|- {{FrameworkTodo|kmime|Tier 2?|???|||}}
|- {{ FrameworkTodo | kcalutils | | | High (Workspace) | }}
|- {{FrameworkTodo|kontactinte|Tier 2?|???|||}}
|- {{ FrameworkDone | kholidays | Tier 1 | |  High (Workspace) | moved to KF5 }}
|- {{FrameworkTodo|kpimidentit|Tier 2?|???|||}}
|- {{ FrameworkTodo | kimap |  |  |  | }}
|- {{FrameworkTodo|kpimtextedi|Tier 2?|???|||}}
|- {{ FrameworkDone | kioslave/imap4 | N/A | | | To be deleted }}
|- {{FrameworkTodo|kpimutils|Tier 2?|???|||}}
|- {{ FrameworkDone | kioslave/ldap |  |  |  | }}
|- {{FrameworkTodo|kresources|Tier 2?|???|||}}
|- {{ FrameworkDone | kioslave/mbox |  |  |  | }}
|- {{FrameworkTodo|ktnef|Tier 2?|???|||}}
|- {{ FrameworkDone | kioslave/nntp |  |  |  | }}
|- {{FrameworkTodo|kxmlrpcclie|Tier 2?|???|||}}
|- {{ FrameworkDone | kioslave/pop3 | | | | }}
|- {{FrameworkTodo|mailtranspo|Tier 2?|???|||}}
|- {{ FrameworkDone | kioslave/sieve | |  |  | }}
|- {{FrameworkTodo|microblog|Tier 2?|???|||}}
|- {{ FrameworkDone | kioslave/smtp | | | | }}
|- {{FrameworkTodo|qgpgme|Tier 2?|???|||}}
|- {{ FrameworkTodo | kldap | | | | }}
|- {{FrameworkTodo|syndication|Tier 2?|???|||}}
|- {{ FrameworkTodo | kmbox | | | | }}
|- {{ FrameworkTodo | kmime | | | | }}
|- {{ FrameworkTodo | kontactinterface | | | | }}
|- {{ FrameworkTodo | kidentitymanager | | | | }}
|- {{ FrameworkTodo | kpimtextedit | | | | }}
|- {{ FrameworkDone | kpimutils | | | | removed }}
|- {{ FrameworkDone | kresources | N/A | | | deleted}}
|- {{ FrameworkDone | ktnef | | | |remove KCal dependency }}
|- {{ FrameworkDone| kxmlrpcclient | | | | moved to KF5 }}
|- {{ FrameworkTodo | mailtransport | | | | }}
|- {{ FrameworkDone | microblog | | | | removed }}
|- {{ FrameworkDone | qgpgme | | | | moved to GnuPG upstream }}
|- {{ FrameworkDone | syndication | | | | moved to KF5 }}
|}
|}
==== kdepim Tasks ====
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
|- style="background: #ececec; white-space:nowrap;"
! Status
! Framework
! Tier
! Assigned
! Notes
! Action/Destination
|- {{ FrameworkTodo | calendarsupport | | | | }}
|- {{ FrameworkTodo | composereditor-ng | | | |  }}
|- {{ FrameworkTodo | eventviews | | | | Merge with calendarsupport?  VK: or keep separate for core/ui separation, like we have for messagecore vs. messageviewer/list?}}
|- {{ FrameworkTodo | grantleeeditor | | | Standalone Grantlee template IDE | }}
|- {{ FrameworkTodo | grantleetheme | | | Grantlee theme (template sets) manager API. Could maybe be replaced by KPackage? | }}
|- {{ FrameworkTodo | incidenceeditor-ng | | | | }}
|- {{ FrameworkDone | kaddressbook/gravatar | | | Upload avatar to Gravatar | Merge with messageviewer/gravatar and pimcommon/gravatar, move to KGravatar/KPurpose/KIPI/...? libgravatar created }}
|- {{ FrameworkTodo | kaddressbook/sendmail | | | Extract emails from Akonadi::Items with KContacts | Move to akonadi-contact? LM : it's very specific to kaddressbook not sure that it will useful for other but why not.}}
|- {{ FrameworkTodo | kaddressbookgrantlee | | | ??? | kaddressbook + viewer vcard in kmail plugins }}
|- {{ FrameworkTodo | kalarm/lib | | | The KAlarm Widget Toolkit :) Kill? | }}
|- {{ FrameworkTodo | kdgantt2 | Tier 2 | | Might need some cleanup/polish work, but basically ready | kgantt/kgraphs? -  same as extragear/graphics/kdiagram? }}
|- {{ FrameworkTodo | libfollowupreminder | | Agent + client code | | }}
|- {{ FrameworkTodo | libkdepim/addressline | | | Smart KLineEdit that autocompletes emails from addressbook and PIM Search, includes configuration dialog | KContactWidgets/AkonadiContacts? VK: LDAP dependency might prevent moving upstream }}
|- {{ FrameworkTodo | libkdepim/job | | | Adding contacts to addressbook, whitelisting addresses to show HTML/images by default. KMail specific? | kmail? }}
|- {{ FrameworkTodo | libkdepim/ldap | | | LDAP KCM + search job | kldap? }}
|- {{ FrameworkTodo | libkdepim/misc/broadcaststatus.cpp | | | Singleton to allow creating status notifications (in app statusbar) from any code, apps can listen to it. Used in kmail/akregator/kontact | }}
|- {{ FrameworkTodo | libkdepim/misc/emailvalidator.cpp | | | QValidator for email addresses. Depends on KEmailAddress from KCodecs | }}
|-{{ FrameworkInProgress | libkdepim/misc/kcursorsaver.h | dvratil | | RAII helper for temporarily changing mouse cursor. | kwidgetaddons? or even QtGui? }}
|-{{ FrameworkTodo | libkdepim/misc/maillistdrag.cpp | | | Drag&drop code for emails (??) | }}
|-{{ FrameworkTodo | libkdepim/misc/uistatesaver.cpp | | | Store/restore state of QSplitter, QTabWidget, QTreeView or QComboBox widgets in a config file | kconfig? }}
|- {{ FrameworkTodo | libkdepim/multiplyingline | | | Auto-adds new widget row when you start filling the last one | kwidgetaddons? }}
|- {{ FrameworkTodo | libkdepim/kprefs | | | Looks like something KConfigXT can do today, but probably predates it a bit ( (c) 2001 by Cornelius)/ Used heavily by KOrganizer and little by Kontact (probably due to KOrganizer) | port users to KConfigXT and remove }}
|- {{ FrameworkTodo | libkdepim/progresswidget | | | Advanced progress/tasks reporting, has Akonadi::AgentManager to show resource tasks progress | kwidgetaddons? LM: you want to add a dependancy against akonadi for kwigetsaddons good luck :) VK: KDevelop has a copy of this, so maybe we can at least have parts of this (without Akonadi dependency, obviously) in widgetaddons? LM: Seems logical }}
|- {{ FrameworkDone | libkdepim/proxy | | | KColumnFilterProxyModel and QuotaColorProxyModel (has Akonadi dependency) | kitemmodels, libakonadi }}
|- {{ FrameworkTodo | libkdepim/widget | | | Random widgets| kwidgetaddons?, akonadi-widgets? }}
|- {{ FrameworkTodo | libkdepimdbusinterfaces | | | KOrganizer DBus interfaces (.xml) + some . Why is it even a stanadlone library? Because it uses kmail xml/korganizer xml too| }}
|- {{ FrameworkTodo | libkleo | | | | KF5Kleo? (KF5Crypto?)) }}
|- {{ FrameworkTodo | libksieve | | | Sieve interaction library + Sieve widgets |  Sieve Framework (like KIMAP) }}
|- {{ FrameworkTodo | libsendlater | | Agent + client code | | }}
|- {{ FrameworkTodo | mailcommon | | | | }}
|- {{ FrameworkTodo | mailcommon/filter | | | Local mail filters | }}
|- {{ FrameworkTodo | mailcommon/collectionpage | | | Collection properties dialog pages | Akonadi? it needs some mailcommon dependancy}}
|- {{ FrameworkTodo | mailcommon/folder | | | Mail folders abstraction and glue-code between the abstraction and Akonadi collections | AkonadiMime? }}
|- {{ FrameworkTodo | mailcommon/job | | | Random folder-related jobs | }}
|- {{ FrameworkTodo | mailcommon/search | | | Widgets and some logic for the big Search dialog | }}
|- {{ FrameworkTodo | mailcommon/snippets | | | ??  |}}
|- {{ FrameworkTodo | mailcommon/tags | | | Akonadi Tag abstraction. | Merge with tag widgets from libkdepim?  }}
|- {{ FrameworkTodo | mailcommon/widget | | | Random widgets | }}
|- {{ FrameworkTodo | mailcommon/mdn | | | SendMDNHandler | kmail? it used by filter from mailcommon }}
|- {{ FrameworkTodo | mailcommon/util | |  | mailutil.h - random helper functions | }}
|- {{ FrameworkTodo | mailcommon/kernel | | |  The Kernel singleton that unifies access to various interfaces | }}
|- {{ FrameworkTodo | mailimporter | | | | }}
|- {{ FrameworkTodo | mboximporter | | | App to import MBox | }}
|- {{ FrameworkTodo | messagecomposer | | | email composer and tons of helper code and utilities | }}
|- {{ FrameworkTodo | messagecore | | | see messagecore/src/README for content guidelines| }}
|- {{ FrameworkTodo | messagecore/attachment | | | Attachment handling code | merge with messagecomposer/attachment? }}
|- {{ FrameworkTodo | messagecore/misc/imagecollector.cpp | | | Collects images from email | OTP plugin? }]
|- {{ FrameworkTodo | messagecore/misc/mailinglist.cpp | | | Extracts ML information from email |s }}
|- {{ FrameworkDone | messagecore/misc/mdnstateattribute.cpp | | | | Move to mailcommon/mdn }}
|- {{ FrameworkTodo | messagecore/settings | | | KCFG file; seems to contain Reader and Composer settings | kill? LM: Why ? we need settings no? DV: but do we need reader and composer settings there? }}
|- {{ FrameworkTodo | messagecore/util | | | String-handling utilities, some deprecated | }}
|- {{ FrameworkTodo | messagelist | | | The entire messagelist pane from KMail, Akonadi-specific implementation of the abstract MessageList::Core::StorageModel | ) }}
|- {{ FrameworkTodo | messagelist/core | | | The Model, View, themes and delegates | }}
|- {{ FrameworkTodo | messagelist/utils | | | Configuration dialogs for aggregation, threading and themes | }}
|- {{ FrameworkTodo | messageviewer | | | | }}
|- {{ FrameworkDone | messageviewer/a11y | | | A11y for viewer, does not really look like it works (the implementation is mostly empty | Removed }}
|- {{ FrameworkTodo | messageviewer/adblock | | | Pretty complete adblock for emails | Make it a plugin? }}
|- {{ FrameworkTodo | messageviewer/antispam | | | Read antispam mail headers and shows the results in UI + some configuration | OTP part/plugin? }}
|- {{ FrameworkTodo | messageviewer/findbar | | | Search bar for the webview | }}
|- {{ FrameworkTodo | messageviewer/grantleefilters | | | Mail-specific Grantlee::Filters | }}
|- {{ FrameworkTodo | messageviewer/gravatar | | | Fetch sender's face from interwebs | }}
|- {{ FrameworkTodo | messageviewer/header | | | Mail header styles | }}
|- {{ FrameworkTodo | messageviewer/htmlwriter  | | | Dump rendered email HTML to file? For debugging | }}
|- {{ FrameworkTodo | messageviewer/interfaces | | | OTP interfaces? | }}
|- {{ FrameworkTodo | messageviewer/job | | | Attachment, Kleo, Mail-to-event/note jobs | }}
|- {{ FrameworkTodo | messageviewer/notify | | | Get KNotifications when new adblock list is available :-O | }}
|- {{ FrameworkTodo | messageviewer/scamdetection | | | Detect possible scam mails using different heuristics | OTP part/plugin? }}
|- {{ FrameworkTodo | messageviewer/themes | | |  Grantlee themes examples | }}
|- {{ FrameworkTodo | messageviewer/viewer | | |  The Viewer + OTP | }}
|- {{ FrameworkTodo | messageviewer/viewerplugins | | | Good start on viewer plugins, few default plugins | }}
|- {{ FrameworkTodo | messageviewer/widgets | | | | }}
|- {{ FrameworkTodo | noteshared | | | Share Notes via local network (?) yep and used by knotes + kontact/notes + noteagent | }}
|- {{ FrameworkTodo | pimcommon/acl | | | Collection ACL settings/widgets | Move to mailcommon/collectionpage? used in korganizer/kaddressbook. So no create a new dependancy no ? VK: something for libakonadi maybe? | DV: makes sense  ML: we can't, it depends against kimap => we can't add kimap dependancy against libakonadi no ?}}
|- {{ FrameworkTodo | pimcommon/autocorrection | | | Used in composer only | Use Sonnet instead? How ?:) }}
|- {{ FrameworkDone | pimcommon/baloodebug | | | | Move to PIM Search, rename LM: Ok why not. But we add dependancy against it for kaddressbook, korganizer too DV: it's a debug tool, the dep should be optional/runtime }}
|- {{ FrameworkTodo | pimcommon/customtools | | | Interface for custom (composer?) plugins, shorturl and translator plugins | move to composer? LM: no it used in blogilo too.}}
|- {{ FrameworkDone | pimcommon/gravatar | | | | Merge with messageviewer/gravatar . LM: We use it in kaddressbook so we can't merge in messageviewer otherwise kaddressbook will depend against messageviewer DV: then let's create lib(k)gravatar so that we have everything in one place? }}
|- {{ FrameworkTodo | pimcommon/manageserversidesubscription | | | Dialog to mange server-side subscription - IMAP/Kolab specific | move to the resources? }}
|- {{ FrameworkTodo | pimcommon/migration | | | Migrate app config and data files for KDE4->KF5 | }}
|- {{ FrameworkTodo | pimcommon/settings | | | KCFG for individual submodules, IMO each submodule should have its own settings | }}
|- {{ FrameworkTodo | pimcommon/shareserviceurlmanager | | | | KPurpose/KSocial/KIPI/standalone framework? }}
|- {{ FrameworkTodo | pimcommon/shorturl | | | Configure and talk to URL shortener services | KPurpose/KIPI candidate, or  a standalone framework? LM: Already merge in customtools plugins shorturl }}
|- {{ FrameworkTodo | pimcommon/sievehighlighter | | | | move to libksieve? }}
|- {{ FrameworkTodo | pimcommon/storageservice | | | Our own Dolphin :) Talk to KPurpose/KIPI and merge it there, or create a standalone framework for remote storage access | }}
|- {{ FrameworkTodo | pimcommon/templatewidgets | | | Probably mail templates | move to mailcommon then LM: Not it's uses as template for libksieve in editor too }}
|- {{ FrameworkTodo | pimcommon/temporaryfile | | | Create temporary dir for opening attachments | mailcommon/mailviewer. LM: No used in kaddressbook too. }}
|- {{ FrameworkTodo | pimcommon/texteditor | | | Our very own Kate :-) | Kill and use KTextEdit? LM: no :) see code to see that it's not just a ktextedit :) }}
|- {{ FrameworkTodo | pimcommon/texttospeech | | | TTS abstraction (currently hardcodes unreleased QTextToSpeech). Do we even need an abstraction (once QTTS is released) LM: No released as official until 5.7| }}
|- {{ FrameworkTodo | pimcommon/translator | | | Talks to Google Translate to translate your emails. GT does not have an API, so not a good candidate for KGAPI, but could be merged to the translate plugin that lives somewhere in messageviewer or mailcommon? LM: we can't merge as we use in messageviewer and mailcommon}}
|- {{ FrameworkTodo | pimcommon/util | | | .... | }}
|- {{ FrameworkTodo | pimcommon/util/createresource.cpp | | | Synchronously create an Akonadi resource + error handling | move to AgentManager? }}
|- {{ FrameworkTodo | pimcommon/util/editorutil.cpp | | | | }}
|- {{ FrameworkTodo | pimcommon/util/imapresourcecapabilitiesmanager.cpp | | | Queries IMAP server capabilities (by talking to the resource via DBus) | }}
|- {{ FrameworkTodo | pimcommon/util/networkutil.cpp | | | Singleton that holds if low-bandwidth mode is enabled | }}
|- {{ FrameworkTodo | pimcommon/util/pimutil.cpp | | | Random stuff | }}
|- {{ FrameworkDone | pimcommon/util/vcardutil.cpp | | | Replaces X-messaging/FOO-All by X-FOO in raw vcard ??? Yep otherwise in owncloud messaging was loosing VK: move to KContact's vcard code? DV: +1 | }}
|- {{ FrameworkDone | pimcommon/webshortcut | | | Gain access to webshortcuts configured in webshortcuts KCM | Will move in kiowidget}}
|- {{ FrameworkTodo | pimcommon/widgets | | | .... | }}
|- {{ FrameworkTodo | pimcommon/widgets/annotationdialog.cpp | | | Create item notes (annotations) | }}
|- {{ FrameworkTodo | pimcommon/widgets/configureimmutablewidgetutils.cpp | | | | kconfig? }}
|- {{ FrameworkTodo | pimcommon/widgets/customtextedit.cpp | | | In case the 2 editors in pimcommon/texteditor are not enough | }}
|- {{ FrameworkTodo | pimcommon/widgets/customtreeview.cpp | | | QTreeView that can show a centered text when it's empty VK: turn into QAIV decorator and move to KItemViews? LM: seems a good idea| }}
|- {{ FrameworkDone | pimcommon/widgets/emailaddressrequester.cpp | | | KLineEdit with button to choose contact from address book | akonadi-contact? LM: Seems logic }}
|- {{ FrameworkTodo | pimcommon/widgets/kactionmenuchangecase.cpp | | | creates KActions to change convert word or sentece to lower/upper case. How is this even useful? :D | }}
|- {{ FrameworkInProgress | pimcommon/widget/lineeditwidgetcompleter.cpp | | | KLineEdit with special context-menu action to clear its KCompletion history | kwidgetaddons? LM: Perhaps extends klineedit }}
|- {{ FrameworkDone | pimcommon/widget/manageaccountwidget.cpp | | | Add/remove/configure Akonadi resources widget| Move to libakonadi }}
|- {{ FrameworkTodo | pimcommon/widget/minimumcombobox.cpp | | | Literally a tiny KComboBox | }}
|- {{ FrameworkTodo | pimcommon/widget/renamefiledialog.cpp | | | | }}
|- {{ FrameworkTodo | pimcommon/widget/simplestringlisteditor.cpp | | | QDialog to add/modify/remove/reorder list of strings | kwidgetaddons? VK: isn't this the same as KEditListWidget?  ML: no because we can't redefine add dialog box.}}
|- {{ FrameworkTodo | pimcommon/widget/slidecontainer.cpp | | | A hidden-by-default widget that slides in when shown. Do we even need this fancy stuff? | }}
|- {{ FrameworkTodo | pimcommon/widget/spellchecklineedit.cpp | | | PimCommon::RichTextEdit with magical powers | }}
|- {{ FrameworkTodo | sieveeditor | | | Sieve IDE | }}
|- {{ FrameworkTodo | storageservicemanager | | | Our own Dolphin, part 2 | }}
|- {{ FrameworkTodo | templateparser | | | Message templates (reply/forward/... templates) parser, editor and manager | }}

Latest revision as of 08:07, 19 April 2019

kdepimlibs Epic

Status

Status as at 31 Januray 2015.

  • 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 (A big porting is port to QLocale)
  • Maintainers are requested to fill in the Code Units grid below
  • kdepimlibs is split in several modules.
  • Some modules were renames : KABC->KContacts, kpimidentity->kidentitymanagement etc.
  • KPimUtils was removed (merge in kf5)

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
DONE 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
DONE qgpgme A C++ wrapper for gpgme Marc Mutz QtCore only
DONE 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
DONE 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 Moved to kdepim
TODO agents/invitations Map iTip invitations to a calendar
TODO agents/maildispatcher Mail sending
TODO agents/migration Migration agent
TODO agents/newmailnotifier New Mail Notfications
TODO cmake
TODO defaultsetup Akonadi
TODO doc
TODO kcm
TODO kioslave Akonadi KIO integration
DONE kresources Akonadi KResources Kevin Krammer to be removed killed
DONE libkdepim-copy killed
TODO migration Plug-ins for the migration agent, and other migration tools
DONE opensync killed
TODO plugins Serializer Plugins
DONE qml removed
DONE resources/agentserver removed
TODO resources/birthdays Birthday Resources
TODO resources/contacts Local Addressbook Tobias König
DONE resources/facebook Facebook Resource Martin Klapetek removed
TODO resources/ical iCal File Resource
TODO resources/imap IMAP Resource Christian Mollekopf
DONE resources/kabc KABC KRes Resource Kevin Krammer to be removed removed
DONE resources/kcal KCal KRes Resource Kevin Krammer to be removed
TODO resources/kolab Kolab Resource Christian Mollekopf
TODO resources/maildir Maildir Resource Andras Mantia
TODO resources/mixedmaildir KMail1 legacy resource
DONE resources/nntp NNTP Resource removed
TODO resources/pop3 POP3 Resource Thomas McGuire
TODO resources/vcard VCard file resource
TODO resources/akonotes
TODO resources/dav
TODO resources/google Dan Vrátil
TODO resources/icaldir
TODO resources/kalarm David Jarvie
DONE resources/kdeaccounts removed
DONE resources/localbookmarks removed
DONE resources/mailtransport_dummy Mailtransport Unit Test Resource (move to mailtransport?) removed
TODO resources/mbox MBox file resource
DONE resources/nepomuktag Tag folders removed
TODO resources/openxchange
TODO resources/shared
TODO resources/vcarddir
DONE resourcetester killed
DONE 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?
DONE akonadi/socialutils Tier 3? gone
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
DONE gpgme++ moved to GnuPG upstream
DONE includes N/A distribute to splitted modules, auto-generate?
DONE kabc remove KResource dependencies
DONE 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)
DONE kholidays Tier 1 High (Workspace) moved to KF5
TODO kimap
DONE kioslave/imap4 N/A To be deleted
DONE kioslave/ldap
DONE kioslave/mbox
DONE kioslave/nntp
DONE kioslave/pop3
DONE kioslave/sieve
DONE kioslave/smtp
TODO kldap
TODO kmbox
TODO kmime
TODO kontactinterface
TODO kidentitymanager
TODO kpimtextedit
DONE kpimutils removed
DONE kresources N/A deleted
DONE ktnef remove KCal dependency
DONE kxmlrpcclient moved to KF5
TODO mailtransport
DONE microblog removed
DONE qgpgme moved to GnuPG upstream
DONE syndication moved to KF5

kdepim Tasks

Status Framework Tier Assigned Notes Action/Destination
TODO calendarsupport
TODO composereditor-ng
TODO eventviews Merge with calendarsupport? VK: or keep separate for core/ui separation, like we have for messagecore vs. messageviewer/list?
TODO grantleeeditor Standalone Grantlee template IDE
TODO grantleetheme Grantlee theme (template sets) manager API. Could maybe be replaced by KPackage?
TODO incidenceeditor-ng
DONE kaddressbook/gravatar Upload avatar to Gravatar Merge with messageviewer/gravatar and pimcommon/gravatar, move to KGravatar/KPurpose/KIPI/...? libgravatar created
TODO kaddressbook/sendmail Extract emails from Akonadi::Items with KContacts Move to akonadi-contact? LM : it's very specific to kaddressbook not sure that it will useful for other but why not.
TODO kaddressbookgrantlee ??? kaddressbook + viewer vcard in kmail plugins
TODO kalarm/lib The KAlarm Widget Toolkit :) Kill?
TODO kdgantt2 Tier 2 Might need some cleanup/polish work, but basically ready kgantt/kgraphs? - same as extragear/graphics/kdiagram?
TODO libfollowupreminder Agent + client code
TODO libkdepim/addressline Smart KLineEdit that autocompletes emails from addressbook and PIM Search, includes configuration dialog KContactWidgets/AkonadiContacts? VK: LDAP dependency might prevent moving upstream
TODO libkdepim/job Adding contacts to addressbook, whitelisting addresses to show HTML/images by default. KMail specific? kmail?
TODO libkdepim/ldap LDAP KCM + search job kldap?
TODO libkdepim/misc/broadcaststatus.cpp Singleton to allow creating status notifications (in app statusbar) from any code, apps can listen to it. Used in kmail/akregator/kontact
TODO libkdepim/misc/emailvalidator.cpp QValidator for email addresses. Depends on KEmailAddress from KCodecs
IN PROGRESS libkdepim/misc/kcursorsaver.h dvratil RAII helper for temporarily changing mouse cursor. kwidgetaddons? or even QtGui?
TODO libkdepim/misc/maillistdrag.cpp Drag&drop code for emails (??)
TODO libkdepim/misc/uistatesaver.cpp Store/restore state of QSplitter, QTabWidget, QTreeView or QComboBox widgets in a config file kconfig?
TODO libkdepim/multiplyingline Auto-adds new widget row when you start filling the last one kwidgetaddons?
TODO libkdepim/kprefs Looks like something KConfigXT can do today, but probably predates it a bit ( (c) 2001 by Cornelius)/ Used heavily by KOrganizer and little by Kontact (probably due to KOrganizer) port users to KConfigXT and remove
TODO libkdepim/progresswidget Advanced progress/tasks reporting, has Akonadi::AgentManager to show resource tasks progress kwidgetaddons? LM: you want to add a dependancy against akonadi for kwigetsaddons good luck :) VK: KDevelop has a copy of this, so maybe we can at least have parts of this (without Akonadi dependency, obviously) in widgetaddons? LM: Seems logical
DONE libkdepim/proxy KColumnFilterProxyModel and QuotaColorProxyModel (has Akonadi dependency) kitemmodels, libakonadi
TODO libkdepim/widget Random widgets kwidgetaddons?, akonadi-widgets?
TODO libkdepimdbusinterfaces KOrganizer DBus interfaces (.xml) + some . Why is it even a stanadlone library? Because it uses kmail xml/korganizer xml too
TODO libkleo KF5Kleo? (KF5Crypto?))
TODO libksieve Sieve interaction library + Sieve widgets Sieve Framework (like KIMAP)
TODO libsendlater Agent + client code
TODO mailcommon
TODO mailcommon/filter Local mail filters
TODO mailcommon/collectionpage Collection properties dialog pages Akonadi? it needs some mailcommon dependancy
TODO mailcommon/folder Mail folders abstraction and glue-code between the abstraction and Akonadi collections AkonadiMime?
TODO mailcommon/job Random folder-related jobs
TODO mailcommon/search Widgets and some logic for the big Search dialog
TODO mailcommon/snippets ??
TODO mailcommon/tags Akonadi Tag abstraction. Merge with tag widgets from libkdepim?
TODO mailcommon/widget Random widgets
TODO mailcommon/mdn SendMDNHandler kmail? it used by filter from mailcommon
TODO mailcommon/util mailutil.h - random helper functions
TODO mailcommon/kernel The Kernel singleton that unifies access to various interfaces
TODO mailimporter
TODO mboximporter App to import MBox
TODO messagecomposer email composer and tons of helper code and utilities
TODO messagecore see messagecore/src/README for content guidelines
TODO messagecore/attachment Attachment handling code merge with messagecomposer/attachment?
TODO messagecore/misc/mailinglist.cpp Extracts ML information from email s
DONE messagecore/misc/mdnstateattribute.cpp Move to mailcommon/mdn
TODO messagecore/settings KCFG file; seems to contain Reader and Composer settings kill? LM: Why ? we need settings no? DV: but do we need reader and composer settings there?
TODO messagecore/util String-handling utilities, some deprecated
TODO messagelist The entire messagelist pane from KMail, Akonadi-specific implementation of the abstract MessageList::Core::StorageModel )
TODO messagelist/core The Model, View, themes and delegates
TODO messagelist/utils Configuration dialogs for aggregation, threading and themes
TODO messageviewer
DONE messageviewer/a11y A11y for viewer, does not really look like it works (the implementation is mostly empty Removed
TODO messageviewer/adblock Pretty complete adblock for emails Make it a plugin?
TODO messageviewer/antispam Read antispam mail headers and shows the results in UI + some configuration OTP part/plugin?
TODO messageviewer/findbar Search bar for the webview
TODO messageviewer/grantleefilters Mail-specific Grantlee::Filters
TODO messageviewer/gravatar Fetch sender's face from interwebs
TODO messageviewer/header Mail header styles
TODO messageviewer/htmlwriter Dump rendered email HTML to file? For debugging
TODO messageviewer/interfaces OTP interfaces?
TODO messageviewer/job Attachment, Kleo, Mail-to-event/note jobs
TODO messageviewer/notify Get KNotifications when new adblock list is available :-O
TODO messageviewer/scamdetection Detect possible scam mails using different heuristics OTP part/plugin?
TODO messageviewer/themes Grantlee themes examples
TODO messageviewer/viewer The Viewer + OTP
TODO messageviewer/viewerplugins Good start on viewer plugins, few default plugins
TODO messageviewer/widgets
TODO noteshared Share Notes via local network (?) yep and used by knotes + kontact/notes + noteagent
TODO pimcommon/acl Collection ACL settings/widgets Move to mailcommon/collectionpage? used in korganizer/kaddressbook. So no create a new dependancy no ? VK: something for libakonadi maybe?
TODO pimcommon/autocorrection Used in composer only Use Sonnet instead? How ?:)
DONE pimcommon/baloodebug Move to PIM Search, rename LM: Ok why not. But we add dependancy against it for kaddressbook, korganizer too DV: it's a debug tool, the dep should be optional/runtime
TODO pimcommon/customtools Interface for custom (composer?) plugins, shorturl and translator plugins move to composer? LM: no it used in blogilo too.
DONE pimcommon/gravatar Merge with messageviewer/gravatar . LM: We use it in kaddressbook so we can't merge in messageviewer otherwise kaddressbook will depend against messageviewer DV: then let's create lib(k)gravatar so that we have everything in one place?
TODO pimcommon/manageserversidesubscription Dialog to mange server-side subscription - IMAP/Kolab specific move to the resources?
TODO pimcommon/migration Migrate app config and data files for KDE4->KF5
TODO pimcommon/settings KCFG for individual submodules, IMO each submodule should have its own settings
TODO pimcommon/shareserviceurlmanager KPurpose/KSocial/KIPI/standalone framework?
TODO pimcommon/shorturl Configure and talk to URL shortener services KPurpose/KIPI candidate, or a standalone framework? LM: Already merge in customtools plugins shorturl
TODO pimcommon/sievehighlighter move to libksieve?
TODO pimcommon/storageservice Our own Dolphin :) Talk to KPurpose/KIPI and merge it there, or create a standalone framework for remote storage access
TODO pimcommon/templatewidgets Probably mail templates move to mailcommon then LM: Not it's uses as template for libksieve in editor too
TODO pimcommon/temporaryfile Create temporary dir for opening attachments mailcommon/mailviewer. LM: No used in kaddressbook too.
TODO pimcommon/texteditor Our very own Kate :-) Kill and use KTextEdit? LM: no :) see code to see that it's not just a ktextedit :)
TODO pimcommon/texttospeech TTS abstraction (currently hardcodes unreleased QTextToSpeech). Do we even need an abstraction (once QTTS is released) LM: No released as official until 5.7
TODO pimcommon/translator Talks to Google Translate to translate your emails. GT does not have an API, so not a good candidate for KGAPI, but could be merged to the translate plugin that lives somewhere in messageviewer or mailcommon? LM: we can't merge as we use in messageviewer and mailcommon {{{5}}}
TODO pimcommon/util ....
TODO pimcommon/util/createresource.cpp Synchronously create an Akonadi resource + error handling move to AgentManager?
TODO pimcommon/util/editorutil.cpp
TODO pimcommon/util/imapresourcecapabilitiesmanager.cpp Queries IMAP server capabilities (by talking to the resource via DBus)
TODO pimcommon/util/networkutil.cpp Singleton that holds if low-bandwidth mode is enabled
TODO pimcommon/util/pimutil.cpp Random stuff
DONE pimcommon/util/vcardutil.cpp Replaces X-messaging/FOO-All by X-FOO in raw vcard ??? Yep otherwise in owncloud messaging was loosing VK: move to KContact's vcard code? DV: +1
DONE pimcommon/webshortcut Gain access to webshortcuts configured in webshortcuts KCM Will move in kiowidget
TODO pimcommon/widgets ....
TODO pimcommon/widgets/annotationdialog.cpp Create item notes (annotations)
TODO pimcommon/widgets/configureimmutablewidgetutils.cpp kconfig?
TODO pimcommon/widgets/customtextedit.cpp In case the 2 editors in pimcommon/texteditor are not enough
TODO pimcommon/widgets/customtreeview.cpp QTreeView that can show a centered text when it's empty VK: turn into QAIV decorator and move to KItemViews? LM: seems a good idea
DONE pimcommon/widgets/emailaddressrequester.cpp KLineEdit with button to choose contact from address book akonadi-contact? LM: Seems logic
TODO pimcommon/widgets/kactionmenuchangecase.cpp creates KActions to change convert word or sentece to lower/upper case. How is this even useful? :D
IN PROGRESS pimcommon/widget/lineeditwidgetcompleter.cpp KLineEdit with special context-menu action to clear its KCompletion history kwidgetaddons? LM: Perhaps extends klineedit
DONE pimcommon/widget/manageaccountwidget.cpp Add/remove/configure Akonadi resources widget Move to libakonadi
TODO pimcommon/widget/minimumcombobox.cpp Literally a tiny KComboBox
TODO pimcommon/widget/renamefiledialog.cpp
TODO pimcommon/widget/simplestringlisteditor.cpp QDialog to add/modify/remove/reorder list of strings kwidgetaddons? VK: isn't this the same as KEditListWidget? ML: no because we can't redefine add dialog box.
TODO pimcommon/widget/slidecontainer.cpp A hidden-by-default widget that slides in when shown. Do we even need this fancy stuff?
TODO pimcommon/widget/spellchecklineedit.cpp PimCommon::RichTextEdit with magical powers
TODO sieveeditor Sieve IDE
TODO storageservicemanager Our own Dolphin, part 2
TODO templateparser Message templates (reply/forward/... templates) parser, editor and manager