Quickstart:
git clone https://github.com/apache/whimsy.git --branch secmail
cd whimsy/www/secmail
rake fetch1
rake server
[navigate browser to http://localhost:9292/]
Background: minotaur is going away, running scripts on the mail server
is discouraged, and the ability to debug locally the processing of mail
is highly desirable. Therefore, the current thinking is that whimsy
will rsync entire mailboxes from wherever they might be (this location
may change over time) and then process them locally.
The above branch an exploration of what that approach might look like.
It is able to successfully parse over eight years of email (not a small
feat given that the current deployed secmail.py blows up occasionally
when presented with malformed email messages (typically spam).
It then presents an index of email messages that have attachments, which
you can navigate into to see attachments. The only operations currently
implemented are:
1) delete and undelete entire emails. Do this by navigating (up, down,
and click) to the email in question and press delete (or backspace).
Undelete using either the button provided, or by using control-z (mac
users can also use command-z).
2) showing a context menu on an attachment. Navigate into an email and
right click (or control-click for Mac users) to see a list of operations.
Notes:
1) fetch times are wildly inconsistent. Ten seconds on a high speed
connection should be enough for one month, but one to fifteen minutes is
not uncommon. I have, however, downloaded the entire corpus of
secretary emails since 2007 in less than hour.
2) The server is set up to restart if anything changes in the secmail
directory. The first time you start the server it will set up some
files, and that will cause it to restart, possibly after displaying some
tracebacks. Ultimately, this restarting on changes makes development
easier.
3) functionally this code is structured much like the board agenda tool,
and should be a lot more maintainable than the current secretary
workbench. In particular, the code is much more modular, and adding a
new function should be able to be done without affecting existing function.
4) being able to test against the entire set of emails received is a big
step forward; but given that this code is structured like the board
agenda tool, I should be able to add proper tests.
5) I haven't focused on the UI yet - it needs a lot of work. I would
like to make this feel less like a web page and more like a desktop app
that happens to run in a browser. For example, I would like to explore
having the current 'staple' function be done via dragging and dropping
of images and PDFs on top of one another.
- Sam Ruby