PIM/Akonadi/PortingStatus

From KDE Community Wiki

This page lists various pieces that are being ported to Akonadi. The intent of the page is to give a list of features and bugs.

Since many of those pieces are complete rewrites, this page lists the features that were present in the old implementation. Those need to be ported to the new Akonadi-based implementation. The list of needed features probably will grow during development and testing, as will the bug list It also lists optional features, which would be nice to have, but are not present in the old implementation Also some bugs are listed.

There is also an extremely outdated todo list at PIM/Akonadi

If you have implemented a feature or fixed a bug, please strike the item out.

Bigger Stuff

Akregator Port

Assigned to: Frank

Old page: PIM/RSS_framework_for_Akonadi

New page: PIM/Akregator_port

Branches used now:

kdepim/akregator_port

contains akregator2 (akonadi ported version of akregator)

kdepimlibs/akregator_port

contains krss (library shared among rss resources)

kdepim-runtime/akregator_port

contains krsslocal (resource for local storage of rss subscriptions)

More details: blog post 1 blog post 2

Status

20120403: Porting started again.

Bugs

  • KSelectionProxyModel causes a crash when a new feed is added and then deleted

Needed features

  • [IN PROGRESS] (Alessandro) move interval fetching and archive options to resource configuration

KContactManager

Assigned to: Tobias, Sebastian

