I did some more work on tinymail this evening: I’ve been putting the infrastructure for sending mails into place. I made sure creating a message header, a mime part and a message is now possible. I refactored the account-type a little bit (there’s now a store-account and a transport-account). And I created a few unit tests that test the stream infrastructure (as this has to work if you want to create mime parts).
I’ve also been working on finishing the support for POP mailboxes. I adjusted the header type so that it supports folder types with support for summaries and without such support. I added a special case in the (now new) store-account camel implementation, as in camel POP accounts don’t handle folders like IMAP accounts (there’s only one real remote folder, the INBOX folder).
Hmm, if all the crap I just mentioned is working correctly, I might release some first version of the framework. Until then, don’t expect any API stability. Even after such a release it’s going to be likely that the API will change a lot.
Anyway, there’s some people (on IRC) who’ve been asking me questions like: why are you doing this?!.
The answer isn’t “to build a replacement for Evolution”. Nor would making it use libtinymail make the current implementation faster. Probably a little bit slower. The simple reality is that libtinymail would reduce the amount of features to an absolute minimum. It would improve memory usage. Probably a lot. But that isn’t an interesting conclusion as the evil eye of tinymail isn’t looking at Evolution. It sure looks like to much people are hoping it would start doing that. It wont. (It can’t, Evolution is multiple years of work for a single person)
That eye is looking only at the many mobile devices that don’t have a nice E-mail client at this moment. It’s not strictly focused at gtk+-capable such devices. It’s also not said that it’ll be camel-only. However, at this moment there’s no reason to switch that technology. I’m “using” camel because it supports many providers and because it has relatively small memory requirements.
Anyway, so why am I doing it personally? Because I started enjoying working on it? Because it’s a challenge? I can give you many reasons. Above all, I think .. reasons like “I want to show people how to do it”, “prove of concept”, “learning”, etcetera.
I’ve also been asked whether I’m planning to support message threading. I’m not planning it at this moment. Feel free to send me some analysis on whether the algorithm can be used with my “only load the header-info of visible rows” ideas. Probably not. On a mobile device, loading header-info of invisible rows isn’t a good idea when displaying large folders. I’ve been thinking about sorting when messages get received and storing the tree-index. Rather than sorting each time a folder is to be displayed. That way you can let the sorting (which basically means reading all header-info) happen on idle moments. Nevertheless would that consume device battery. So perhaps do it while the device is charging?