Elitism, and the frustrating necessity of PYPI

I recently started using a really clever, helpful module I found on PYPI (all names redacted to protect the guilty). I found a small bug in it, so I emailed the author. He wrote back and told me the bug had been fixed, and new versions were available on launchpad. I assumed this meant in the development tip that hadn’t been released yet. Instead, I was suprised to find that what was on PYPI was three major releases out of date. So I wrote back to him to ask him to push a new version - I even included the exact setup.py commands to run. This was the reply I got:

Yes I know, I should do this, but I hate such complex and silly technologues as easy_install and eggs and everything that transforms Python into a Java-like ugly piece of “programming-tool-for-the-dummy-masses” ;-)

I’m just stunned. Programmers certainly have a reputation for arrogance, but to see it so clearly on display from the author of a GPL’d module is just shocking. Why do we open source our code, let alone GPL it if not to have as many people use it as possible? Try as I might, I cannot get my ahead around this way of thinking.

I’m no fan of the current state of Python packaging, as I’ve written before. I don’t like setuptools much either. Heck, I once gave a talk titled Using Setuptools: Your Head vs. The Wall. PYPI is better, but not much. Text search is barely functional (substring? really?), the trove classifiers are useless, it’s cluttered with abandonware, and the lack of signed packages is a security disaster waiting to happen. Yes, I’m whining, and no, I’m not going to do anything about it - I can only fight so many battles at once. But for better or for worse, it’s what we’ve got.

Therefore, in the spirit of Docs or it Doesn’t Exist:

If it’s not on PYPI, your package doesn’t exist.

With the advent automatic dependency installation, no one is going to hunt around the web looking for the latest version of your package. Between various projects, I have tens or hundreds of third party modules in use - tracking all of those down by hand like the bad old days simply isn’t feasible. PYPI and easy_install have made me vastly more productive - allowing me to create new projects quickly and automate deployments. Hardly the kind of thing done by the “dummy-masses” - and it all works only because developers post their packages on PYPI. Yes, the tools suck sometimes - but your package is not special enough to make me give them up.

Since a reminder is apparently needed, here’s how you get your code up. This works with straight distutils (no setuptools needed) and requires a PYPI account:

python setup.py sdist
python setup.py register
python setup.py upload


PYPI uploads: for $DIETY’s sake, just do it.