Great post. Arguments can be enjoyed when people with differing views argue them well.
Let me try and put the counter case as well.
I have to start with the Elvis abducted by aliens just because it is such a great place to start.
I enjoyed your point. But let me counter by saying that the information that some people say 'Elvis was abducted by aliens' does not mean this is what actually happened, but it does tell us that some people believe this! And there is rather surprising information in the fact that 'some people believe Elvis was abducted by Aliens'. Similarly I do not believe 'no-one is using python 3'. I program in python3 (and wish i could for all programming). But it is still interesting that people are saying it.
Other comments inline below:
I think that such a bridge will slow the migration of library modules,
since it reduces the need to migrate. As a library author, why should I
spend tens or hundreds of hours migrating my library to Python 3 when I
can spend 10 minutes adding a note to the library's website telling
people to use the bridge?
The problem with this suggestion is that it does nothing to encourage
library authors to migrate to 3, it simply enables them to delay
migrating even longer, possibly for so long that they lose interest
I suggest the counter point here is to consider life a library developer. Which motivates you: that fact that people using your library all program in python3, or hearing that all your users program in python2?
That's library authors. How about the developers who use those
Right now, there is some motivation for people to move to 3: cool new
features, and getting cooler by the year. With this suggested bridge,
they can migrate to 3 while still remaining dependent on 2. This might
seem like a win if you only focus on the short term uptake of 3, but it
misses the fact that they're still dependent on 2. They've now *trebled*
the number of language dependencies, from Python only to two versions of
Python plus the bridge software.
Are you assuming that it will always be either a) all dependencies require python2
or b) all dependencies are available in python 3. Rather than c) some dependencies are available in python3 but the python3 version cannot be used because I am being held back to python2 by some other critical dependencies.
For the projects i work on, it is c). It is not like there has been no success getting packages to migrate. The problem is that an entire project is held back by one single dependency.
And for us we would wear some pain right now and make that move. Most of the project doesn't have tow steps and can be moved immediately. If a bridge is offered, it would not be a great idea to force everyone to use it. If EVERY imported module is still in python2 then I suggest it is too early to move. Demonstrably, some people like the idea, and I suggest it would be interesting to discover how many. There may be cases where it is not the right choice because too many dependencies are only available in python3 , but alone that does not mean the choice should not be offered. Personally I beleive that now many dependencies can be found in python3, hence the frustration of having to wait until every single one moves seems unfortunate.
Having spent the time and effort to migrate to 3, in a few years they'll
have to go through the same pain again to get rid of the dependency on 2
and the bridge. Nobody will want to do that. The pressure on the core
developers to keep supporting 2 forever will increase, not decrease.
I cannot see that getting rid of the bridge would be that difficult, particularly if it is not for many modules. The real pain is living in world where there is so much holding everything back to the older version. Again, let me declare the self interest here. We have development teams and projects we wish to move to python3. A bridge like this would allow us to move now, and that would allow pressure on the module providers. Stopping a step like this on the basis it stops people like us moving to python3 just seems counter productive if the goal is to move to python3.
> This is an important debate to have. I suggest if the answer to 'can a
> specification be created that will significantly accelerate migration?',
> then it is worth the effort to deliver this.
I think you are making a classic mistake of technically-minded people:
looking for a technical solution to a social problem.
The problem with Python 3 uptake is not a technical problem, or at least
not *only* a technical problem. It is mostly a social problem: the costs
of migrating are greater than the benefits. Python 3 is great, but for
most people Python 2 does the job.
I am a person experiencing the problem. And our experience is that our core developers use code supplied by a third party who does not produce a python3 version. So the core has to be done in python2. The code produced by these core developers is then supplied to other companies - forcing them to stay in python2. It is dependency hell. One module anywhere down the chain that cannot be moved and the whole project is forced to stay python2.
Another social problem is that the minority of library authors who
haven't migrated haven't done so because they personally don't care
about Python 3, or they don't have the time or money to spend on it.
Adding a bridge doesn't suddenly give them more time or money.
Agreed. But in the real world, an example of a major dependency requiring python2, web2py, states they will be motivated to python3 when the users of their framework move. But this policy of forcing all dependencies to move before the end users move means this will never happen. What it does mean is many of their customers can move. And it is even possible for them to ask their holdout customers to either stay with the old version or move, since these customers are no longer held back by other dependencies.
For application developers, the social problem is less because of a few
libraries and more to do with the supported standard Python on their
system. That will change once Linux distros start providing 3 as their
standard system Python; out of the big distros, Fedora is about to do
so, so things will start changing soon.
But perhaps the biggest reason for slow uptake of Python 3 with existing
projects is that nobody wants to spend money just to migrate to 3 for
the sake of migrating to 3. "Written in Python 3" is not a selling
point. Even the availability of security updates is not much of a
selling point, although it will become more important when Python 2.7 is
end-of-lifed. The reality is that many apps work perfectly well now
using Python 2.7, or 2.6, or even 2.4, and they'll continue to work well
in five or ten years so there's no real need to update. At the last US
PyCon, there was even one fellow still using Python 1.5. It works, he
didn't need security updates, so why migrate?
Perhaps the biggest reason ..... Why not ask? Well, python.org conducted a survey as of January 2014 an answer given was that 60% of developers were held back from moving projects because of dependencies. This is a big number and it is not just guessing but real figures.
*This is not a problem to be solved.* It's okay for people to stick with
an old version of Python. There's no rule that says Python has failed if
some developers stick to old versions.
OK. So you are telling us forget moving our developers to python3 until every last dependency has moved. And we should also force the people who in turn use our code to stay with python2 and it is not a problem.
> As things stand, the popularity of Python has dropped by most measures
> since the release of Python 3. Improve the language and lose market share?
> I suggest that is all about the pain of the transition.
That sounds remarkably like FUD to me. Where is your evidence that the
popularity of Python has fallen?
Personally, I think all the "language popularity" measures are dubious,
or at least need to be treated with considerable skepticism. Take this
which lists BrainF--- in the 40 most popular languages. Sure it is.
The PyPL popularity index here:
Thanks for that- useful link! Please remember I am the converted, so it helps to have arguments to push back with when others push tiobe in front of me.
shows Python as increasing in popularity. In contrast, TIOBE shows
Python as losing popularity -- but so did Java, PHP, C++ and Ruby, and
none of them have a major version change. (TIOBE also shows that despite
a large number, possibly majority, of VB 6 developers boycotting VB.Net,
VB.Net has just entered the top 10 most popular languages.)
And then there's CodeEval, which for the third year in a row has found
fact more popular than Java, C and PHP *together*.
Perhaps overstated, but it helps to have sources like this. It does say coding tests and challenges. I live in a country where school children have one national coding contest/challenge, and it is in python. (And in python 3, no dependencies :) )
Bless their little white socks, but methinks their methodology is
perhaps a tad flawed.
I think it is interesting to compare and contrast these different ways
of measuring popularity, but then I'm a statistics wonk and I find even
flawed statistics interesting. Remember that there is no one true
definition of popularity, even if there were there is no accurate way of
measuring it, and all of the sites that claim to do so are actually
measuring subtley different things.
Most importantly, chasing popularity for its own sake is a waste of
time. What makes Python Python is not just the syntax and std lib, but
also the culture -- we're neither the stultifying corporate culture of
"Java shops", nor the wild-west anything goes of cowboy PHP developers,
but something unique. (As are other languages, of course. Perl culture
is not Haskell culture is not Erlang culture.) In part, people take up
languages because they like the culture. Python will never attract the
corporate suits who like the Java philosophy, nor will it attract the
cowbody web developers who like the PHP way of doing things. Should we
try to ape PHP or Java to attract the cowboys or suits? Or should we
continue to make Python the best language that *we* like, regardless of
what other people prefer?
All agreed on the culture. But i suggest this is the biggest point. Stopping measures like a bridge that would allow many more end users to code in python3 just seems a negative culture. Effectively you are telling us that our team should not move to python3.
Untimately, apart from winning pissing contests on Slashdot and Reddit,
what does it matter if Python is third most popular or ninth most
popular? Its not a popularity context where the winner takes all.
According to TIOBE, the most popular language, C, has less than 20%
share. If you think Python is a failure because it is in position 8,
> You do not have to search hard to find comments to the effect 'nobody is
> using python3'. Or 'even if you use python 3, do not use the new features
> since you need to ensure code is compatible with both versions'.
You don't have to search very hard to find comments that Elvis was
kidnapped by aliens.
A belief which has rather more going for it than either of the two
comments you list above, since there's a miniscule, microscopic chance
that perhaps Elvis *was* kidnapped by aliens, whereas I know for a fact
beyond any doubt that some people are using Python 3 and using the new
I think I already covered this one. Again the point is that some people say it. We both know it is not literally true. If i did not program in python3 I would not bother posting suggestions to try and allow more programming in python3.
Python-ideas mailing list
Code of Conduct: http://python.org/psf/codeofconduct/