2019-12-11
Fedora is got a good choice if long term stability and usability is a high priority
Every so often I hear about people running servers or infrastructure that they care about on Fedora, and my eyebrows almost always go up. I like Fedora and run it by choice on all of my desktops and my work laptop, but I'm the sole user on these machines, I know what I'm getting into, and I'm willing to deal with the periodic disruptions that Fedora delivers. Fedora is a good Linux distribution on the whole, but it is what I would call a 'forward looking' distribution; it is one that is not that much interested in maintaining backward compatibility if that conflicts with making the correct choice for right now, the choice that you'd make if you were starting from scratch. The result is that every so often, Fedora will unapologetically kick something out from underneath long term users and you get to fix your setup to deal with the new state of affairs.
All of this sounds very theoretical, so let me make it quite concrete with my tweet:
Today I learned that in Fedora 31, /usr/bin/python is Python 3 instead of Python 2. I hope Ubuntu doesn't do that, because if it does our users are going to kill us.
I learned this because I've recently upgraded my work laptop to
Fedora 31 and on it I run a number of Python based programs that
started with '#!/usr/bin/python
'. Before the upgrade, that was
Python 2 and all of those programs worked. After the upgrade, as I
found out today, that was Python 3 and many of the programs didn't
work.
(Fedora provides no way to control this behavior as far as I can
tell. What /usr/bin/python
is is not controlled through Fedora's
alternatives system;
instead it's a symlink that's directly supplied by a package, and
there's no version of the package that provides a symlink that goes
to Python 2.)
This is fine for me. It's my own machine, I know what changed on
it recently, I don't have to support a mixed base of older and newer
Fedora machines, and I'm willing to put the pieces back together.
At work, we've been running a
Linux environment for fifteen years or so now, we have somewhere
around a thousand users, we have to run a mixed base of distribution
versions, and some of those users will have programs that start
with '#!/usr/bin/python
', possibly programs they've even forgotten
about because they've been running quietly for so long. This sort of
change would cause huge problems for them and thus for us.
Fedora's decision here is not wrong, for Fedora, but it is a very
Fedora decision. If you were doing a distribution from scratch for
today, with no history behind it at all, /usr/bin/python
pointing
to Python 3 is a perfectly rational and good choice. Making that
decision in a distribution with history is choosing one set of
priorities over another; it is prioritizing the 'correct' and modern
choice over not breaking existing setups and not making people using
your distribution do extra work.
I think it's useful to have Linux distributions that prioritize this way, and I don't mind it in the distribution that I use. But I know what I'm getting into when I choose Fedora, and it's not for everyone.