>>>>> "n" == nik <firstname.lastname@example.org> writes:
n> Rats. I was under the impression a facility like this was going to be
n> built into 2.0.
Not to handle his specific wierdness. Well, you could write a
SubscriberList backend to do exactly what he wants, but something to do
that isn't going to be "built in" because he's the only person who's asked
for it. I can't imagine that
n> This is how I'd handle it. Define a set of operations that you can do to
n> a subscriber list. I think they're basically:
That's essentially what's there already.
n> As J Random Hacker I could then write my own replacements for these
n> functions that looked up/stored information in a backend database, or
n> DBM file, or whatever.
Yes, already there.
n> A second refinement (and probably the one I prefer) is to implement each
n> mailing list as an object with methods.
Yes, already there.
n> Jason, if you're interested in something like this, I'd like to get
n> involved. I may even be able to persuade my employer that it's a useful
n> use of my time (given that I run most of the mailing lists that emanate
n> from this domain).
Well, people are always free to help. The snapshots are public. When you
install it, you even get formatted manpages for the modules.
I don't know just how many times I can say that the database interface is
abstracted to the point where you could put anything in there. All you
have to do is support the proper functions. Some of the functions are
complex, like the "mogrify" routine where you pass a subroutine reference
that is run over every row in the database and can change any field (even
the key) or delete the row altogether.
The SimpleDB package implements a simple text-based multifield database.
(Which is currently used everywhere because it's, uh, simple and easy to
debug. And many people tend to strongly dislike non-text formats.) This
is inherited by all of the various database packages (SubscriberList,
AddressList, AliasList, FileSpaceDB, TokenDB) which define the fields to be
used and (in the case of AliasList) override some functions to provide
additional consistency checking. Anything that supports the same functions
that SimpleDB supports will work just as well. I plan to support Berkeley
DB and MySQL backends eventually.