Bugs

  • After creating a contact group, it doesn't show up in the left pane. Should it?
  • Editing contact groups: Should use auto-completion, drag&drop and a "Select..." button (similar to KMail's recipient picker)
  • Editing contact groups: Gives me error message that I didn't define a name, when I only entered a mail address. Note that most people don't know the syntax for this, which is "name <mail>".
  • "All Contacts" should be expanded and selected by default
  • Crashes when clicking on "Reload" on "All Contacts"
  • Deleting a contact group (and possibly a contact as well) leaves a funny empty space in the middle pane
  • Switching between "All Contacts" and my addressbook folder here has a delay of > 1s, with about 150 contacts
  • Ctrl+A should trigger select all, not add addressbook
  • In the editor, the "Coordinates" panel is completely empty
  • In the properties dialog of an address book, the "Cache" tab is way too complicated for normal users
  • Changing the name of an addressbook in the properties dialog earses the name and the icon
  • The name of the default addressbook is "std.vcf"

Needed Features

  • Display additional columns in the list of contacts
  • LDAP
  • Crypto page in the editor, like in KAddressbook
  • Settings Dialog (at least it needs to be able to be disabled from the Kontact settings dialog)
  • Remove KAddressbook and the KAddressbook Kontact plugin
  • Port all users of the former KAddressbook D-Bus interface
  • Find and remove all references to KAddressbook in the kdepim directory

MBOX

Assigned to: Bertjan

Needed features

  • [DONE] Implement purging of deleted messages
  • [DONE] Port the resource to SingleFileResource
  • [DONE] Implement itemChanged()
  • [DONE] Fix the MBox locking code.
  • [IN PROGRESS] Find out if the file has changed since the previous time it was loaded (SingleFileResource problem?)

Other

  • [IN PROGRESS] Unit tests

POP3

Assigned to: Thomas

Bugs

  • Possible mail duplication

Needed Features

  • Config dialog (Igor is working on this)
  • Default inbox (->LocalFolders)
  • Filter on server (depends on the filter framework)
  • Migration of old KMail accounts
  • Abort request
  • Precommands

Optional Features

  • Delete on server (bug 31114)


IMAP

Assigned to: Kevin

Needed Features

  • Sieve Settings in the config UI
  • Support for namespaces

Kolab

Assigned to: Andris


KMail Reader

Assigned to: Andris

Notes

Needs to be ported away from KMMessage and mimelib to KMime.

Needed Features

  • Loading attachments on demand when viewing and saving them
  • Displaying text and image attachments inline, depending on setting (attachment strategy)
  • Different header styles
  • MIME part formatters (invitations, vcards, diffs etc)
  • Context menu actions (shared with the message list)
  • Source viewer
  • MIME part tree viewer
  • Separate reader main window
  • Viewing only one selected MIME part / MIME sub-tree (e.g. encapsulated messages)
  • Separate reader window marks the message as read after some time
  • Asynchronity (reader should not block when displaying multi-megabyte mail)
  • Fallback and override options for the charset encoding
  • Crypto

Optional Features

  • New styles based on on Grantlee. Steve says he'll eventually look at that.
  • Port away from KPGP to libkleo


KMail Composer (non-GUI)

Assigned to: Constantin (gsoc)

Notes

Needs to be ported from KMMessage and mimelib to KMime.

Needed Features

  • Crypto
  • Attachments
  • Multipart/Alternative (HTML)
  • Inline images
  • Asynchronity (should not block on long composing tasks, like crypto)
  • All kind of weird charset and encoding stuff
  • Custom MIME headers from the settings
  • Compose as draft and compose as sendable message mode
  • Unit tests. This stuff has been very brittle in the past

Optional Features

  • The composer and the composer GUI both keep a "reference message" around, which is IMHO complicated and weird. Get rid of that through refactoring


KMail Folder List

Assigned to: Kevin

Notes

The current KMail folder list is unfortunately not model/view based. The new folder list should probably be based on existing Akonadi models and views.

Needed Features

  • Sort by drag & drop or automatic (controlled by setting)
  • Drag & drop support for copying and moving folders and messages
  • Context menu with all old actions
  • Total, Unread and Size column: Collapsing sums things up, unread count can be displayed with the folder name if column is hidden
  • Default icons for IMAP root collections, drafts, templates, inbox etc (can be partly handled by new LocalFolders class I guess)
  • Configurable item size
  • Favorite folder view
  • Restoring of expanded/collapsed state (and last selected folder?) after restart
  • Optional quick filter edit
  • Fancy tooltips
  • Folder properties dialog with all the old stuff in it
  • Folder selection dialog (used for the "jump to" function, among others)

Optional Features

  • Right-clicking without selecting
  • Multi selection for deleting multiple folders at once and a combined properties dialog


KMail Message List

Assigned to: Kevin

Notes

Talk to Olivier Trichet (nive), he is in the process of porting KNode to the message list framework.

The message list is fairly well abstracted into KMail-specific parts and generic parts. For porting to Akonadi, basically only the storage model needs to be rewritten, the model that does the actual work of threading and grouping can be left untouched

Needed Features

  • Fast loading of the message list. This can be tricky, the many indirections of Akonadi might make it too slow
  • Only the headers should be fetched, not the complete message
  • Setting stati and tags of mails should work

Optional Features

  • Very long term: Separate threading into an own agent and store threading information as attributes


Mail Dispatcher Agent & Outbox interface

Assigned to: Constantin (gsoc)

Notes

No big needed features added below, AFAIK everything is already implemented.

Needed Features

  • Abort requests for agents
  • Integration into KMail (more to do when the message list view is ported to Akonadi)
  • retry sending and "send queued"
  • move-to-sent-mail-collection (blocker: intra-resource moves)
  • Polishing
  • API Review

Optional Features

  • Displaying the progress and status per-item in the message list with a special outbox theme would be very cool
  • Sending by due date


KOrganizer Agenda View

Assigned to: Sebastian


KOrganizer Month View

KOrganizer Timeline View

KOrganizer Todo View

Notes

Already model-view based in old KOrganizer


KResource Bridges & Migration

Assigned to: Kevin

  • KOrganizer doesn't have any resource by default for new users (unit test for this exists)
  • Kontact is *very* crashy in the summary and todo list
  • Hierarchical todo don't work anymore

Needed Features

  • Unit tests (->Thomas)


Filtering System

Assigned to: Szymon

Needed Features

  • Pluggable filter actions and rules
  • Nice GUI editor
  • All filter actions and rules from old KMail should be implemented
  • Library should be usable outside of the agent, e.g. for POP3 on-server filtering.
  • Manual and automatic filtering
  • Filtering should be possible on incomplete mail (headers only). When a filter rule or action detects that it needs the complete body, that should be fetched on demand
  • Don't re-upload the mail when no filter action changed the mail (important for IMAP)
  • Filtering should be invisible to clients
  • Not all new items should trigger automatic filtering -> We might need a flag to explicitly make items filterable, otherwise items get filtered when they were manually added by the user
  • Filtering must not lose messages
  • Automated tests. Filtering was *very* brittle in the past, causing duplicate and lost messages
  • Migration of old filters

Optional Features

  • Make the sieve script editor for IMAP servers an actual GUI editor
  • Maybe filter rules can be re-used for searching?


Search

Notes

Nobody really knows how this should be done (if one does, please explain here how it should work!). There are server-side searches (IMAP and LDAP) and client side searches possible.

Probably should use Nepomuk.

Needed Features

  • At least local searches should be possible, like in current KMail. There should also be a search window like before.
  • Virtual search folders


Migration

Needed Features

  • Migrate KMail accounts to Akonadi resources. The Akonadi resources should support all options of the old account pages. (-> Jon Armond)
  • Migrate KMail status flags and tags from the index files
  • Ability to have a mixed mbox/maildir tree
  • Migrate the dimap cache (urgh: unsynced messages!)

Smaller Stuff

IMAP Load on Demand

Assigned to: Andris, Kevin, Volker

Notes

Related to the reader implementation. Might need changes in the mail serializer, KMime, the IMAP resource, the server(?)

Needed Features

  • Should be possible to fetch messages without fetching the big attachments.
  • When saving attachments, fetch them on demand.
  • Attachments inside signatures should not be fetched on demand

Optional Features

  • Disconnected IMAP with attachment load on demand (headers and message text cached, but not big attachments)
  • Bonus points for zero-copy streaming when saving IMAP attachments to disk


Progress Reporting

Assigned to: Constantin

Notes

The progress of the agents should be hooked up into the progress manager of libkdepim. -> AgentProgressMonitor

Needed Features

  • Tracking progress and status texts
  • Abort requests


Local Folders

Assigned to: Constantin (gsoc)

Needed Features

  • Inbox, drafts and templates
  • Move to kdepimlibs/akonadi/kmime
  • Set standard itemsicons for the collections, like in KMail

Optional Features

  • Option for volatile outbox (not stored on disk)
  • Option for no sent-mail collection



Akonadi Resource-based Mail Transport

Assigned to: Constantin

Needed Features

  • Re-design (TransportResource is probably not needed; its job can be accomplished in ResourceBase with a signal and a D-Bus adaptor. (?))
  • List transport-enabled Akonadi resources directly in transport type selector, and configure them on demand
  • Scrap the wizard. Since Akonadi resources can't be configured with an embeddable widget / kpart (yet?), we'll have to stick to dialogs anyway.


KMailCVT replacement

Notes

Ideally, KMailCVT should be rewritten to allow export as well, in addition to import. Also, KMailCVT could use Akonadi resources for the job, then we would need one resource per supported import/export type. This would also give us nice backup schemes, like exporting the IMAP mails to an mbox.