Now that LogicMail 2.0 has been released for a while, I figured it was time to give everyone a little update on the progress of 2.1. Back when I first started making LogicMail publicly available, there was a certain feature everyone was asking for. In fact, people weren't just asking for this feature. They were so certain that they had to already be there, that they were actually asking me how to configure it! If it isn't obvious by now, this feature is having LogicMail sitting in the background, polling periodically for new messages, and notifying the user. Oh and it should be easy, right?
As I mentioned in this presentation on the evolution of the project, sometimes "a simple-sounding feature may take a redesign of the whole application to implement properly." You see, LogicMail 1.x was really a very simple proof-of-concept application. It had a user interface, some mail protocol code, a thread or two to glue them together, and little else. There was simply no way to actually implement such a feature. The reason it took so long to get LogicMail 2.0 completed, was because I was building a full-blown application almost from the ground up. Oh, and I was doing it in my (limited) spare time. The longer it took, the most likely users were to have issues or make feature requests. This all made it take even longer. When LogicMail 2.0 was finally approaching completion, I had a tough decision to make. I could hold out for server polling, and delay it another few months, or I could bump that highly-requested feature to 2.1 and release what I had then and there. Since the simplicity of 1.x was making the project look stale and dated, and polling would create a testing nightmare, I decided to go ahead and just release 2.0.
Now that 2.0 is released, and out of beta, I've been able to focus most of my attention on 2.1. Work has been proceeding quite well, since I'm now building on top of a completed application. I have refactored some big things in the core, but those were things I wanted to rework for a long time.
But anyways, it didn't take me long to start by adding these configuration items:
Which leads to this screenshot, showing much requested functionality:
Now, in case anyone is curious, here's how I've implemented this "polling" so far:
- IMAP: I actually use IMAP IDLE most of the time, monitoring the Inbox. Whenever the "refresh frequency" period elapses, I leave IDLE mode to make sure the server knows we're still alive and to check any other mailboxes. If there is a connection error, I also use this value as the amount of time to wait before trying to connect again.
- POP: This is simply how often I connect to the server, check for messages, then disconnect shortly thereafter. Some tweaking is still needed here, so that LogicMail will disconnect slower or faster depending on user activity.
In addition to all of that, I've recently added the ability to mark messages as opened/unopened without viewing them. I've also added flashy new OS 6.0 popup context menus (for OS 6.0 devices) to the mailbox screen:
Don't worry if you have an older device, as the older menus are all still there for this. The newer ones just make for nicer screenshots.
So what is still left to do? LogicMail still needs to be able to start when your device starts up, and go to the background (instead of always wanting to exit) when you close its home screen. There are also a ton of little things that need to be worked on to have a quality user experience. (Better error recovery, timeout handling, more configuration wizard options, etc.)
There are also a lot of little end-user feature requests, most of which are likely to get pushed to 2.2 in order to get 2.1 released faster. However, since LogicMail is an open-source project, any interested developer can work on them and contribute the code back to me.