Pegasus Mail and Mercury Developer News
Well, it's been a long time between drinks, as they say. 2012 was a frustrating year in which I did a lot of work, but ended up without having a lot to show by way of releasable products. Things are rolling on, though, and I expect 2013 to be a year where many of the fruits of those labours reach the public view.
Pegasus Mail The main focus for Pegasus Mail during 2012 was to replace the aging addressbook subsystem with something much, much better. The existing Pegasus Mail addressbook code is now very old - some of it dates from the time of the DOS version of the program - and it has reached the point where not only is it practically useless in terms of real functionality, but it is very difficult to maintain. The replacement I have developed for it is a fully-fledged Contact Manager, with an incredibly rich and extensive range of data attributes and capabilities. It will tie deeply into Pegasus Mail and will provide new functionality only dimly imagined in past versions of the program. It also showcases a lot of development I have done on user interface, both in terms of my philosophy towards UI, and the tools I have written to create it. I believe it has the best user interface experience I have ever produced, and that it will significantly expand the capabilities of the program as a whole. As a teaser, here's a simple screenshot of the current state of the Contact Manager UI in action.
Other developments include replacing the entire spelling checker subsystem with a completely internationalized version using standard dictionaries (over 80 languages available at last count), and improving the performance of network-related operations (such as POP3 and SMTP), including migrating to secure networking code based on OpenSSL.
Mercury/32 Two things in particular have occupied my attention in Mercury development over 2012: the first is a migration to using the OpenSSL libraries in the program to handle secure communication. Moving to OpenSSL promises much higher levels of interoperability with other systems and makes it much easier to use "real" certificates (i.e, those issued by Certification Authorities). As part of this process, I have put a lot of time into making my TCP/IP code in general more robust and improving performance where possible. The second focus in Mercury/32 is the complete decoupling of the Mercury user interface from the worker code that actually handles mail. This has become increasingly important with more modern versions of Windows that do not allow service processes to expose any kind of UI, but was always going to be something I would have to address in any case. While a very large and complicated job, this work is progressing well, and several of the Mercury protocol modules are now converted to the split UI/worker process model. A side-effect of this work will be that tools people have been requesting for a long time, such as easy ways of managing mailing lists remotely, will become practical to write.
Interfaces Probably one of the areas where the most work has happened in the last year is one that no user will ever directly see - the internal interfaces Pegasus Mail and Mercury use to communicate and manage data. I've been working towards a very highly-integrated object-based interface for a number of years, and the last year has seen this work finally come to fruition. The Mercury inter-process communication abilities required to separate the user interface from the worker processes are directly supplied by this new object-based interface, which is now a fixture in both programs. While my user community won't normally be aware of all the work that has gone into this, it was a crucial step in making the programs maintainable for the future, so it was pretty important stuff.
MailStore MailStore, the replacement foldering management layer I've been working on for a long time now, has taken somewhat of a hiatus in 2012. The problem, as it often has been in the past, is the IMAP code for accessing remote mailboxes: this code has required a major rewrite, but is unfortunately based on internet standards that are very difficult, time-consuming and (dare I say it) soul-destroying to implement properly. I decided that other, more visible additions to the programs, such as the Contact Manager and the Mercury UI separation were more important in the short-to-medium term, so I have put MailStore on the back-burner while I work on those. Mailstore does, however, remain a key development goal for both programs, and will eventually find its way into production.
There's a lot on the horizon, and a lot to look forward to this year. I'd like to take a moment to thank those of you who have stayed with me and have generously donated in support of Pegasus Mail. I'd also like to break with the reserved, almost shy lack of self-promotional sense that makes it very difficult for me to ask for support and say that donations from my users are increasingly important in times as hard as these; I appreciate any financial help you feel able to provide and hope as many of you as possible will find a way to offer your assistance.
All the very best!
-- David Harris --