Mid-life upgrade for the MailBox suite
In the last months of the previous century, I had to learn Perl to be able to teach it to professionals. It was my 28th language to use, but still took two years to understand deeply. As experienced assembler and C programmer, I was astound how much more of my ideas I could achieve with this new Swiss army knife in my hands. I fell in love with Perl.
Of course, the only way to learn a programming language well, is to use it for a larger project. So, I started to re-code the business shell scripts and websites to Perl. Part of it was sending automated emails to colleagues.
Your phase in life is probably different, but for my personal feeling it was not too long ago; for Internet's lifespan, the year 2000 is ancient history. The first spec for MIME headers in email were just 8 years old at the time, and many email features were still evolving.
Perl already had a set of email modules from its start. This became the MailTools suite in 1995 (first maintained by Graham Barr, since 2001 by me) had organically grown with the design of MIME, but did not give me the abstraction I wished for.
To my taste, too many Perl modules do not offer enough abstraction and power. But especially: they do not implement enough of the protocol logic to make it easy for implementers to get to a standard compliant use. The MailTools modules demonstrate this: they only handle email parsing and formatting, but you need to understand the RFCs yourself to use them correctly.
My desire for higher level abstraction made me to produce many large Perl distributions. I started the MailBox suite, with Mail-Box and Mail-Message as most important distributions. In MailBox you can write things like
my $incoming = Mail::Message->from(\*STDIN);
$incoming->forward(To => $maint, attach => $log)->send;
You do not need to know much about headers and encodings. A much higher level of abstraction than MailTools: quality messages guaranteed.
The total MailBox suite now contains 170 modules (mainly classes), 1244 methods, and over 13 thousand regression tests. Pretty big. Have a look at https://perl.overmeer.net/mailbox/ to browse through the documentation.
A weird thing with maintaining Open Source code is: when you have many tests and the code has aged, then you get nearly to no bug-reports. It feels like no-one is using your code anymore. Only in recent years, I found out that MailBox is still in very active use in professional environments. But I rarely get in touch with those users. That's bad. So: please get in touch with me about the upcoming changes!
Time for a mid-life upgrade! After 25 years, MailBox gets a serious clean-up. Perl has seen many improvements which may benefit the performance and simplify the code. The logging will get connected with other frameworks. All latest versions of the RFCs will be compared to the actual code, to see whether changes were missed.
The famous NLnet Foundation supports me, but your additional support is very welcome. Are you a user of MailBox? Then please help me out during the test phase of the rework. Contact me!
i checked out your mailbox class heirarchy on overmeer net
I couldn't figure out what i was looking at at first, but it seems to be a system for managing a local storage of email. that is, instead of using an email client, you just have full functionality with a perl program.
I am not a perl pro, so it's unclear what your example code is doing. It seems like you are using barewords, then passing 2 pairs of strings and objects to the function.
I remember the days before email was owned by microsoft and google, and I have warm feelings for projects like this. not enough to dive into your slides, but my heart is still warm. Cheers from Tennessee.