Aeromys is a webmail application designed for extremely fast access to email through the web.
I had the idea for Aeromys several years ago when I was thinking about how PHP was essentially an inappropriate technology for writing a web application. I like to make the distinction between a web site, and a web application. A web site is what you are looking at right now, it displays information and can be navigated. It is by nature in page-form. However, an application is different. It takes much more processing and more overhead. This is the problem I saw with most web applications written in PHP. They were slow, not because of a flaw in their design or poor implementation, but simply because of the nature of HTTP and PHP.
As I got to thinking about it, I realized that the application server model is much more appropriate. Application servers have been in use for quite a while, they are not a new or novel concept. However, as I'll show later, some of the things I'm trying to do with Aeromys are new to the webmail domain, and are pretty exciting.
Another inherent problem with using PHP for web applications is that there is a lot of down time. PHP can only run after a user has requested a page. That is, Apache will spawn the PHP process, parse the PHP script, and execute it. All this time, the user is waiting on the other end. Delays of even a second are noticed. In a webmail application, these kind of delays are common because the PHP process must connect out to the IMAP server, which takes time.
Enter Aeromys. Aeromys has a webmail daemon (webmaild) that is constantly running in the background. This daemon keeps track of the users who have logged into the system and keeps their IMAP connections alive between page loads. Also, while the user is reading his or her email, this daemon takes advantage of the down time and pre-fetches information that it thinks will be requested for the next page load. This is what I call "predictive caching." When the user makes the next page request, hopefully the information required for building that page will have already been cached and can be displayed instantly.
This semester (Spring 2005), I am working on Aeromys as an independant study project under Dr. Peter Wurman at North Carolina State University in Raleigh, NC. It is my hope to continue this work on through as my masters thesis and possibly a doctoral dissertation. So I have a personal vested interest in this project.
What's New in This Release:
· Added basic sorting method
· Switched back-end libraries from c-client to libEtPan
· Improved interactive mode
· Improved logging and debugging capabilities
· Fixed several crash bugs