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.