[Distutils] Buildout status

Jim Fulton jim at zope.com
Wed May 11 15:21:12 CEST 2011

Buildout has become too complex for me to maintain.  Two factors in
particular have increased it's complexity to the breaking point, the
isolation machinery introduced in 1.5 and the code to support the fork
of setuptools.

Let me be clear about 1.5: I really *really* appreciate the effort
Gary Poster put in to that release.  I don't fault his effort, given
it's goals, I've just decided that the goals were too ambitious.

I recently released 2.0.0a1 for Python 3. Not all tests pass under
Python 2 or 3, but enough pass to make this usable with Python 3.  The
next phase of work will probably involve responding to problems people
report with this release. (So far, it's been much quieter than I
expected.)  After that, I'll get going on the version 2 release in
earnest. In the mean time, people will have some time to respond to
what I say next, which may be controversial. :)

While the current release of buildout 2 has all the features from 1.5,
future releases will not. Buildout has to get simpler, or someone else
has to take over maintenance.  Assuming the former, I plan to
eliminate some high maintenance features, including:

- Support for multiple Python interpreters within a single buildout

- Partial isolation from site packages and site.py

  Buildout will have an "isolated" mode. In this mode, it will exclude
  directories from the path that are added by site.py. (I'm not
  certain what the default should be. I previously thought buildout
  should switch to being isolated by default, but given the popularity
  of using buildout with virtualenv, I'm leaning towards making
  isolation optional.)

  z3c.recipe.scripts will be spun off to a separate project along with
  it's support code currently living in the zc.buildout package. I'll
  to whatever I can, by providing hooks, to support this recipe, but
  the maintenance of this feature has to move out of buildout.

- Support for both setuptools and distribute

  I'm going to support one, or the other, or neither.  I'm in a tough
  spot.  Distribute, which was created because setuptools wasn't being
  maintained, is no longer being maintained, except there was a recent
  release. Setuptools, which is being maintained, doesn't work with
  Python 3.  (I was thinking about forking distribute to eliminate the
  dependency, but after further consideration, I don't think that's a
  good idea, as one of these is needed to build source releases that
  depend on them.)  My current leaning is toward porting setuptools to
  2&3 and supporting only setuptools.


Jim Fulton

More information about the Distutils-SIG mailing list