On Sun, Jan 19, 2014 at 08:18:19AM -0600, Neil Schemenauer wrote:
On 2014-01-19, Steven D'Aprano wrote:
[Neil]
- if people install this new version of Python as the default, old scripts and programs will break. [...]
- It gives people an excuse to avoid migrating, and as sure as the sun
rises in the east, will lead to people calling for Python 2.9 a few years from now.
That would be progress though. My proposed 2.8 would have most of the incompatible changes from 3.x so if people port it they will be much closer to 3.x.
Progress towards what, though? You say that they will be "closer" to migrating, but another way to look at it is that they will be *further away* from migrating:
- the only work they have to do is the easy parts, like adapting from zip returning a list to zip returning an iterator, in other words the part of the migration which can be handled by a simple-minded mechanical script like 2to3;
- in return they get access to many of the desirable new features of Python 3;
- which reduces their incentive to tackle the big, difficult, structural changes needed for Python 3 (e.g. handling text as Unicode properly).
To me, that's a step backwards.
One aim here is for the core developers to have one code base to maintain, not two. My grateful thanks to them for taking on all this extra work, and it has been a lot of work, to make it easier for users to migrate, but enough is enough. Adding 2.8 will extend that burden on the core developers by at least three years (18 months of active development plus 18 months of security features); adding 2.9 by the same again. It is entirely appropriate for the core devs to draw a line and say *this is when we stop supporting Python 2*, and that line has been drawn a long time ago at 2.7.
If people don't migrate after a decade, they won't migrate after 16 years, especially if they get "all the good bits" apart from the Unicode text model (which many English speakers don't care about), so what you're actually suggesting is that the core devs agree to an extra 3-5 years of maintaining the 2.x series for the sake of people who will very likely never migrate to 3.x.