
Fedora Linux will switch to Python 3 by default - Tsiolkovsky
https://fedoraproject.org/wiki/Changes/Python_3_as_Default
======
yuvadam
This is a good move towards real adoption of Python 3, and doesn't have as
dire consequences as it seems.

Distros that use Python 3 by default (such as Arch and Gentoo) still allow for
Python 2 to work side-by-side with Python 3. Proper separation using
virtualenvs works seamlessly, and there's no problem at all to work
simultaneously on Py2 and Py3 projects.

~~~
JulianWasTaken
This is untrue about Arch, but true about Gentoo and seemingly will be about
Fedora. Your experience with "Py3 default distros" has a bit to do with what
version `python` points to. You certainly can get by with virtualenv all over
and / or setuptools rewriting shebang lines but it's less convenient.

From the two sections in here it appears that Fedora will stick with `python`
pointing to Py2, so that's good news.

~~~
viraptor
What's untrue about Arch? /usr/bin/python is python3 by default in there.

~~~
emhs
What Fedora is planning is leaving /usr/bin/python pointing to Py2, but making
all their tools explicitly depend on and request Py3. This is distinctly
different from the Arch decision, which instead resulted in fixing everything
that expects `python` to mean Py2 to explicitly request Py2, or assisting with
the porting process to Py3 for those applications.

------
simonh
A lot of the comments here seem to me to be based on a confusion between
Python as a development tool for users and developers, and Python as a base
operating system component. These are two very different roles that the
language fills.

IMHO confusing these roles and providing, or expecting one install of a
language to fit both simultaneously has been something that's irritated me
about Unix-like OSes for a long time, much as I love them.

Yes I know there are plenty of tools for installing dev versions of tools side
by side with the system components. IMHO doing so should be the default
assumption unless you really are developing system scripts or scripts that you
explicitly expect to be limited in scope to that OS.

~~~
memracom
I try to never use any distro installed Python or libraries when developing
Python software. In fact, I even went to the trouble of creating a self-
contained Python build that had no dependencies whatsoever on distro-installed
libraries. That way I have even more control over the foundation of my
applications than you get with virtualenv.

Next time I do some Python development (other than system admin scripts) I
will be using Python 3.4. And I will likely also create a self-contained build
of that as well.

------
jol
Ok, so I'll state the obvious - it took almost 6 years from release of python
3.0.0 (2008-12-03)[1] till fedora adopting it. And I thought that cheap PHP
hosts takes long time to upgrade PHP version.

