[Zope-dev] Proposal: Make Zope2 smaller

Hanno Schlichting hannosch at hannosch.eu
Sun Oct 26 11:37:29 EDT 2008


Hi.

I'd like to get feedback on an idea I had recently.

Problem

Zope2 currently includes large parts of Zope 3. Not all of the zope.*
and zope.app.* packages are maintained or are in use.

Still Zope 2 includes large amounts of them and thus implicitly
advertises them to be used. In addition they blow up the installed code
size and add a long term maintenance burden.

The move to gain Python 2.6 compatibility has shown some of this and I
expect to see more work in moving to Python 3 at a later stage.

Assumption

Zope 2.12 will most probably see two kind of distributions.

One is a Zope2 egg, consisting of one large Zope2 egg which pulls in
everything that has been eggified on their own as dependencies. This
includes the ZODB and all zope.* and zope.app.* packages.

The second distribution is a tradtional tarball, which exactly matches
the current distribution format.

Proposal

I'd like to change the egg distribution alone and introduce one
setuptools extra to it. The old tarball distribution would stay the same.

The standard Zope2 egg install would only include those zope.* and
zope.app.* packages which it actually requires.

The extra would be called 'zope_app' and pull in all zope.* and
zope.app.* packages which we did include so far, but are not actually
required to run Zope 2.

For example:

extras_require = dict(
    zope_app = [
        'zope.app.rotterdam',
        'zope.app.<...>',
        ],
    ),

Rational

Any package that does require any of the zope.* or zope.app.* packages
can define those as an explicit dependency itself. The zope_app extra
makes the transition phase easier, in which packages do not yet declare
all their dependencies. In the long run, the extra can be dropped entirely.

This proposal makes it possible to get a smaller, well-defined Zope2
egg. The first egg release of Zope2 gives us an opportunity to do this
move without breaking backwards compatibility.

While Zope 2 has included large parts of Zope 3, it never exactly
included all of it. As Zope 3 is not likely to see an ongoing monolithic
release, I don't see a reason for Zope 2 to include Zope 3 in the
monolithic fashion we do so far.

Implementation

This is not yet implemented but should be quite easy. Figuring out the
exact packages which are required by Zope 2 is to be done.

Questions / Comments / Feedback

Are more than welcome.

Hanno



More information about the Zope-Dev mailing list