Developer's musings
The next generation of Mail Store

Well! It's been a while since I've written here - in fact, I admit I'm a little shocked how long... Oops: and I had promised myself I wouldn't have these long absences any more.

In my defense, I should say that I have been far from idle. Since the release of Pegasus Mail v4.51 and Mercury/32 v4.72, I've begun work on what is probably the single biggest change in the core innards of the programs since they were introduced: I am rewriting the Mail Store. Let me clarify that: the move from my old Borland C compiler to Visual C was a huge effort, but it was mostly about porting and tidying the existing code: what I am doing now is rewriting the deepest core of the program from the ground up.

The "Mail Store" is that part of the program that manages folders, messages, attachments - in fact, anything low-level to do with any mail message you can read in your copy of Pegasus Mail. The Mail Store currently in use in Pegasus Mail is very old - much of it has not changed markedly since the Windows version of the program was originally released in 1993. While it works quite well, it has become increasingly difficult to maintain, and nearly impossible to expand: it also does not lend itself to being made available to third-party developers (such as extensions writers). More pertinently, though, the Pegasus Mail code was not an entirely happy port to Mercury - many of the lingering performance issues associated with the MercuryI IMAP server can be directly attributed to the age of the Mail Store code.

The aim of the Mail Store rewrite is to have one common library used by both programs, and to apply the lessons I have learned in nearly 20 years of writing this type of program to producing something that will have industrial strength and high performance. This development is the basis for all the good things I have planned for both programs - a high-speed webmail interface for Mercury, new secure and encrypted folder formats for both programs, and much faster, more robust IMAP support that can take advantage of IMAP extensions when they are available (something the current code cannot easily do). The new Mail Store will also be directly available to extension and Daemon developers - for the first time, they will have access to the Mail Store that is exactly equal to that enjoyed by Pegasus Mail and Mercury themselves.

The process is going excellently, and is now well advanced. The target I had originally set myself was to have the new Mail Store essentially finished and ready to bolt into Pegasus Mail by the end of this year: past experience told me that I was probably being optimistic (it's symptomatic of how difficult the industry has become that I can't remember the last time I was able to hit a deadline I set myself) - but to my surprise, it's actually looking as though I may be on schedule this time. Last week, the new code initialized itself, then scanned and read a new mail folder for the first time: this week, it has successfully performed a comprehensive MIME parse on a new mail message... Each day brings new achievements, and a sense of satisfaction that things are finally being done in a modern, future-proof way.

Well, that will do for now: as soon as I can, I'll write another post here about The Pegasus Mail Thousand and what it's going to mean to the sustainability of the programs, and I'll make it my goal to post much more regular progress updates on what's happening behind the scenes.

All my best to you all!

Cheers!

-- David --

Well! It's been a while since I've written here - in fact, I admit I'm a little shocked how long... Oops: and I had promised myself I wouldn't have these long absences any more. In my defense, I should say that I have been far from idle. Since the release of Pegasus Mail v4.51 and Mercury/32 v4.72, I've begun work on what is probably the single biggest change in the core innards of the programs since they were introduced: I am rewriting the Mail Store. Let me clarify that: the move from my old Borland C compiler to Visual C was a huge effort, but it was mostly about porting and tidying the existing code: what I am doing now is rewriting the deepest core of the program from the ground up. The "Mail Store" is that part of the program that manages folders, messages, attachments - in fact, anything low-level to do with any mail message you can read in your copy of Pegasus Mail. The Mail Store currently in use in Pegasus Mail is very old - much of it has not changed markedly since the Windows version of the program was originally released in 1993. While it works quite well, it has become increasingly difficult to maintain, and nearly impossible to expand: it also does not lend itself to being made available to third-party developers (such as extensions writers). More pertinently, though, the Pegasus Mail code was not an entirely happy port to Mercury - many of the lingering performance issues associated with the MercuryI IMAP server can be directly attributed to the age of the Mail Store code. The aim of the Mail Store rewrite is to have one common library used by both programs, and to apply the lessons I have learned in nearly 20 years of writing this type of program to producing something that will have industrial strength and high performance. This development is the basis for all the good things I have planned for both programs - a high-speed webmail interface for Mercury, new secure and encrypted folder formats for both programs, and much faster, more robust IMAP support that can take advantage of IMAP extensions when they are available (something the current code cannot easily do). The new Mail Store will also be directly available to extension and Daemon developers - for the first time, they will have access to the Mail Store that is exactly equal to that enjoyed by Pegasus Mail and Mercury themselves. The process is going excellently, and is now well advanced. The target I had originally set myself was to have the new Mail Store essentially finished and ready to bolt into Pegasus Mail by the end of this year: past experience told me that I was probably being optimistic (it's symptomatic of how difficult the industry has become that I can't remember the last time I was able to hit a deadline I set myself) - but to my surprise, it's actually looking as though I may be on schedule this time. Last week, the new code initialized itself, then scanned and read a new mail folder for the first time: this week, it has successfully performed a comprehensive MIME parse on a new mail message... Each day brings new achievements, and a sense of satisfaction that things are finally being done in a modern, future-proof way. Well, that will do for now: as soon as I can, I'll write another post here about The Pegasus Mail Thousand and what it's going to mean to the sustainability of the programs, and I'll make it my goal to post much more regular progress updates on what's happening behind the scenes. All my best to you all! Cheers! -- David --

