July 06, 2010

Will Python 2 ever end ?

It so happens that I have been an early adopter of Python 3. Ever since the first alpha was released back in 2008, I've started rewriting my middleware framework from Python 2 to Python 3. I have to admit, it was beneficial for the project. Not because the language was that better, but because of the ground-up redesign and rewrite, cleaning up the mess. What bothers me is that 2.5 years later I can't expect any significant number of users to even look at the project, because it is in the "future" language.

I'm totally confused. Python 2 is still mainstream and is undergoing active development. Python 2.7 may be the last of the 2.x branch, but still it is released in the middle of 2010. Which gives it at least another 1.5 years of joyous lifetime, even if is declared dead right now. Which means that Python 3 is still not there until 2012. Which means that for 4-5 years it has been a better language which very few actually use.

What I find absolutely ridiculous is the transition strategy. If you want to break compatibility with the previous version - for God's sake, just do it. And the new features - they are supposed to be the sweetener, the bait for the users to make the move. It makes no sense to keep backporting the new features into the already more popular legacy version. Absolutely no goddamn sense. What you get in the end is two versions, otherwise identical, but when the first one is active, popular and widely used, the other one is... uhm... incompatible with the first one ? Seriously, except for the broken compatibility, why Python 3 is different from Python 2.7 now ?

Are the users supposed to switch to the new version, when all they are facing is incompatibilities and no benefits ? This is so wrong...


xenoterracide said...

I think that Python 3 is to Python 2 as Perl 6 is to Perl 5. They're now separate languages in the same family as opposed to successors

Miki said...

> It makes no sense to keep backporting the new features into the already more popular legacy version.
Encouraging people to move to 3.X by "crippling" 2.X will just shed bad light on Python as a whole.

I think that the Python dev team underestimated the importance of library migration and should take much more active role in porting some of the major third party packages (twisted for example) to 3.X

Anonymous said...

Hopefully Unleaden Swallow supports 3. That'll be a huge incentive. Until then, problem is 2.x works just fine.

Anonymous said...

I expect the transition will accelerate once people quit supporting Python 2.5, i.e. sometime after Ubuntu Hardy and Debian Lenny end their support periods. It's nowhere near as practical to write code targeting 2.5-3.x as it is 2.6-3.x, thanks to the syntax and __future__ additions in 2.6.

Also, the PHP 5 transition took 3.5 years, even with plenty of worthwhile improvements to the language (such as a real object system, instead of hacked-up arrays.) So Python is not doing too badly, yet.

Samrat said...

Agreed! I began Python with Python 3 and now I find out most packages aren't ported to Python 3 yet. :(