[Distutils] Pre-pre-PEP: Requirements for the Python BUILDS Specification

Phillip J. Eby pje at telecommunity.com
Tue Oct 7 20:30:45 CEST 2008

At 10:04 AM 10/7/2008 +0100, Paul Moore wrote:
>2008/10/7 Phillip J. Eby <pje at telecommunity.com>:
> > In the case of BUILDS, I propose to do the same: define a standard whose
> > cost/benefit ratios are ideally balanced for each participant.  This does
> > not, by the way, mean that everybody ends up with the same cost/benefit
> > ratio; it simply means that the cost/benefit ratios are best for those
> > people whose participation is most required for the standard to be widely
> > adopted.
> >
> > You can see that this is also what I did in the design of easy_install and
> > setuptools, except that in that effort I only considered developers and
> > users, not system packagers.
>I'd argue (you may differ) that the most significant area where you
>missed the mark on user benefits with easy_install and setuptools is
>the lack of easy *uninstall* and easy *list* options.

Well, I'd certainly agree that those features are desirable.  But I 
didn't "miss the mark", in that those features were not part of my 
mark.  ;-)  The goal was to get widespread adoption by developers, 
and thus the primary target audience was developers.  Any features 
that attracted users were there only insofar as the benefit to users 
would specifically drive adoption by developers.

And that means that features that only matter *after* you have things 
installed (i.e., easy uninstall and list) were of relatively little 
importance in the initial feature set.  It was only necessary to 
provide the *possibility* of uninstall and list features, and then 
allow others to scratch the resulting itches.

Now, for BUILDS, the situation is different.  Just as setuptools' 
competitor was distutils, BUILDS' competitor is setuptools.  So, 
BUILDS has to offer developers a switching benefit.  And, unlike the 
situation before, now developers are much more likely to have a lot 
of packages they'd like to list or uninstall, so such features have 
considerably more value now, than they did then, which makes them 
worth putting some effort into.

Also, since that switching benefit is largely going to come from 
having better management tools, the management tools need to be easy 
to build (so that people will build them).

However, since system packagers are experiencing pain right now wrt 
Python packages, there is at least some benefit to their 
participating in the process.  Back when setuptools was developed, 
people from the distros weren't hanging out here in the 
distutils-sig...  or at least, they never answered any of my calls 
for interested parties.

>  Most of the
>issues I hear from users about setuptools (filtered by my prejudices,
>admittedly) is that there's no management options (which brings in the
>system packagers, and their concerns).
>Can I suggest that this be included somehow in the new spec, so that
>metadata is available to make wtiting uninstallers and listers as easy
>as writing installers?

Since the single most important part of BUILDS (and the part that 
should be done first) is an installation manifest for packaging tools 
to know what files are of what kind and where, it should be easy for 
uninstallers to work.

Regarding listers, there are already a number of them available in 
the Cheeseshop, and if you're working with Python 2.5+ (and not using 
an older distro that deletes .egg-info files), they should also work 
with distutils-installed packages.

The idea behind the installation manifest and metadata (the "IL" and 
"DS" of BUILDS) is that it should be possible for anyone to write 
their own management tools for specific scenarios, and not have to 
rely on a bunch of implementation-specific and not-very-well-documented stuff.

(It should also be possible, given the "IL" part, to make a distutils 
and/or setuptools command that generates this data from a 
sufficiently well-behaved setup.py.)

More information about the Distutils-SIG mailing list