One of the big beasts of Python has left the building. Ian Bicking created pip (an installer), virtualenv (an environment manager) and WebOb (an HTTP library at the core of Pyramid and several other web frameworks). Besides that, he’s been a major community presence. I, like many others, have long looked to his code as an example of solid principles combined with a focus on getting stuff built.
The announcement is full of the kind of incidental insight you would expect from Ian. Some of it is about personal process — and this is a pattern I can certainly identify with:
Sometimes when I’m feeling particularly excited about an idea, like really excited, I have to take a break. I need to calm down. Try to wrap my head around the ideas, because I know if I push forward directly that I’ll just muddle things up and feel disappointed. No, I don’t know that is true: maybe I don’t want to have to confront, in that moment, that the idea is not as cool as I think it is, or as possible as I think it is. But often I do step back into the problem, with ideas that are more mature for having thought more deeply about them.
He also talks about the development of libraries, from avant-garde to mainstream. You start with a groundbreaking idea. Nobody quite understands it, even the creator, so the thing ends up not quite working. It is only when another developer builds a second generation that the idea can bloom and reach wide acceptance. So pip was the second generation for easy_install and eggs, which, and SQLObject laid the ground for SQLAlchemy:
SQLObject explored a lot of metaprogramming concepts that were quite novel in the Python world at that time. At the same time maintaining it felt like a terrible burden. It took me far too long to resolve that, and only once interest had died down (in no small part due to my lack of attention) did I hand it over to Oleg who has been a far more steady hand. This would be a pattern I would unfortunately repeat. But if SQLObject helped the next generation be better that’s good enough for me.