This is a rebuttal to the blog post Python 3 Is Killing Python by Stephen A. Goss.
At the time that post was written, I may even have agreed with it. Every project I had to migrate from 2 to 3 seemed a mighty pain and, at that time, felt like there was little benefit forthcoming. There was always a dependancy or two that wasn’t compatible with 3 and their authors seemed stalwart in keeping it that way.
Now, however, I think the problem has come full circle and it’s about time we all just let go and let Python 2 burn. Why? Simple; the pursuit for cross compatibility, between 2 and 3, is a nightmare. The amount of times, in the past few years, that I’ve come across a bug and wondered “why on earth are they doing it this way?”, only to change the code; run
tox and realise all that mess was so the code runs on 2 and 3. I don’t understand why we’re spending so much time making new stuff work with 2. All major distros now ship with 3 (even if it’s not the primary implementation) and there are good tools to help you with this, such as Homebrew / Linuxbrew. A long time ago, I even wrote a tool for installing different versions (I’m not sure it even works anymore).
A few years ago, I decided that any new work I started with Python was going to be 3. Even if this meant porting libraries myself, so be it. Unfortunately, there are still libraries still only 2 compatible and so many tutorials and documentation that’s only geared towards 2. This needs to be changed. Whether you like it or not, Python 2 is dead. All the cool new stuff, like
yield from, are only found in 3. Of course, in 2020 there will be no security fixes for 2 at all (probably).
In conclusion, let’s do all we can to promote 3. It’s full of great new stuff and it’s only going to get better. 2 is dead and any effort spent on keeping it alive in a codebase is just tech debt. Imagine the day when we’re all going to have to go back through and remove every
six hack (that alone should put you off). After this, we can push forward and go back to enjoying just how awesome Python is.