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

Phillip J. Eby pje at telecommunity.com
Tue Oct 7 03:33:23 CEST 2008


At 10:25 PM 10/6/2008 +0100, Floris Bruynooghe wrote:
>On Fri, Oct 03, 2008 at 12:35:11PM -0400, Phillip J. Eby wrote:
> > I'm thinking about putting together a pre-PEP for a "Build Utilities,
> > Installation Locations, & Distribution Standards" (BUILDS)
> > specification.
>
>Hehe, clever name!
>
> > The basic idea for the first PEP is to:
>[...]
> > 2. Comment on some lessons learned from the WSGI definition process and
> > WSGI in the field, and how they can be applied to the BUILDS process
>
>That will be interesting to read.  Not being a web developer I have no
>idea how WSGI came to be and what exactly it does.

WSGI came about because I was frustrated with the non-progress of the 
Web-SIG in creating standard request and response objects; it was 
quickly obvious to me that it would never go anywhere, due to 
socio/psych/economic considerations.  I proposed it in order to break 
the logjam by having a standard that more or less allowed everybody 
to do whatever they wanted and still be able to co-operate...  by 
arranging things so that the costs and benefits of adoption were 
balanced for all parties.

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 propose to 
rectify that with BUILDS, although developers are still the most 
important audience a new standard must satisfy, in the sense that 
they require the best cost/benefit ratio for widespread adoption to 
occur.  (And this is of course in system packagers' best interest, 
since widespread adoption of the standard should make their lives 
easier, as long as the standard provides an improvement over the 
status quo for them.)

There are of course some other differences between this effort and 
those of WSGI and setuptools, but that's the 30-second summary.  :)


>[...]
> > 4. Lay out *non-goals* for the BUILDS project,
>[...]
> > or doing anything that requires
> > them to change the runtime contents of their projects (as opposed to
> > merely porting their setup.py, setup.cfg, etc.)
>
>Does this mean actively avoiding an API that would allow developers to
>access certain types of data files (I'm thinking of the discussion
>about locale data and not putting anything else but .py/.pyc/.pyo
>files in packages) or merely making sure the existing way (of shipping
>data files in packages and finding them by os.path and __file__) keeps
>working?

I would actively avoid it for a "BUILDS 1.0" spec, because on any 
platform where the people building installation tools care about 
relocating these files, symlinks are available, so both sides can be 
happy without needing a new API.

That is, unless I have misunderstood Josselin and Toshio, I 
understand symlinks to currently be an acceptable compromise.  (For 
example, Debian uses them to relocate .pyc files currently.)


> > 5. Define rigorous terminology to be used for discussion of requirements
> > and design, including such terms as "project", "release", "distribution",
> > "system package", "installed distribution", etc.  (This is incredibly
> > important, because the discussions we're having now are already having
> > Tower-of-Babel confusions.)
>
>Yay, please make sure the terminology finally allows us to talk about
>packages in the .deb and .rpm meaning too.

The term I use for such packages is "system packages", btw.



More information about the Distutils-SIG mailing list