[Mailman-Developers] about qrunner and locking
Chuq Von Rospach
chuqui@plaidworks.com
Fri, 8 Dec 2000 23:20:23 -0800
At 6:48 PM -0800 12/8/00, J C Lawrence wrote:
>There's a danger here of assuming that everything is a Python shaped
>nail. I have misgivings over making a Pythonic wrapper that
>consumes the entire membership resource versus a callout that
>returns the membership base view requested by whatever means the
>installer provides.
On the other hand, look at where the sponsorship of Mailman is coming
from, and because of that, I don't have a huge problem with it -- but
to some degree that implies mostly that we design an API that can by
default use Python (mumbles), but allow syou to write a python glue
set to some other (mumble) if you want. I think making as much of the
*default* configuration python is a very good idea, as long as you
allow for the ability of users to replace those default pieces with
more sophisticated (or different) pieces if you want. I ahve this
terrible nightmare of coming out the other side of 3.0 where the
INSTALL document opens with "first, download these 17 things from
freshmeat and install them. you can now start configuring Mailman..."
Don't take that to imply entirely self-contained, just that reacing
out to outside code has to be carefully considered and well thought
out. it's stupid to re-invent the MTA or Apache, for instance. it
looks (from discussions today) that it'd be silly NOT to integrate
queue mangement stuff (aka, "suck in cron") into Mailman.
>I don't like over-arching APIs.
Maybe we shouldn't be using the term API here, because what I think
we're talking about are to some degree class objects. And if you
think of it in terms of OOP, you may have an over-arching object
(class "mail list manager"), but that gives you the opportunity to
override subclasses to do what you want -- and ONLY have to rewrite
those pieces you need accomplish what you want. The concept of an API
for "subscriber database" seems overwhelming, but if you have a class
for that, if it's done right, redoing the subclass that interfaces
with the outside store and switching from zdb to dbi/mysql shouldn't
be too significant.
I think I'm arguing semantics here, because I think we're using the
term API to more or less the same definition as class definitions in
OOP, but it might help us to think about this if we look at it in
classes architecturally.
>I have the feeling that with a little thought we could break the
>base design of Mailman down into a finely grained granular mesh of
>single purpose tools. Then changing the basic setup simply means
>replacing one of the base tools with some other simple tool that
>generates the same type of output from different resources.
Hear hear. I wish I'd said that.
Here's something to chew on, just because it bubbled up out of the
muck and seems worthy of metioning. In all this talk of 2.1 and 3.0,
of zope database stores and my site-wide subscriber beastie, and
multiple-machine send queues and thelike, I'm wondering if we're
maybe starting to define a thing that reaches beyond the needs and
capabilities of the small site. So as we move forward, maybe we need
to keep in our mind the issues of "mailman light" versus "mailman
robusto". this ties in nicely I think with what JC is bringing up,
and would help us test the robustness of the APIs/classes - there be
a baseline Mailman (mailman light) with basic reasonable
functionality, and plug-in replacements with more functionality where
we want to move towards the robusto version. For instance, we might
not want to use zdb for the light version, but some simpler but
endemic format (like marshalls) -- but you lose performance, you lose
NFS locking, and other features a small site won't need anyway -- but
you don't need to install lots of other stufff to get running.
And if you think in terms of that, then 2.1 is the
bugfix/easy-upgrade release, and then perhaps 2.5 is where all of
those interfaces get defined and mailman-light is implemented, and
3.0 is where robusto is implemented to supplement the light. It would
give us the ability to build parallel development teams for robusto
and light (or for modules within each) down the road, and keep us
honest in terms of the APIs, because if we cheat on an API, we break
one or the other...
--
Chuq Von Rospach - Plaidworks Consulting (mailto:chuqui@plaidworks.com)
Apple Mail List Gnome (mailto:chuq@apple.com)
We're visiting the relatives. Cover us.