[Mailman-Developers] ZMailman 2.1 preview

Barry A. Warsaw barry@zope.com
Mon, 10 Dec 2001 00:36:14 -0500


>>>>> "SR" == Stephan Richter <srichter@cbu.edu> writes:

    SR> Furthermore, for the Mailman 3.0 release I would like to make
    SR> a case for using the ZODB (not the entire Zope package!) for
    SR> storing our data structures, since we will not have to worry
    SR> about file locking and data storage in general
    SR> anymore.

I don't have a lot of time to respond to this thread (my band is in
the studio for the last few days ;).  So let me just mention that I've
long thought ZODB was a good fit for Mailman.  Here's why I think the
story will be even better in the long(er) term.

We (Pythonlabs) are taking over more responsibilities for the
development of ZODB, especially w.r.t. ZODB4, the next generation.
The idea is to componentize things enough so that we can provide a
basic persistence service in standard Python, while parts like the
transaction mechanism and the storages can all be pluggable.  ZODB3
already goes a long way here, and we will soon have a standalone ZODB
release that requires none of Zope (or at least provides the parts of
Zope you need).  ZODB4 will be completely independent of Zope, and
should provide robust, transactional persistent storage for any Python
application.  This may even become part of the standard library for
Python 2.3.

Note that most of the interfaces in ZODB are well defined, especially
beween the database and connection objects, and the storage.  I am
indeed responsible for the Berkeley-based storage.  We've had some
performance issues lately due to BDB's lack of large blob support, but
I think I have an approach that will improve things.

ZODB has many advantages for the Python application, not the least of
which is near total transparency for the Python programmer.  You don't
have to think about much to add persistence to your Python app with
ZODB.  Note I don't say "database" here because IMHO that implies a
bunch of other properties such as searching.  Persistence fills all of
Mailman's needs except archive searching, and there should be other
components that can take care of this.

Now, whether Mailman 3.0 will be organized around a set of API that
hide ZODB, and ZODB lives underneath those APIs, or whether it's
defined in terms of ZODB and external storages like LDAP are hooked in
through ZODB's interfaces remains to be seen.  I tend to the think the
former will be best from an evolutionary standpoint.  In any event it
is a "requirement" that Mailman play nice with existing systems, web,
authentication, etc., just like it plays nice with many different
MTAs, web servers, and web browsers today.  I likely wouldn't require
ZODB unless it was provided by a standard, required version of Python.
    
-Barry