[Zope-dev] zope.app.publication dependencies (volunteers needed!)
Martijn Faassen
faassen at startifact.com
Wed May 13 13:55:11 EDT 2009
Hi there,
zope.app.publisher is depended on by quite a bit of code that uses the
Zope Toolkit, as it defines brower:view and browser:resource and the like.
Unfortunately zope.app.publisher currently depends on more than 60
packages. This is rather excessive, and we'd like to cut down on this.
Also interesting about zope.app.publisher is that while it defines a
'browser' directory it actually doesn't contain any ZMI code; instead
ZCML directives are defined there. Refactoring so the ZMI isn't around
anymore is usually a good first step, but that's not needed here.
If you look at the dependency graph for zope.app.publisher the task of
fixing this looks daunting:
http://startifact.com/depgraphs/zope.app.publisher.svg
But now please observe the following:
http://startifact.com/depgraphs/zope_app_publisher_cycles.svg
This identifies the main cycles in that dependency graph. If we break
those in the right way, we can cut down a lot of dependencies in one go.
Getting rid of the zope.app.form and zope.formlib dependencies looks
like a sensible step.
From this little graph, it looks clear we could do some of the
following things (research is needed to see how difficult they are):
* cut the dependency of zope.app.publisher on zope.app.component
* OR cut the dependency of zope.app.component on zope.formlib
* cut the dependency of zope.app.publisher on zope.app.publication
* OR cut the dependency of zope.app.component on zope.app.security
* cut the dependency of zope.app.publisher on zope.app.publication
* OR cut the dependency of zope.app.publication on zope.app.exception
* OR cut the dependency of zope.app.exception on zope.formlib
There are probably a few more options there, but given that small graph,
you get the picture.
Any volunteers to do this research on how hard some of these steps would
look and report back here? Once we've discussed the options we can
proceed fixing the problem.
Regards,
Martijn
More information about the Zope-Dev
mailing list