[Catalyst] [SOT] cat webmail app?

Joe Cooper joe at virtualmin.com
Fri Aug 22 20:38:14 BST 2008


Matt S Trout wrote:
> On Mon, Aug 18, 2008 at 02:14:41PM -0500, Andrew Kornak wrote:
>> On Mon, 2008-08-18 at 10:48 +0100, Matt S Trout wrote:
>>> On Fri, Aug 08, 2008 at 05:47:25PM -0500, Andrew Kornak wrote:
>>>> http://www.webmin.com/usermin.html
>>>>
>>>> Not Cat based but is a fairly complete perl-based, modular, extensible
>>>> solution as well as a useful system administration tool. I have used
>>>> Webmin and Usermin for many years and highly recommend both.
>>> How does that remotely relate to webmail?
>>>
>> As per the web sites I included, Usermin has a fairly complete mail
>> module that integrates with spam/virus filters and offers many options
>> regarding your mail delivery agent. Webmin and Usermin are BSD-like
>> licensed and offer RPM. DEB, and tar source packages. I thought it might
>> be a useful starting point or even a reference since it is written
>> entirely in perl and is a very mature and well supported project.
> 
> Ok. I last looked at webmin about three years ago and it was an appallingly
> badly written pile of hacks that just happened to work, and had no webmail
> related component at all.

Correction:  It's an appallingly badly written pile of hacks that just 
happens to work on millions of production systems every single day.

I think we'd all like to have started a project that is as popular as 
Webmin.  (~2 million downloads per year, just from SourceForge.)

Just for reference, Usermin (the project he linked to, which is the 
webmail and user-oriented variant of Webmin) has been around for about 7 
years.  It's an extremely full-featured mail client, if a little clunky 
in the UI (I'm working on that).  It's not as popular as SquirrelMail, 
because it requires a root-level installation, but it's definitely more 
powerful.

It'd probably be wise to think of Webmin/Usermin in context: It is an 11 
year old project with ~450,000 lines of code, written almost entirely by 
*one guy* (as a hobby a good deal of that time), that has to run on 
systems with very old Perl versions.  And, because it is used in 
hundreds of embedded devices and commercial products, the standard API 
simply cannot change.  There are 114 standard modules (last time I 
counted), and several hundred third party modules, and Webmin has never 
broken backward compatibility for those modules.  A module written 10 
years ago will work, unmodified, in last weeks Webmin release (it won't 
participate in logging or ACLs or notifications, but it'll work as well 
as it did 10 years ago).

So, sure, it's got some old-fashioned Perl code that hasn't seen a major 
overhaul in many years (Perl 4-isms abound, even), but it's not bad 
code.  Perhaps it is unfamiliar looking, if you've been working with 
modern OO Perl style...but it's not particularly bad.  Quite concise and 
clear, mostly, if a bit quirky.  And, of course, with several million 
users banging on it every day, it's pretty damned well-tested.

We also accept patches.  (Assuming they don't break backward 
compatibility and they work on Perl 5.005_4 and up.)



More information about the Catalyst mailing list