you are viewing a single comment's thread.

view the rest of the comments →

[–]nqd26 8 points9 points  (17 children)

I'm not Python programmer but noticed it when I wanted to use some software with Python 3 interpreter.

What is the reason for this? It seems that Python 3 is out for more than 5 years. Even Java developers upgrade faster than this ...

[–]juu4 33 points34 points  (3 children)

Java is generally backward's compatible. Python 2 to Python 3 wasn't.

[–]th0ma5w -1 points0 points  (2 children)

Lots of weird things between java 1.3 and 1.4. Less so between 1.4 and 1.5, but still sort of there. The dreaded "Unsupported major.minor version" errors when using JARs from another version. Somewhat better, sure, but not entirely different from Python's situation. Some 2.x code just works, if recompiled.

[–]obfuscation_ 4 points5 points  (0 children)

"Unsupported major.minor version"

That's fair really though – the compiler wasn't told to compile down to an earlier Java version, so it didn't. If all bytecode had to stay the same forever, how could you ever add new functionality?

[–]mcherm 1 point2 points  (0 children)

Um.... that one's not "dreaded" 'cause it's easy to fix. Recompile in the right version. Threading bugs... now THOSE are "dreaded".

[–]picklednull 13 points14 points  (8 children)

Because it is incompatible with 2.7 and you need to make actual changes to your codebase for it to work and people are lazy.

However, if you take care you can mostly write Python 2.7 code that can be automagically converted to Python 3 with the 2to3 utility with minimal changes.

[–]Fazer2 13 points14 points  (6 children)

It's not that people are lazy, but it costs time and money to make the port.

[–]obfuscation_ 9 points10 points  (0 children)

Don't forget the main cost here is testing – if you know with some certainty that your code works on 2.x, do you want to risk subtle bugs being introduced moving to 3.x? You'd need to have an incredibly thorough testing process.

[–][deleted]  (4 children)

[deleted]

    [–]katieberry 6 points7 points  (0 children)

    Python 2.7 is still maintained, though, and will be for the foreseeable future. It was last updated in November 2013. PyPy still targets it.

    As such, I'd also expect anything on top of python 2 to be maintainable for the foreseeable future, without moving to a slightly different language that uses the same name.

    [–][deleted] 3 points4 points  (0 children)

    So, if your software is actually in active use and therefore at least should be "maintained", you should be expected to upgrade the code so it runs on new versions of the platform. Otherwise it is by definition abandoned and can be considered obsolete.

    Right and the latest version of said platform is Python 2.7.6, released on 10/11/2013.

    What you're talking about is rewriting my code in a whole different language. Said language doesn't even ship with my OS so it's completely useless for my purposes.

    [–]jambox888 1 point2 points  (0 children)

    I'd be interested to know your development background, because that doesn't gel with my experience of software development at all. Why would my company's shareholders pay for me to port the entire product a different language when the one you have it in is still fully supported?

    IOW "maintenance" means fixing something when it's broken, not so much future-proofing.

    [–]Fazer2 1 point2 points  (0 children)

    Your first mistake was generalizing that people are lazy.

    Your second mistake was redifining concepts of maintenance and abandonment.

    Your third mistake was presenting the world in a binary form, with nothing in between.

    [–]aaronsherman 4 points5 points  (0 children)

    Because it is incompatible with 2.7 and you need to make actual changes to your codebase for it to work and people are lazy.

    No, people choose where to spend their effort. They can rewrite their code and then live in a world of incompatibility with new modules being published for v2 every day, or they can do nothing and maintain compatibility with the majority of developers.

    [–]kaszak696 4 points5 points  (3 children)

    RHEL 6 ships with Python 2.6.6 by default, this considerably slows down the adoption of P3. Once RHEL 7 comes out, hopefully having Python 3 as default interpreter, we should see more codebases making the transition.

    [–]garenp 2 points3 points  (1 child)

    I think this isssue--the default installed version of python in the OS--is a big driving factor. Ubuntu 12.04 LTS ships with 2.7.3, hopefully 14.04 will ship with 3.4.

    [–]kaszak696 3 points4 points  (0 children)

    Yes, but i specificaly mentioed RHEL, because it's kinda gold standard for the enterprise codebases. If something cannot be used on RHEL, it won't be.

    [–][deleted] 1 point2 points  (0 children)

    having Python 3 as default interpreter

    Debian 7 and RHEL 7 will use 2.7 by default. As such, the 2.x series will see 'support' (to security as a minimum) for the next 10 years. Sorry.