This week’s post is a reflection on my relationship with Python. Fair warning, it’s going to be a bit rambly.
A few things that happened this week got me thinking about the situation:
- I went to to update my TLS certs for this server, and ended up volunteering to maintain the Let’s Encrypt client I was using. It’s written in Python.
- The alot developers put out a new release, which broke my AUR package.
- I saw an article on Hacker News, where someone decided to fork python 2.7 and start doing new feature development. An annoying python 2 vs 3 flame war ensued.
When I was a college student, and the standard teaching language was Java, Python seemed pretty solid to me. For whatever reason I didn’t build anything with it at the time. It just became one of the dozens of languages I’d dabbled in and could probably get up to speed very quickly if it became necessary. Years went by, I graduated, tried the grad school thing, decided it wasn’t for me, spent a year or so doing tutoring, and eventually got around to getting a full-time devops-type job. I ended up taking over an existing codebase, and it was written in Python, so I learned it. After a few years I knew the language really well. I do contract work these days, and most of it ends up being Python.
I don’t like Python. I don’t hate it, but I’m not a fan. But I’ve got years of experience, and there’s tons of stuff out there written in python, and lots of demand for the skill set. And, often enough, I’m trying to use some piece of software, and it needs some work, and I’ve got the skills to fix it. So I keep using it.
I use simp_le to work with Let’s Encrypt. When I started using Let’s Encrypt, the official client didn’t support configuring nginx, and I wanted something generally simpler anyway. Simp_le is dead simple, and so I adopted it. 6 months ago, the maintainer disappeared. Then, sometime since the last time I updated my cert, the bitrot made it unusable. There were pull requests out fixing the problems, but the maintainer was gone, so they hadn’t been merged. So I forked and applied the patches. I plan to keep it working, and be responsive to pull requests and issues. So now I’m maintaining another Python project.
alot has been in maintenance mode for a while now. Patrick has lost interest in actively developing it, but has at least been responsive to the community. A week or two ago, the community decided to band together to try to do some more active development. They put out a new release, and the docs didn’t build. I sent a patch to fix that, ended up hitting the watch button on the Github repository, and commented on a few other issues. I’m excited about the new activity, and I want to contribute to making this tool better. I use it every day, and haven’t found an email client that suits me better. I look forward to improvements. So I’m now working on another Python project.
And then there comes the flame war. Watching heated debates about Python 2 vs 3 feels rather like watching people who are trying to cut a loaf of bread argue about whether to use a fork or a spoon. There are such better tools out there, and the differences are so small in the larger design space of languages.
I keep wanting to get away from this tool, but there’s too much going on in the community, and I’ve invested too much in the skill set to justify walking away entirely. Grumble grumble.