Camel disksummary branch
There has been recent mention in blogs and elsewhere about this mysterious 'disksummary-branch', this is a development branch in CVS which went out on a limb, trying to fix all of the various performance, memory and design issues in the mail storage interfaces.
Some initial discussions on why this was thought to be a decent idea is covered on the Apps/Evolution/On-disk_summaries page, but this page will cover the actual implementation that ensued.
The implementation isn't really finished, but I will cover what was achieved so far, and where I was thinking it might be headed to. There is still significant work remaining, consider this a handover document.
Apps/Evolution/CamelDS.Folder The simplified folder interface
Apps/Evolution/CamelDS.FolderSummary The more complex folder summary interface
Apps/Evolution/CamelDS.Search Some enhancements to the search interface
Because the interfaces are more complex and more abstract, there is a concrete re-usable implementation as well:
Apps/Evolution/CamelDS.FolderSummaryDisk The libdb based summary implementation
Views are a completely new concept, designed to replace the aging vFolder interfaces and code. They are just automatically updated sub-indices on a per-folder basis, rather than 'saved searches'.
Apps/Evolution/CamelDS.ViewSummary, manages the list of views for a store and folder.
There are some new utilities required to implement all of this:
Apps/Evolution/CamelDS.Misc, is where they're described.
Apps/Evolution/Camel.Iterator, describes the camel iterators, an integral part of the disksummary branch.
Apps/Evolution/EDSDS.ESexp, the ESexp evaluator has been enhanced over the previous version.
Apps/Evolution/CamelDS.DataCache, the data-cache object has been enhanced over the previous version.
And then there are the new or radically altered backend implementations:
Apps/Evolution/CamelDS.IMAPX, all new IMAP implementation, with bells.
Apps/Evolution/CamelDS.Local, upgraded local providers.
Apps/Evolution/CamelDS.POP3, somewhat enhanced POP3 backend.