On Thursday, 17 October 2013 19:02:21 CEST, Kevin Krammer wrote:
It's common to have sent mail in some other mailbox -> the mapping
cannot
be done without fully reconstructing it on the client side, and that
needs
fetching fetching a subset of headers from each and every message.
That's
expensive.

Or using local header caches which leads to trolls claiming the program
is
"bloated".

Trojita already caches these headers locally; that's not a problem. The key difference is that Trojita does not have to load them *at all* for most of the messages now.

If a mailbox has, say, 50k messages, Trojita will *not* load their headers or envelopes or anything [1]; these data are only loaded for the messages which are visible on screen [2]. This works extremely well in practice, but it also has a major drawback: we cannot thread when the server doesn't support the THREAD extension, so there's no threading on GMail. They have their own proprietary extension and we might add support for it at some point in future, but it's not here just yet.

In my book, the speed difference wins big time -- just try opening a huge mailbox in Trojita and in your favorite mail client of choice and see the difference.

the MIIME tree parser needs to be designed in a way that it allows asynchronous completion of parts, because decryption might incur user interaction (typing passphrase), keyserver communication, etc.

Is the KDE's MIME parser reasonably Qt-only, or does it depend on KDE's utility classes? So far, Trojita relied on the server-side IMAP parsing, so adding support for GPG is not "just" a matter of throwing a validator in. I don't mind designing and implementing the auxiliary structure myself, but having a standalone MIME parser would reduce the effort quite a bit. To me, the adaptor between $whatever-data-are-returned-by-the-parser and the MVC API expected by Trojita looks much simpler than a full-blown MIME parser. That said, I've always wanted to brush up my boost::spirit skills, so it might even be a fun project in the end.

Cheers,
Jan

[1] Anything but UID and FLAGS, which are arguably needed for various reasons that I explained in my thesis. These are, of course, also cached, and on decent IMAP servers it means almost no traffic on each mailbox sync.

[2] There's a configurable preload to make sure that we don't hit network on every mouse wheel move, etc.

--
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/

Reply via email to