[Python-Dev] setuptools in 2.5.

Phillip J. Eby pje at telecommunity.com
Fri Apr 21 01:14:11 CEST 2006


At 11:53 PM 4/20/2006 +0200, M.-A. Lemburg wrote:
>Only after endless discussions, Phillip added some weird
>--long-option-name-that-no-one-can-remember to the setuptools
>"install" command that restores the standard distutils behavior
>which should be the default anyway.

And later, I also made it the default behavior for installation with 
--root, without any further prompting from you or anyone, in fact.


>The suggestions that were made were constructive. Just look
>at the distutils-sig archive. Only very few of the suggestions
>were taken into account.

Actually, *all* of your suggestions were *taken into account*, by which I 
mean I have done all I can to understand them and to understand the 
concerns behind them -- as I do with all requests and feedback.  Some, 
however, will be a long time coming in implementation, or are things I 
simply can't agree with.  Those suggestions may or may not be "right" in 
some sense, but they are not right *for setuptools*.

But I take all suggestions into account, and sometimes I find ways to 
implement them.  When I say "no", it simply means, "I don't see how I can 
do that without breaking some other constraint."  It has happened 
repeatedly, however, that a way of doing something occurs to me months 
after the request, and then it is added with little fanfare.

Meanwhile, I'm always going to give a higher priority to the requests that 
are in strong alignment with the goals of setuptools, and come from:

* developers actually using setuptools,
* users who are installing packages that use setuptools, or
* system packagers who would like to package things that use setuptools

It also helps if they are things I can actually come up with a way to 
implement, without violating setuptools' goals.


>  Instead, setuptools fans insisted on
>their right to have everything "just work" in their sense
>of the word.

Yeah, but they're not as bad as those Python fans with their crazy 
insistence on significant whitespace.   ;)

Seriously, do you really think this is a *bad* thing?


>Most of them probably don't even know what the distutils
>or Python standards are for installing packages, where the
>motivation to have zip imports came from and have only
>ever seen and used the setuptools way.

Um, yeah, because Jim Fulton is such a newbie to Python, surely *he's* 
never had to use Makefile.pre.in to build exotic C exten...  Oh, wait, 
never mind.  :)


>The two camps need to come together again, but that will require
>understanding some of the history and standards that we've
>had in Python ever since Python packages were introduced.
>It will also require the setuptools folks to get some
>feeling of respect for those who have worked in the field
>for years.

I'm sorry, but this is an example of the highly patronizing attitude you've 
been giving on the distutils-sig since day one.  As it happens, I too 
remember the world before distutils.

With due respect, Marc, not every Python developer is you or Fredrik or 
Jim.  There are plenty of people with things to contribute to Python who 
find the distutils upsetting, confusing, or worse.  When I started doing 
work for OSAF, I was very surprised to find out how many developers new to 
Python found the distutils not merely inconvenient (which was my personal 
perspective) but simply unusable.  Some let forth streams of profanity at 
the mere *mention* of the distutils.

So, please consider this: to experts such as you and I, the distutils may 
merely be inconvenient or tedious, something to throw together an 
mxSetup.py or zpkgutil or some such convenient utilities to handle all your 
personal distribution needs and avoid the repetition and tedium.  And in 
fact, setuptools originally began as just such a few extensions for my 
personal use.

But to Python newbies, the distutils is a confusing, broken, undocumented, 
arcane, archaic, unpredictable useless piece of ****, an embarrassment to 
Python, far worse than Java, and many many other things.  And yes, those 
are all things that people have actually said to me.  They really, really 
want things to Just Work, and they say so in so many words.

So when I work on setuptools, I imagine those developers, and I try to 
imagine what they will think and what they will expect.

To be frank, you haven't shown in our discussions that you respect or value 
*those* developers' perspective.  You seem to believe that there are other 
things more important than making things Just Work for this audience.  I 
don't know what those things are, but all I can say is, to me they don't 
exist.  I just can't see it.  Because all I can see is the frustration on 
the faces of developers who were enthusiastic about Python until they 
encountered the distutils.

Distutils *is* great.  It's also unusable for developers who have better 
things to do with their time.  The two are not mutually exclusive, as 
Fredrik has often enough pointed out regarding other problems with Python's 
"public face".


>You may not know it, but having worked with
>distutils for a long time, I have great respect for
>Phillip's work - it's just that I find some of his design
>decisions wrong, since they don't follow the standards.

And that's where we disagree - standards exist to serve users, not the 
other way 'round.  Standards change when times change.  The choice to 
follow a standard is an economic decision for me, not a religious 
one.  Where distutils works for setuptools' goals, I embraced it, and where 
it does not, I extended it.  Call me Bill Gates if you must, but it is the 
*reason* that setuptools is successful, not blogosphere hype (you'll find 
almost as many anti-setuptools blog articles as pro- ones; the majority are 
actually just neutral) or screencasts and pundits (there are none).

It has "fans" because its design choices are strictly Darwinian: whatever 
makes setuptools be adopted by more packages is the right choice for 
setuptools.  Any other considerations have been secondary.  As Guido 
pointed out earlier, "acceptance is critical" for a system like 
this.  That's why the rallying cry is that things should "Just Work" -- 
because that's what people want.


>There's really nothing wrong with the standard distutils
>two step process:
>
>1. download and unzip the source file
>
>2. run "python setup.py install"

First, that's three steps.  "Download and unzip" doesn't come in one-step 
form so far as I know.

Second, you're leaving out the part where you upgrade a package that 
renames or moves or removes a module.  Your response on the distutils-sig 
was that the package author should write a distutils extension to do the 
necessary cleanup, which again highlights a complete lack of respect for 
package authors' time.

Not everyone who can contribute something valuable to Python's library base 
is willing to or even *can* become a distutils expert.  Simple use cases 
like upgrading or even uninstalling a library *should be simple*.  You 
should not have to be a packaging expert to share your package with the world.

I'm not saying setuptools is perfect for this either -- hence the 0.6 
version number for the stable release.  But it's the only thing that's even 
*trying*.


>I've been publishing the mx Tools since 1997. Back then we
>only had the old Makefile.pre.in mechanism and still most people
>managed to get the tools working (step 2 then being:
>"make -f Makefile.pre.in boot; make; make install") without
>having to ask for help. Since I've started using distutils
>in 2001, the number of support questions related to compiling
>and installing the tools dropped to near zero.
>
>I think this is quite a success story for distutils.
>
>Unfortunately, this fact is rarely mentioned in all these
>setuptools discussions, probably because it's just not
>the latest greatest and shiniest tool in the world
>anymore as it was perceived in the early days.

I wish people would stop interpreting setuptools as some kind of a dig at 
the distutils.  Does the existence of Python 2.5 mean that Python 2.4 is 
bad?  Does the existence of third-party libraries make the standard library 
incomplete?



More information about the Python-Dev mailing list