I hope you haven't done away with one of Pegasus's most useful (to me) features: the fact that inbox mail messages are single text files (*.cnm).

I hope you haven't done away with one of Pegasus's most useful (to me) features: the fact that inbox mail messages are single text files (*.cnm).

I agree with Coruscatus, but maybe there will be an easy way to access .CNM files (or whatever they become) when needed, from an administrative standpoint. Regardless, I am glad to hear that things are moving along nicely - this is very encouraging! I look forward to the update!

I agree with Coruscatus, but maybe there will be an easy way to access .CNM files (or whatever they become) when needed, from an administrative standpoint. Regardless, I am glad to hear that things are moving along nicely - this is very encouraging! I look forward to the update!

All existing formats and data are preserved and fully usable under the new mail store. The main thing about it is that it will make it much, much easier to extend the program and add new features that were hitherto difficult or impossible, like encrypted folders and easy archiving. I have a couple of cunning tricks up my sleeve as well that will become possible with the new code, but I'm going to keep those as a surprise... ;-)

All existing formats and data are preserved and fully usable under the new mail store. The main thing about it is that it will make it much, much easier to extend the program and add new features that were hitherto difficult or impossible, like encrypted folders and easy archiving. I have a couple of cunning tricks up my sleeve as well that will become possible with the new code, but I'm going to keep those as a surprise... ;-)

Thank you for the update!

I really hope, in the near future it would be possible to search and access pegasus mail folders with an local desktop search engine, like microsoft search or google desktop.

Thank you for the update! I really hope, in the near future it would be possible to search and access pegasus mail folders with an local desktop search engine, like microsoft search or google desktop.

PingBack from http://darkundereye.com/darkundereye/gray-skin-under-eyes

PingBack from http://darkundereye.com/darkundereye/gray-skin-under-eyes

PingBack from http://www.rimonabantexcellence.com/t.php?aHR0cDovL3BtYWlsLnByYWt0aXQuc2UvYmxvZ3Mvd2lucG1haWwvYXJjaGl2ZS8yMDA5LzEwLzIxL3RoZS1uZXh0LWdlbmVyYXRpb24tb2YtbWFpbC1zdG9yZS5hc3B4

PingBack from http://www.rimonabantexcellence.com/t.php?aHR0cDovL3BtYWlsLnByYWt0aXQuc2UvYmxvZ3Mvd2lucG1haWwvYXJjaGl2ZS8yMDA5LzEwLzIxL3RoZS1uZXh0LWdlbmVyYXRpb24tb2YtbWFpbC1zdG9yZS5hc3B4

Pegasus Mail Development Weblog : The next generation of Mail Store

Pegasus Mail Development Weblog : The next generation of Mail Store
live preview
enter atleast 10 characters
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Saving...
Saved
With selected deselect posts show selected posts
All posts under this topic will be deleted ?
Pending draft ... Click to resume editing
Discard draft