Tuesday, October 13, 2009

A Clarification Or Two

It seems that one aspect of the response to my announcement yesterday was one I didn't anticipate: people assuming that my statement about uninstalling Distribute was some sort of snark or an attempt at competition, power plays, etc.

But since the annoucement was made to the Distutils-SIG mailing list, I assumed anyone reading it would already know that having both Distribute and setuptools on sys.path would in most cases cause you to still be using Distribute, and not setuptools.

And just as obviously, it would mean you were testing Distribute, rather than setuptools, thereby invalidating the usefulness of any test results.

As for the comment about bugs being fixed differently, I wanted to make the point that testing Distribute does not equal testing 0.6c10; people should not assume that 0.6c10 has already seen as wide usage as the Distribute code has.  I just wrote it this weekend, for heaven's sake.   (Conversely, if someone is concerned about some of the bugs that were on the setuptools tracker, they deserve to know that not all the patches on the tracker -- and used in Distribute -- were correct or complete, in my estimation.)

Was there a teeny bit of annoyance in there as well?  Might the tone of that paragraph have been a little off?  Perhaps.  I edited it several times, trying to minimize any show-through of annoyance, and keep it 100% neutral/factual, but I can certainly believe that a bit of it came through anyway.  I am annoyed, after all.

I'm annoyed that I had to prepare this release.  I'm annoyed that people rant about me not doing anything, and then the same people turn right back around and rant when I do do something.  I'm annoyed that setuptools has been widely blamed for yet another problem that it didn't actually create.  (Two, actually: the 2.6.3 problem itself, and then the subsequent brouhaha on Python-Dev.)

Sure, I'm annoyed about lots of things.

That doesn't mean I want anybody to uninstall Distribute, for any other reason than that they'd rather use setuptools.

After all, I'm making a new release of setuptools primarily so people have the option of not being forced to use Distribute -- and so that Python-Dev isn't forced to make a new Python release just for the benefit of setuptools users.

So it's certainly not my intention to force anyone to use setuptools.  I'm not even trying to persuade anyone to use it in place of Distribute, for heaven's sake.  (Hell, if you're interested in Python 3 support, Distribute is the only game in town right now. Oh, and I even suggested that Guido put Distribute in the stdlib...  and despite the smiley, I wasn't kidding.)

In short, not being forced to do one thing, is not the same as being forced or persuaded to do the opposite.  Capisce?

Okay, that's all, you can now return to your regularly scheduled blaming and flaming.  Pay no attention to the man in the corner, trying to do something useful.

P.S.  There are people I'd trust with maintainership (or at least committership) of setuptools who are working on Distribute.  It's the public nastiness of certain parties that torpedoed the negotiations on that topic back in July, despite the oft-repeated claims by some that I wouldn't turn over the reins to anyone.  See, for example, this attempt to open discussions on that line, or the last paragraph of this, where I expressed excitement at the idea of having 0.6 get cleaned up by someone else.  (OTOH, if I'd realized it would only take me a weekend rather than a couple of weeks to clean up the backlog, I'd have done it six months ago!  So, that bit of delay is my fault.)

Also, for anyone who thinks that my announcement of this release was completely out of the blue, please see the "new setuptools release" thread on Python-Dev, in particular, the post where I said I was planning to make a new release this week, by this Monday, in order to address the outstanding issue with 2.6.3.

P.P.S. Let's keep it constructive in the comments, shall we?  Comments that show no sign of their author's having read and grokked this entire post (and the items linked to above)will be summarily deleted, no matter how otherwise thoughtful the comment might be.

Frankly, anyone who can read all the links I just gave, and still think I'm deliberately trying to put one over on anybody, spring unannounced surprises, hijack Distribute in some way, or unwilling to hand over significant chunks of setuptools responsibility, well...  let's just say that hypothetical person is not being very charitable, and leave it at that.  Here's hoping you're better than that.

Monday, October 12, 2009

That wasn't so difficult, was it?

So, a few weeks ago, Python 2.6.3 was released with a change to the distutils that broke backward build compatibility for a few libraries, like pywin32, setuptools, and every other package using setuptools to build C extensions in a package.

After wading through huge piles of Python-Dev and Distutils-SIG emails in my inbox every day for a week or so, it became clear to me that it'd be a lot more efficient to just make a new release of setuptools than to try to correct all the myths and misapprehensions, or even just the deliberate mischaracterizations, misappropriations, and outright bald-faced lies.  (As the old saying goes, a lie goes halfway 'round the world while the truth is still putting its shoes on!)