Can someone with knowledge of python ecosystem explain what took a major
distro so long, given that you could run different versions of python in
parallel (or couldn't you?) for some of big pro software that needs the old
version? [1] -
[http://python.org/download/releases/3.0/](http://python.org/download/releases/3.0/)

~~~
jliechti1
You can see some reasons from one of the core developers here [0]:

 _" We (i.e. the Python core developers) predicted when Python 3.0 was
released that it would take about 5 years for 3.x to become the "default"
choice for new projects over the 2.x series."_

He suggests the 5 year timeline begins in June 2009 with the release of 3.1
(since 3.0 still had many bugs) - so that means there is a little more than
half a year left for it to become the default, if the prediction holds true.

The rest of his post goes into the issues in adopting Python 3.x.

[0]: [http://programmers.stackexchange.com/questions/63859/why-
do-...](http://programmers.stackexchange.com/questions/63859/why-do-people-
hesitate-to-use-python-3)

~~~
vdaniuk
Thanks for sharing this information. I am interested what strategies can be
applied to increase the speed of language adoption.

~~~
16s
There are large working Python 2 code bases in a lot of organizations. It
works great. Fabulously reliable. Extremely well-tested. Been running great
for years. They have no desire or need to upgrade and will run Python 2 and
pay devs to maintain it forever.

Welcome to the real world.

~~~
SeanDav
You are right, just as there are still COBOL applications around.

------
throwaway9101
Fedora 22 is ... 3 releases out? So we're talking about 12-18 months depending
on how soon F20 is due to be released. Still, I'm surprised, and I've been a
Fedora contributor since FC5.

------
drill_sarge
The interesting thing is of course: >DNF is the default package manager
instead of Yum, which only works with Python 2

Otherwise no big news, since all other major distros are switching to default
python 3 too.

~~~
qznc
DNF is a fork of Yum, so not that big news either.

~~~
drill_sarge
This whole thing is no _big_ news at at all. I wonder what they define with
"scope". If they are talking about 21+22 thats around ~12 months ahead, so
even less big news.

------
thearn4
A good way to get folks to make the switch.

I just wish Python 3 didn't benchmark so much slower than Python 2 in some of
my use cases (though I still aim for compatibility with it).

Couple of relevant search results:

[http://stackoverflow.com/questions/14911122/same-code-
slower...](http://stackoverflow.com/questions/14911122/same-code-slower-in-
python3-as-compared-to-python2)

[http://pythonadventures.wordpress.com/2013/08/15/python-3-is...](http://pythonadventures.wordpress.com/2013/08/15/python-3-is-
slower-than-python-2/)

Has anyone else experienced this?

~~~
throwaway9101
Codechef appears to use Python 3.1.2 for "Python3", which is pretty old (March
21st, 2010) and predates some significant performance improvements in
Python3[0].

[0]: E.g., 3.3 adds a more efficient encoding for ASCII-subset unicode
strings: [http://docs.python.org/3/whatsnew/3.3.html#performance-
and-r...](http://docs.python.org/3/whatsnew/3.3.html#performance-and-resource-
usage)

------
ushi
I think it is a little bit silly for a distro that claims to be bleeding
edge... (freedom. friends. features. FIRST.)

~~~
broodbucket
Fedora is very much bleeding edge as far as stable distributions with set
release cycles goes. First in the category of Ubuntu/Debian/openSUSE, not in
the category of Arch/Gentoo.

------
puppetmaster3
This is not news. All distros will. News would be: Fedora, that normally is
late, has switched to Python 3 a year after others.

------
oddshocks
"DNF is the default package manager instead of Yum, which only works with
Python 2"

This will be interesting.

------
yiedyie
This will make some people to switch to other distributions, because in some
cases making your software compatible with Python 3 is harder than changing
distributions.

~~~
reidrac
I don't think so because it is really easy to install Python 2 and have _both_
versions installed.

I'm already doing that, the difference is that "python" for me is Python 2 and
I have to run "python3" to use Python 3. Other than that, I can't see any
problem. You can install packages for both versions, the distros usually add a
number (ie. python-django, python3-django).

~~~
keypusher
That will still be the case. As the proposal makes clear, this will make the
system tools use Python3, but "python" (/usr/bin/python) will still point to
python2.7

------
cafard
I understand the ressons for moving to Python 3. But I'm glad that most of my
Python code runs on Windows.

------
pippy
I'm still using python 2.7 because many of my libraries require it, such as
wxwidgets and pygame.

~~~
jamesgeck0
PyGame actually does mostly support Python 3. Their binaries seem to be a
little old, though.

------
jessaustin
I wonder if this has any effect on the plans for CentOS? Somehow I suspect
there would be more wailing and gnashing of teeth from that user community.
(Not a criticism, just an appraisal of what CentOS folks do and how they're
set up.)

~~~
stock_toaster
CentOS still has python2.6 as the default. Several people I know who use
CentOS with python just build their own python2.7 anyway -- at $dayjob, I
build python2.7 and package it up with fpm[1] and drop it in our internal
repo.

[1]:
[https://github.com/jordansissel/fpm](https://github.com/jordansissel/fpm)

~~~
jessaustin
Great link to fpm! I'm definitely going to check that out.

~~~
stock_toaster
Gushing a bit here, but it makes packaging things up soooo much nicer. It
doesn't cover every use case of packaging, but it hits the sweet spot for
quite a few things.

------
mistercow
Is there a good reason that the Python project didn't just adopt a new command
name and file extension for Python 3? It seems like that would have made the
migration a lot less painful.

------
sigzero
Great news!

------
dancecodes
it so bravery

