[Kde-pim] Porting KMail to KMime/Akonadi

Thomas McGuire mcguire at kde.org
Sun Oct 18 21:19:16 BST 2009


Hi Andras,

On Sunday 18 October 2009 00:03:05 Mantia Andras wrote:
>  here at the Akonadi sprint, my chosen task is to port KMail to the new
> millienium, so to use KMime and Akonadi. The Akonadi part is for the
> future, the KMime part is the present. With hacks, and bloody work, now
> I managed to make KMail compilable with many of its internal using KMime
> instead of KMMessage/KMMessageBase/KMMessageInfo/partNode/whatever. It
> compiles [*], though it doesn't link, sorry that would be too much for
> today. :)
>  Now, to be serious, some words about what I did: the idea is to get rid
> of the above classes. Instead use KMime::Message (for KMMessage) and
> KMime::Content for the others. As the KM* classes contain other helper
> methods and extra information about the messages, I did a similar
> approach as in the MessageViewer: create a helper namespace
> (MessageHelper) for the first type of the methods and a helper singleton
> class for the second (MessageInfo). The process of porting is the
> following:
> 
> A) porting away from KMMessage* and partNode:
> 
> 1) you look if there is a KMime call that can be use
> 2) Look if there is a MessageHelper/MessageInfo/MailViewer::NodeHelper
> method that you could use
> 3) if the answer is no, extract the missing method from KMMessage* into
> one of the helper classes.
> 
> B) porting to Akonadi:
> - I let someone to fill it, but it is more or less porting KMFolder and
> the related stuff.
> 
> Now, I did most of A, but with shortcuts, and that is because KMMessage
> is everywhere, and I wanted to have a code that we can work on together.
> Having a completely broken, not compiling KMail locally on my machine
> doesn't help team development. The shortcuts are commented out code
> parts. I tried to keep it consistent, so they look like:
>  #if 0 //TODO port to akonadi
>  ...not ported code
> #else
>     kDebug() << "AKONADI PORT: Disabled code in  " << Q_FUNC_INFO;
> #endif
> 
> This way it is possible both to grep for not ported code and to see at
> runtime if something is commented out.
> Unfortunately it isn't like that in every place, as when I did the first
> part of the port some weeks ago, I just commented out and added a TODO
> comment. And some other guys just commented out the code without any
> TODO...
> 
> Note that not all of such code needs to be ported, some commands are
> handled inside the message viewer, the imap/pop3/whatever code is now
> replaced by Akonadi.
> My suggestion would be for those interested in KMail porting to try to
> run (haha), and port by functionality. Try to execute something, see if
> it works, and what is the output and port if it is not ported.
>  The KMCommand* functionality is disabled 99%, but after two methods are
> ported (to retrieve the current message), there should be no problem
> porting them.
> 
>  Once done, comes the cleanup and code shuffling. Now there are methods
> in MessageViewer::NodeHelper and MessageViewer::ObjectTreeParser that
> are used in KMail and well, even in the composer part. I wouldn't give
> too much attention to this now, though.
> 
>  Probably there are other important things to tell, but it is late and
> I'm tired now. Have fun, and run/compile akonadi_ports only if you want
> to work on KMail (sorry for the others, please disable kmail in
> CMakeLists.txt if you work on other app, but compile the whole
> akonadi_ports).

I can just say that this is all awesome, great work :) I'll have a deeper look 
at some point when I have time, so I can't give any feedback right now. But I 
am sure this is all done well :)

Regards,
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-pim/attachments/20091018/1e119660/attachment.sig>
-------------- next part --------------
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list