Indeed, spending the weekend bringing setuptools up to date was downright fun by comparison, and the results are now in SVN, ready for you to try them out.  Not only did I implement fixes for virtually all the outstanding bugs in the setuptools tracker, but I also tackled a few that aren't in there but personally annoyed me, like Vista's UAC warnings when you try to run easy_install.

Anyway, I'll be cutting an official release (0.6c10) in a few days, so please be ready if your project infrastructure relies on fetching the latest setuptools version from PyPI.  I'm actually pretty excited about this release, because it represents the finish-out of all the 0.6 maintenance cruft that I wanted to do before working on new features in 0.7a1, and starting on the improved package manager that I've been babbling about for years.

On the other hand, I'm less than excited to have people believing some of the rubbish that they do, and it's even less pleasant to imagine that it's spreading.

I do understand that some people are angry about the long wait between setuptools releases, and that's their right.

It's also their right to do something about it, and for the brief time when they were taking the high road -- i.e., 1) being courteous, and 2) not engaging in a public FUD campagin -- I tried to help and participate, and even offered to release the fork as an official version.  Heck I was even excited about the possibility.

But apparently, my positive attitude was too "suspicious" for some people to accept, and others took my search for a qualified maintainer very personally.  And now, various people are claiming the fork is "official" or "blessed", when it never was...  that it's backward-compatible with setuptools, when it's not...  and that it fixes various bugs...  that in fact it doesn't.

And it seems that the collective anger in some quarters has reached such a fever pitch that anything positive I do is still considered "out of the blue" and suspicious.

It would be nice if I could say I was 100% above the no-good-deed-goes-unpunished philosophy of the programming herd.  Certainly, this sort of rampant negativity -- and the corresponding negativity in me that it tends to trigger -- is a big reason I wanted out of professional software development in the first place.  While there are a lot of cool people in the business, a large number of others are...  shall we say, rather unpleasant?

I had hoped to just move forward and pick things up where I left them last year, when I started taking time off to do some serious work on non-programming projects -- and I had no idea when I started it'd be a whole year.

But it seems that I've underestimated just how upset some formerly-(relatively)-happy users of setuptools are with my (relative) disappearance.  And so it's understandable that showing back up with nothing more than a, "Hey, long time no see, here's an update I'd like you to test" might be...  less than satisfying.

So, for all of you long-suffering setuptools users, I'm sorry.  I should've communicated better about my status and plans, and I would have if I'd had any idea what they were myself.

It didn't help that I fell prey to a bit of an entitlement attitude, after so many distutils-sig flamewars over all sorts of minutiae that tended to make me think of anyone proposing changes to setuptools as being an idiot by default.  Among other things, I forgot that the fact that plenty of other people being wrong, doesn't necessarily make me right.

But you do need to understand: I'm not working on setuptools to get back into anyone's good graces but my own.

You see, over the last few weeks there've been a lot of emails on the distutils-sig and Python-Dev from people who are upset at having to leave setuptools.

And I want them to be able to have an actual choice about whether they start using another package or not.  Some have said that it's not fair game for the very people promoting the use of another package, to force them to do so by changing Python.

And I agree, which is why I've done what I've done.

Now, I realize that this isn't going to do much for the people who're already mad as hell and don't want to take it any more.  But when it comes right down to it, being mad is your choice, not mine.

In the same way, I could choose to be forever angry about what seem like numerous unfair, unjust, unexcusable slights dealt out to me.  And I could keep lashing out in anger at the people I think are responsible for my pain.

But that won't make them stop, and it won't make anything better.  At some point, you have to decide what it is that you want instead, and move towards that, instead of trying to "solve" an existing "problem".

So, that's what I'm starting now.

See, for the last several months I've actually been walking on eggshells, trying to not say anything that anyone might be offended by, or announce any plans that anyone might accuse of being "suspicious".

Now, though, I realize that my silence and bending over backwards was actually adding to the problem.  It gave some people the idea I agreed with things I didn't agree with.  It didn't communicate anything to the people who needed to know what was going on with me.  And it even discouraged me from actually doing anything, because I wasn't sharing the excitement and ideas that motivate me.

I kept thinking that there'd be a "right" time, that if I just lay low long enough, I could go accomplish some things and come back and say, "ta da!" and make everything better.

Well, you can see how well that worked.

So, new plan starts now.

Stay tuned.