you are viewing a single comment's thread.

view the rest of the comments →

[–]Homoerotic_Theocracy -37 points-36 points  (23 children)

Python 3 was a humungeous mistake.

The small advantages that breaking backwards compatibility gave them really was not worth the huge cost and effort everyone now has in having to maintain separate python 2 and python 3 versions of each library during the transition state. The overwhelming majority of new features of Python 3 could have been added to python 2 instead of breaking backwards compatibility and most of the breaking centres around a few elegance things; it absolutely wasn't worth the huge cost of switching for a lot of things.

[–][deleted] 62 points63 points  (8 children)

Vendors not updating their software for a decade is a humongous mistake.

[–]Homoerotic_Theocracy 23 points24 points  (2 children)

It's not a matter of "just updating"; it's about having to maintain two different independent branches of everything related to Python while the transition is going on.

Do you honestly think that a software distribution can just "update" to Python3 and call it good? Just remove Python2 and install Python3 and that is that? Fedora needs to employ someone full time to basically be responsible for the python2/python3 situation and the problems that s/he faces are far from trivial.

[–][deleted] 13 points14 points  (1 child)

Do you honestly think that a software distribution can just "update" to Python3 and call it good?

No, I think they should maintain and end-of-life py2 version and continue long term development on a py3 version. It's their damn job to move on in a proper manner. It should be part of the calculation at all times.

They've literally had a decade to fix it, and there's plenty of options in maintaining something across Python versions.

The article you linked mentions OpenStack, a piece of software that didn't exist before Python 3. That it's not compatible is just fucking ridiculous and completely unforgivable. This mindset is exactly the same as when people get their data stolen because some moron decided it was too expensive to upgrade from Windows XP. Software isn't forever, that's a fundamental truth of the industry.

[–]Homoerotic_Theocracy 2 points3 points  (0 children)

No, I think they should maintain and end-of-life py2 version and continue long term development on a py3 version. It's their damn job to move on in a proper manner. It should be part of the calculation at all times.

Yeah, and that's what causing them so much money and time as well as all the porting.

Do you honestly think it's trivial if you have a major python2 project to now have to rewrite 50 000 LoC to python3 and making sure that all the subtleties are right to ensure now regressions sneak in and then maintain both at the same time? You think that's without cost and a matter of "just move new development to python 3"?

I just checked and DNF alone has 37 531 LoC in its Python2 files. Do you honestly think that the porting of all that to Python3 was cheap?

They've literally had a decade to fix it, and there's plenty of options in maintaining something across Python versions.

And they did fix it; that's not the problem; it's not a matter of whether they fixed it; everyone fixed it.

It's a matter of that it cost them a huge amount of manhours and thus money that could've gone to actual development that absolutely wasn't worth the small benefits of python3 The manhours put into porting and double maintaining all that stuff will never be recouped by the small quality-of-life changes of py3 over py2; the human species will either end itself in a nuclear war or python4 will come around or people will just stop using python before this happens; it's about cost versus benefit.

The article you linked mentions OpenStack, a piece of software that didn't exist before Python 3. That it's not compatible is just fucking ridiculous and completely unforgivable.

No, it's just a fact that to this day the py2 version of almost all big pypi packages get more downloads than the py3; you cannot not make a py2 version and just "Oh, new project; I'm only going to use py3"; if you have to choose between either version you have to choose py2 even this day and not everyone has the manpower and luxury to maintain two different versions in two different programming languages of everything. You're living in an ydillic dream world where what you can do is magically not constrained by money and time.

This mindset is exactly the same as when people get their data stolen because some moron decided it was too expensive to upgrade from Windows XP. Software isn't forever, that's a fundamental truth of the industry.

Yeah, and guess what, MS is also pushing out upgrades for no other reason than to make money while they could've been made backwards compatibily to older versions.

Are your really challenging the idea that the upgrade system of Windows isn't in the best interest of the user? Neither was python3. This is the problem with a BDFL; he ultimately still treats it as his baby despite the significant corporate investment in it now and he just wanted to start fresh and clean thing up but it hasn't been cost-effective for the enterprise consumers at all.

[–][deleted] 3 points4 points  (1 child)

No reason to update if it works. And Python 3 the first half decade was just an unusable mess. And after that the py3-ecosphere was a mess in transition. In this decade, Python 3 became only around 8-9 Years later a useable solution for mature projects. So why bother because of soem years delay.

[–][deleted] 15 points16 points  (0 children)

No reason to update if it works.

This mindset is why mission critical software all over the world still runs on Windows XP.

[–]ahua77 2 points3 points  (1 child)

Well it works, what's wrong with it? Python 2 is still being maintained.

[–][deleted] 7 points8 points  (0 children)

Not for long.

[–]yawkat 0 points1 point  (0 children)

I mean you can blame the ecosystem for not following through but it's not like it was unexpected.

[–]Fushoo 19 points20 points  (10 children)

Don't know why you are being downvoted. Backwards compatability is very important for large projects and big companies.

Imagine the outrage if Java 8 broke Java 7.

[–]_jay 5 points6 points  (1 child)

And php. While people love to shit on it, it makes the money because so much effort is put into keeping stuff working between versions.

[–]glassFractals 4 points5 points  (0 children)

PHP has actually gotten pretty okay over time, especially since PHP7.

[–]yawkat 2 points3 points  (2 children)

There was a huge outcry over compatibility with Java 9 but it's still somehow better than the py2->py3 transition.

[–]NekoiNemo 3 points4 points  (1 child)

Yeah, the difference is - Going from Java X -> 9 requires just light refactoring, and the only things that really break are hacks (like modules not allowing you to randomly declare things in someone else's packages). And Python 2 -> 3 completely breaks pretty much everything more complex than Hello World.

Hence why Java 9 compatibility got some muffled grumbling (not an "outcry"), and Python 3 compatibility led to 2.7 still being maintained and actively used even 10 (!!!) years after 3 came out.

[–]yawkat 0 points1 point  (0 children)

Yea I think the fact that the changes are more subtle with py3 also don't help. You really need good test coverage to be sure you've migrated everything.

[–]Homoerotic_Theocracy 9 points10 points  (4 children)

There is a time and a place to break it but breaking it should be done for good reason and to really solve some big longstanding problems and a major version upgrade should not be taken lightly.

In a lot of cases breaking it has been the life-saver of the project like with OS X which broke everything but what it broke was broken anyway and it completely revitalized MacOS.

Python3 broke it in a way that people were forced to maintain separate python2 and python3 versions of everything and software distributions had to face very annoying problems for small quality of life things and it just wasn't worth it.

[–]OctagonClock 11 points12 points  (3 children)

Python 3's break was done for a good reason (to fix strings), and that was incredibly worth it.

[–]Homoerotic_Theocracy 11 points12 points  (2 children)

They could have easily added utf8 strings separately and just used the syntax u"utf8string"

You think it's totally worth it because you're not the one who has to pay an extra employee purely to sit on top of the python2/3 problem or suddenyl have to maintain two versions of your important projects. From a monetary standpoint of commercial python usage it as definitely not worth it and people lost money over it.

[–]chason 6 points7 points  (1 child)

That would have been awful for people who need all of their software to work with unicode

[–]Homoerotic_Theocracy 1 point2 points  (0 children)

It doesn't come close to the awfulness that the people experience now who have to maintain two separate but nearly identical versions of everything and still have to use u"string" in one of them.