[Zope-dev] Grok cave sprint summary, and future todos

Martijn Faassen faassen at startifact.com
Sat Jan 31 11:41:05 EST 2009


Hi there,

I've just made a lot of releases as the result of our dependency cleanup 
sprint. There are more releases to be made, but I think I've released 
the most important affected packages now. Christian Theune is going to 
follow up and release some more packages that we touched, probably tomorrow.

I'm going to write up a document that describes how we analyzed 
dependencies and what approaches we took so that people who want to help 
have some idea of what to do.

the most important affected packages are (as far as I can remember):

zope.app.component ('class' ZCML directive moved into zope.security, 
site stuff extracted into zope.site)

zope.app.security ('module' directive moved into zope.security, along 
with some helper functions)

zope.app.container (most functionality moved into zope.container)

zope.app.folder (base class moved into zope.container, Folder itself 
moved into zope.site as its main function was to mix in site management 
facilities)

zope.traversing (depends on zope.location now instead of the other way 
around)

zope.location (doesn't depend on zope.traversing anymore)

zope.site (a new package extracted from zope.app.component and 
zope.app.folder)

zope.container (a new package extracted from zope.app.container and 
zope.app.folder)

Another thing we want to do is reduce the test dependencies of packages 
to almost nothing (or nothing at all). We think it'd be good if package 
only used what they depend on directly for testing purposes; testing 
dependencies in general should follow implementation dependencies. This 
might allow us to get rid of zope.app.testing at some point. Instead 
we'd like to see more (and more consistent!) 'testing' modules in 
packages that help with test setup.

We have created a bunch of tools in the process of reducing 
dependencies: an extension to the test runner to track imports that 
could be modified to be from a better location (though 'grep' is very 
useful there too), z3c.recipe.compattest, and Christian Theune is 
working on a way to 'touch' the ZODB so that it will update any moved 
class to the new location.

Note that we haven't finished going through the codebase changing 
imports from zope.app.folder to zope.site where possible - volunteers 
are welcome. This should further reduce dependencies in the entire graph 
as zope.site pulls in far less than zope.app.folder.

If a bunch of us keep this up we'll that'll allow us to start retiring a 
lot of packages that are mostly unused, and have a smaller, easier set 
of Zope 3 packages to maintain and understand. Users of the Zope 3 
libraries (plain Zope 3, Grok, Zope 2, Repoze, and others) should all 
benefit from this.

Regards,

Martijn



More information about the Zope-Dev mailing list