In message <199409140400.VAA18402@osiris.ac.hmc.edu>, Jared_Rhine@hmc.edu write
>machine is starting to push 10 minutes to complete. We've got 190 lists,
>and a 'lists' command has to run a 'get_config' for each, which is an
>enormously expensive process.
Yeah, I've often thought if I had to re-implement Majordomo from
scratch, I'd to the configuration stuff differently.
Instead of a config file, you'd assign each list a directory,
and make the configuration keywords files.
For the sake of illustration, call it $listdir. So, for "widget-lovers",
you'd have "/var/lists/widget-lovers/" or something.
To read the list of members of the list, you'd read $listdir/list.
(this is what the sendmail alias would use)
To find out the owner(s) of the list, you'd read $listdir/owner,
similiarly say $listdir/moderator, $listdir/approval. These would
:include: files for the standard aliases for the list. This would
always allow list owners the ability to change them, as well
as make it as easy to have multiple owner/approvers/moderators as
one, and WITHOUT having to create yet another Majordomo list.
The "description" string would be $listdir/description.
To find any information about a list, it's just an open()/read()/close().
Rarely do you ever need to access out _all_ information about a list,
only when doing a config or newconfig. The config/newconfig commands
would just slurp up all the files into one configuration file, and
conversly explode a new configuration file into all the files.
Doing headers and footers becomes really easy since you just have to
append/prepend $listdir/header $listdir/footer
To do the "lists" command, it would be one readdir() and N open()/read()/
close()'s. Still not very fast, but Majordomo could do some caching
for special expensive operations like "lists" by writing the "lists"
output in a file, and updating the cache whenever a list is added
or when a "newinfo" or "newconfig" command is done.
One easy way to do digests would be to have simply $listdir/digest/list,
which would contain the list of people subscribed to the digest.
$listdir/digest/options or something could contain all the stuff about
when to send out digests. You'd have also $listdir/digest/header and
$listdir/digest/footer, $listdir/digest/volume, etc.
You'd still have to have some configuration files for certain things
I think. There are so many options to majordomo now for resend with
little stuff like reply_to, resend_host, and subject_prefex that it makes
sense to put those together in some fast easy-to-parse format.
Just some ideas.