[Python-Dev] [RELEASED] Python 2.7 alpha 2

"Martin v. Löwis" martin at v.loewis.de
Mon Jan 11 22:42:45 CET 2010

> So the question we should be asking is: what's missing from Python
> 2.7 to help with this transition?

Wrt. the distribute feature you've noticed: Python 3.0 already supports
that in distutils. So from day one of Python 3.x, you could have used
that approach for porting Python code. I had been promoting it ever
since, but it's taking up only slowly, partially because it has
competition in the approaches "burn the bridges" (i.e. convert to 3.x
once, and then have two code bases, or abandon 2.x), and "avoid 2to3"
(i.e. try to write code that works in both 2.x and 3.x unmodified).

> If we can't get it into 2.7, then
> why, and would pushing it back to 2.8 help at all?

I've done a fair bit of 3.x porting, and I'm firmly convinced that
2.x can do nothing:

a) telling people that they have to move to 2.6 first actually
   hurts migration, instead of helping, because it implies to them
   that they have to drop old versions (e.g. 2.3.) - just because
   they had *always* dropped old versions before supporting new ones.
b) IMO, people also don't gain much by first migrating to 2.6.
   In principle, it gives them the opportunity to get py3k warnings.
   However, I haven't heard a single positive report where these
   warnings have actually helped people in porting. Yours is the
   first report saying that you followed the official guideline,
   but you didn't state whether doing so actually helped (or whether
   you just ported to 2.6 because the guideline told you to).
c) whatever 2.7 does (except perhaps for the warnings), it won't
   be useful to applications, because they couldn't use it, anyway:
   they need to support 2.4 and 2.5, and it won't have any of the
   gimmicks people come up with for 2.7. Adding gimmicks to 2.7
   might actually hurt porting: people may have to special-case
   2.7 because their work-arounds for older versions may break in 2.7
   (e.g. testing whether a name is *not* defined, when it becomes
   defined in 2.7), plus it gives them an incentive to not port
   yet until they can drop support for anything before 2.7.

Inherently, 2.8 can't improve on that.


More information about the Python-Dev mailing list