[Zope-dev] RFC: proposal to split zope.configuration into ZCML and non-ZCML related packages

Chris McDonough chrism at plope.com
Mon Aug 29 01:35:21 EST 2011


Rationale
--------

Like the previous proposal by Tres Seaver related to
zope.component, this is a step that
will help port crucial Pyramid dependencies to Python3:

 https://github.com/Pylons/pyramid/wiki/Python-3-Porting

At the end of this year's US PyCon, Lennart Regebro described
the zope.configuration porting effort as mostly dependent on
the porting of zope.schema (see
http://permalink.gmane.org/gmane.comp.web.zope.devel/26373).

In the meantime, Pyramid doesn't actually require ZCML or
zope.schema; it only uses the parts of zope.configuration related
to actions, conflict resolution, and the "ConfigurationMachine"
itself.  These bits have proven useful outside the context of ZCML
and other schema-driven configuration.

An Pyramid add-on named pyramid_zcml still has a dependency
on zope.component as it provides ZCML analogues of built-in
Pyramid configuration directives.  We will likely end up
eventually helping to port zope.schema to Python 3 as a
result.  But splitting the zope.configuration package in
two parts seems to make sense regardless, as the Pyramid core
just doesn't need the extra zope.schema dependency, it
just "comes along for the ride".

I have tackled this issue by factoring zope.configuration into
two pieces:

- I have moved the bits that don't rely on ZCML or zope.schema
  into a new 'zope.configmachine' package, now hosted in the 
  Zope SVN repository:

    http://svn.zope.org/zope.configmachine/trunk

  Notes on the new package:

  - The tests in this package are incomplete.  I intend to
    provide full coverage once discussion concludes, as
    well as some documentation for the package as
    a standalone entity.

  - The branch is not yet Python 3 compatible.  It's
    trivial to make it so, once discussion concludes that
    the configuration/configmachine division is acceptable.

- I have made zope.configuration which depends on 
  zope.configmachine in a branch:

    http://svn.zope.org/zope.configuration/branches/chrism-configmachine

  This branch leaves BBB imports intact.

Proposal
--------

I would like to propose the following changes to the ZTK trunk,
after test coverage and documentation for zope.configmachine
land:

- Land 'zope.configmachine' as a full ZTK package, with its own
  Launchpad artifacts, etc.  This step may also involve moving bugs from
  zope.configuration to zope.configmachine.

- Merge the 'chrism-configmachine' branch of zope.configuration to the
  trunk, and bump its major version accordingly.

- Cut releases of both packages.





More information about the Zope-Dev mailing list