[python-uk] Python 3 thread 2015 edition (was Re: UK based Pythonistas as candidates for the PSF board)
theology at gmail.com
Tue May 5 01:52:22 CEST 2015
On 4 May 2015 at 21:47, Andy Robinson <andy at reportlab.com> wrote:
> I'd probably have to become an advocate for a move to Python 3, which
> would involve fending off bankruptcy while we try to upgrade 15 years
> worth of corporate apps without our clients' agreement ;-)
If they had known that, after the best part of a decade later, the
majority of commercial deployments would be still using Python 2,
would they have done it differently?
Practicality beats purity - a high level dynamic language never has to
break upstream code; it is all interpreted and compiled into byte code
anyway, so the interpreter should just accept Python 2 and Python 3
code. I think the PyPy people were talking about this as a possibility
at one point.
What is the Linus Torvalds saying? Something like "If you decide there
is no option but to make changes that break upstream, before you go
ahead, first shoot yourself". (Maybe it had swear words in it as I
cannot find the exact text now.)
If one does not have to support 3.1 and 3.2, and you can just jump to
3.3+, then life is much simpler as they backtracked on some of the
most egregious breakages and so it is easy to have code that runs on
Python 2 and 3.
Python 3 is a marginally nicer language but it is one of those API
breakages that doesn't immediately benefit the customer so doesn't get
paid for in the short term. At least they don't break the API every
version like some famous web frameworks that shall remain nameless.
But none of this matters as it will all work out in the end. Your
customers will eventually want something that requires a feature which
does not get backported to Python 2, then they will have to pay for
the code conversion.
I switched my head over to Python 3 when asyncio module was added to
the standard library. It was a feature compelling enough for me to
switch. (Of course, that example works the other way too, since people
in the community have backported it to Python 2 anyway.)
I personally find adding Python 3 support to code one of those very
therapeutic activities (so maybe I should add that to my freelance
services I offer :) but it does require the code to be in tip top
condition when you begin. If the code already gets no errors in Pylint
or PEP8.py, it is fairly straightforward to support Python 3. If it
has unit tests, they normally help a lot too, as long as you can
easily port them to Python 3 first.
More information about the python-uk