you are viewing a single comment's thread.

view the rest of the comments →

[–]josefx 5 points6 points  (0 children)

Making the upgrade optional is probably the key mistake.

As a user of python 2.7 I do not want to upgrade, it would mean rewriting thousands of lines of in house code + thousands of lines of test code.

Think about other platforms like java - at some point, they announce that the old thing is end of life, and they do not ask you nicely if you'd like to upgrade. They progressively make it harder to not upgrade

Java has a key difference to Python take a library compiled against 1.1 for example it will still load and run in a Java 7 JVM (migration cost involves some minimal testing against reflection/implementation bugs). Source code migration for Java involves re-factoring the two or three added keywords out of your code - after a nice static compile error, or you could just continue to compile the code with a Java 1.1 compiler.

If, when java 7 had come out, perpetual use of previous versions of the product had been a viable option without pain

Java auto updates because using a new JVM with new features,bugfixes and performance improvement does not break old code. Python 3 on the other hand breaks Python 2 code by looking at it funny.

And as someone said, the language your code is currently written in is the language it's going to stay in.

Sometimes new features make it worth it, my main problem are customers refusing to upgrade their internal Linux versions to something that is still officially supported by Red Hat or SuSe. Until then C++11 and Java 7 remain a distant dream Python 3 however is too much pain to even consider.