LogicMail 2.0 Status Update

I know I've been fairly quiet these past few months on discussion of actual progress on 2.0, and really haven't even been updating related tickets on this website. However, I've actually been making significant progress on the actual implementation. Since far too many highly desired features have been pushed off into the 2.0 plan, I feel its only fair to keep everyone updated on where things are going.

To give you all an idea of just how big of a change 2.0 will be, I'll start by explaining just how simple 1.0 really is. LogicMail 1.0 is basically a UI coupled almost directly to a collection of mail (IMAP/POP/SMTP) clients. There isn't much of a data model (beyond what's necessary for the pieces to talk to each other), and there certainly aren't any persistent program threads running in the background when you're not downloading something. Now don't get me wrong, developing and testing that mail client code has been a lot of work. E-Mail really is a royal pain, between different server behaviors, far too many data encoding formats, complex message structure, etc. However, what you all really want is a full-featured mail-handling application. With 2.0, I intend to give that to you.

The 2.0 project all started with a million variations on the simple feature request... "How do I get LogicMail to notify me when I get a new message? It should be pretty simple to implement, right?" Now that you've read the preceding paragraph, it should be obvious that it really isn't that simple. Just take a look at the design page to get an idea of how I began to flesh out my ideas for how LogicMail should be built. If you've read a famous book by Fred Brooks on software engineering, this is probably already starting to look like the  Second System Effect

Okay, now to let you know what I've actually done thus far... (Yes, I'll try to give the brief version of what's in my notebook.)

  • Retooled the build process to be fully Ant-based and not IDE-dependent. (and switched to Eclipse as the preferred IDE)
  • Implemented a fully threaded, request-driven, asynchronous mail protocol engine to sit on top of the IMAP/POP/SMTP client code
  • Implemented a complete mail object model to sit at the core of the application, providing a user-visible object based request/event driven facade on top of the mail protocol engine.
  • Reimplemented most of the 1.0 functionality on the new 2.0 architecture
  • Did initial implementation of IMAP IDLE!!! (currently only works for the last-selected folder, and doesn't do keepalives yet, but its a start)
  • Did the draft implementation of a new account setup wizard, to hopefully ease the currently awkward setup process.

In terms of code-size,  SLOCCount shows the 2.0 trunk to be approximately 5,000 SLOC larger than the 1.0 branch.

Of course at this point, if you want to try 2.0, the best way is to build from source and run it in a  BlackBerry Simulator. Its far from ready for prime-time, but I'll eventually get to the point where I start offering up technology-preview releases. The code is still littered with "TODO" comments, and error handling/recovery gets a lot more complicated on the 2.0 architecture.

Now for some screenshots:

New home screenAccount setup wizardFolder selection dialog
  • Posted: 2008-10-11 23:45 (Updated: 2008-10-11 23:51)
  • Categories: (none)

Attachments

Comments

1. tobiasaf -- 2009-01-12 14:27

Looks amazing! Can't wait to try it out some time. Thank you so much for your hard work!