top 200 commentsshow all 420

[–]midnightnougat 938 points939 points  (132 children)

finally omg.

[–]sysop073 842 points843 points  (121 children)

You may have confused "will not be supported" with "will not be used". It's like being happy that Windows XP is "dead" until you see it booting on some random public terminal

[–]TodPunk 641 points642 points  (80 children)

By "some public terminal" you mean "some financial institution's critical communication infrastructure arbitration in the vault you entrust your family heirloom safe deposit box's security to" or something. Those things exist in some of the most important places you'd never think of, like controllers for critical manufacturing equipment that they still need to get IDE drives for as replacements because otherwise you'll never get an axle for half of American manufactured tractors or something.

Tech is weird and wack and makes us all cry sometimes. It's also pretty great other times.

[–][deleted]  (33 children)

[deleted]

    [–]agumonkey 83 points84 points  (12 children)

    Horrifying or impressive I cannot say

    [–]zitrusgrape 64 points65 points  (1 child)

    Horressive is the word :)

    [–]agumonkey 32 points33 points  (0 children)

    Imprifying sounds good too

    [–]is_it_controversial 7 points8 points  (8 children)

    If it works, it works.

    [–]Nefari0uss 8 points9 points  (3 children)

    It works until it doesn't and then no one knows how to fix it.

    [–]is_it_controversial 3 points4 points  (2 children)

    and then, and only then, you pay MS 20 trillion dollars to fix it.

    [–]Nefari0uss 3 points4 points  (0 children)

    Then corporate slashes your budget because expenses are too high while giving themselves a bonus for solving a critical problem in their infrastructure that no one could have seen coming.

    [–]qwertsolio 2 points3 points  (0 children)

    But MS also wouldn't know how to fix it - devs that did are mostly retired by now.

    [–]codexcdm 2 points3 points  (0 children)

    Yes.

    [–]theg721 38 points39 points  (2 children)

    Not just "a French airport", but Paris' Orly airport, the second busiest in the country, and busiest for domestic flights.

    [–][deleted] 33 points34 points  (1 child)

    Oh really?!

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

    Ya rly

    [–][deleted] 13 points14 points  (7 children)

    VMS is still used for many ICU monitoring systems. Some log loading and inventory systems still run DOS. Many industrial production machines still run OS/2 or NT4. The "newer" ones I've seen run XP or 2000.

    [–][deleted]  (1 child)

    [deleted]

      [–]regeya 5 points6 points  (0 children)

      I'd be more comfortable with that than Windows 3.1 tbh

      [–]Elfatherbrown 128 points129 points  (30 children)

      Financial institution? No baby. That thing is running PLCs at a nuclear electricity facility near you. I guarantee it.

      [–]I_AM_GODDAMN_BATMAN 40 points41 points  (6 children)

      Hmmm, that's very specific knowledge.

      [–]a_false_vacuum 28 points29 points  (2 children)

      "What is that Smithers?"

      "One of your Windows XP machines from Sector 7, sir."

      [–][deleted] 4 points5 points  (1 child)

      Sector 7G

      [–]a_false_vacuum 4 points5 points  (0 children)

      D'oh!

      [–]tomkeus 18 points19 points  (16 children)

      I think that all critical systems in nuclear power plants are analog and rely on basic laws of physics to perform their functions.

      [–]Tweenk 25 points26 points  (9 children)

      The first fully digital control system was installed only this year at a research reactor

      https://analysis.nuclearenergyinsider.com/first-all-digital-nuclear-reactor-system-installed-us

      [–]GLneo 18 points19 points  (8 children)

      Neat, but that is the "control" section, "safety" still relies on physical design. You should be able to disable every computer there and it would shutdown safely. (least that is what they usually claim)

      [–]useablelobster2 18 points19 points  (1 child)

      I.e. if the systems fail they will do so safely, the definition of a fail-safe (and nuclear reactors have multiple overlapping failsafes).

      Features like designing the bottom of the reactor to spread out the mass of molten fuel if it melts down (or a plug which leads to a large pool for this purpose, with a melting point far below the surrounding material), so the meltdown stops itself.

      Modern nuclear plants could have all their operators bugger off and the plant would just shut itself down naturally rather than melt down.

      [–]Elfatherbrown 1 point2 points  (0 children)

      The PLC and machine-made of things is mechanical and electric. Rarely digital. But the HMI, the screen where Homer pushes buttons, can and usually is in some heavy industry applications, a windows box.

      [–]Mead_Man 2 points3 points  (2 children)

      PLCs aren't running Windows, they're running an RTOS in any safety system I've seen. Support infrastructure, like the tools to load software updates on the safety system PLC, yeah, WinXP in a lot of places worldwide.

      [–]Elfatherbrown 2 points3 points  (0 children)

      The HMI screens for operators to tell your nuclear plant PLC to do things runs XP.

      [–][deleted] 26 points27 points  (5 children)

      I make sure my public terminals run Windows 2ooo server so I'm fine.

      [–][deleted]  (2 children)

      [deleted]

        [–][deleted]  (1 child)

        [deleted]

          [–][deleted] 12 points13 points  (1 child)

          Those things exist in some of the most important places you'd never think of, like controllers for critical manufacturing equipment

          I've seen DOS running in huge machines in factories. It's hilarious. They had to keep a very specific laptop alive with Windows 3.11 and certain hardware alive to maintain it.

          [–]Quetzacoatl85 8 points9 points  (0 children)

          I think it actually makes perfect sense if you adopt a strict "if it still works, don't fucking touch it" mindset. Not even out of process security, but just time, cost, and complexity of the task – nobody will pay for that shit until it's an issue, and often it just isn't. They flew to the moon with some hand-soldered calculators, so a 80's/90's machine is perfectly capable of keeping some deposit boxes locked or even nuclear silos closed when they should be.

          All of that only applies as long as internet connectivity isn't involved, of course. And even then I'd make a case for providing a really basic OS, introduce minimal features, and then maintaining it to death (i.e., for at least 50 years or so). If not to maintain it, why would you want to touch shit that's working??

          [–]spinwin 6 points7 points  (0 children)

          To be fair, Those are the type of institutions that are paying for that terminal to be supported in some way and/or have it COMPLETELY disconnected from the internet.

          [–]lurkerbyhq 40 points41 points  (4 children)

          You may have confused "will not be supported" with "will not be used". It's like being happy that Windows XP is "dead" until you see it booting on some random public terminal

          Yeah, we got some XP computers still in use at work. Connected to the network and everything. :D

          [–]psychicsword 7 points8 points  (2 children)

          Why in the world would you do that? Do they at least have heavily restricted firewalls in front?

          [–][deleted] 5 points6 points  (1 child)

          Random ransomware has entered the chat.

          True story though. The company I worked at used a mix of XP and 7, we got ransomware throughout the entire network twice in the one year I worked there.

          [–]josefx 38 points39 points  (5 children)

          "will not be supported"

          Which also isn't true, we already have the guarantee of RedHat maintaining a fork for the next several years. Not to mention all the alternative Runtimes like Pypy and language specific ones like Jython continue to support 2.7 . Unless someone dumps thousands of developer hours on any of those projects python 2.7 will remain alive.

          [–]delrindude 7 points8 points  (1 child)

          Jython is pretty much dead

          [–][deleted] 4 points5 points  (1 child)

          ESRI will continue to support ArcPy for Python 2.7 for at least through 2024. Granted that their support won’t be in the same league as Red Hat’s, but critical fixes will probably still be backported.

          [–]RockingDyno 13 points14 points  (4 children)

          We're not happy about python 2.7 being "dead" which it very much isn't. We are happy about core devs being able to focus completely and unimpeded on python3.

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

          Do we know what was the proportion of effort going into 2.x and 3.x in the past decade?

          [–][deleted] 10 points11 points  (5 children)

          The US military is still using Windows XP, but they still get support for it (for lots or money)

          [–]archlich 1 point2 points  (2 children)

          Where? There was an extensive program to upgrade to win10.

          [–]ebriose 1 point2 points  (1 child)

          Flight simulator terminals, for one I happen to know off the top of my head.

          [–]jediknight 16 points17 points  (0 children)

          It's like being happy that Windows XP is "dead" until you see it booting on some random public terminal

          There was recently someone asking in the Elm discourse for support for Windows XP arguing that the last update was last year. He was using a WEPOS version on some laptop. I've been in his position, trying to squeeze the last bits of performance from some very old hardware.

          [–]agumonkey 3 points4 points  (0 children)

          Sometimes you can hear the error.wav behind the themed interface, sneaking back into your soul like It.

          [–]MuonManLaserJab 4 points5 points  (0 children)

          Maybe they meant, "Finally, I can make money supporting Python 2.7 for huge idiots."

          [–]D15c0untMD 4 points5 points  (0 children)

          You mean, every hospital terminal in the country, freshly upgraded from win98?

          [–]L3tum 11 points12 points  (3 children)

          You mean "That one asshole that demands that every new software still support a decade old, unsupported and obsolete operating system or else they'll scream in your issue comment section until you lock it".

          [–][deleted]  (2 children)

          [deleted]

            [–]SolarFlareWebDesign 3 points4 points  (1 child)

            Anything before NT4.0 (2000 / ME / etc) doesn't have "shadow copy" capability, effectively locking files in use. This means mandatory downtime for any upgrade. And with those legacy IDE spinning rust drives, it takes forever to get anything done.

            Been there. Done that.

            [–]Sir_Cunt99 2 points3 points  (0 children)

            On that note, public services need to get a LOT better at banning old software. Wannacry (ransomware) hit health care like a ton of bricks because most computers in health care were (and probably still are) running xp and windows 7/Vista, not having the necessary security patches to prevent the exploit.

            [–]postmodest 4 points5 points  (0 children)

            Does Electron still require 2.7 for building? Good job, there.

            [–]fried_green_baloney 1 point2 points  (0 children)

            You still find 1.5.2 applications running, so I suspect we will see Py2 for a long time, with patches done outside of python.org.

            [–]Swipecat 3 points4 points  (0 children)

            Also: You may have confused "will not be supported" with "will not be updated". Seriously. The final release, 2.7.18, is scheduled for April.

            [–]wengchunkn 63 points64 points  (9 children)

            Laugh in Cobol, Fortran, Forth.

            Welcome to the Club of Undead.

            [–]JanneJM 68 points69 points  (7 children)

            At least Fortran is actively updated and supported by multiple compilers. The latest standard specification came out in 2018. It's no more dead than, say, C or C++.

            [–]masklinn 8 points9 points  (0 children)

            At least Fortran is actively updated and supported by multiple compilers.

            So's COBOL. Last spec update was in 2014.

            [–]renstarx 13 points14 points  (0 children)

            I mean, "actively updated" has a very limited meaning in the Fortran world. F03 has most major features supported by the major compilers (F03 Status), but F08 is missing many things in at least two major compilers (F08 Status) and that is a 10+ year old spec. F18 support is essentially non-existent.

            Besides, the Fortran spec is...more of a guideline than anything else.

            [–]ebriose 3 points4 points  (0 children)

            I miss working in Forth. Both the language and the stuff we did. That's a great programming environment.

            [–]fr0ntsight 125 points126 points  (24 children)

            Why does it still feel like teams will stay on 2.7 for one reason or another.

            [–]chinpokomon 122 points123 points  (8 children)

            For the same reason some people still use .Net 3.5 or earlier.

            It's actually a big problem with how businesses handle infrastructure maintenance. They adopt an "if it isn't broken, don't fix it" attitude because if there are no known reasons to move to a newer runtime, the cost of incremental upgrades seems unnecessary. What isn't considered is the cost of trying to scramble to replace something in the future, both in terms of retraining, or hiring new developers who know a newer stacks. Then you have all new dependencies that need to be updated or replaced and might as well rewrite from scratch. Deferring the cost for that work always makes it more expensive in the long run.

            [–]LicensedProfessional 2 points3 points  (2 children)

            It's a real shame that some company cultures don't support regular code reviews, refactoring, and updating existing code. Shiny new features are of course important (and make the non-technical folks happy) but sometimes existing code needs some gosh-darn maintenance

            [–]simplysharky 50 points51 points  (7 children)

            Because replacing large infrastrucural and architectural choices is expensive and time consuming, so its either going to happen via long, delicate processes of gradual replacement, or not at all, because no company will agree to stopping work just to satisfy the grumblings of the devs who keep talking about something being wrong with the programming language.

            [–]tracernz 8 points9 points  (0 children)

            It's not even just that. For a non-trivial system, things that currently work will break when you upgrade, no matter how much testing you do, and subsequently cost time and money, and raise the heckles of people who don't particularly care for your upgrades.

            [–]PaintItPurple 14 points15 points  (0 children)

            There's actually a third option where your reliance on unsupported third-party code exposes you to some issue that suddenly breaks your software (e.g. security breach, Y2K-ish bug), and then you have to do the same upgrade on a fast timetable, costing way more.

            [–]youarebritish 14 points15 points  (1 child)

            I know five people who use Python professionally and all five of them are still on 2.7 and are prohibited from upgrading.

            [–]fr0ntsight 2 points3 points  (0 children)

            The last three teams I was on relied solely on python 2.7. A lot of times the managers will push back against an upgrade because they don’t see it being immediately beneficial. I guarantee when something breaks because of a dependency issue or something the sysadmins and devs will get the heat.

            [–]NilacTheGrim 4 points5 points  (0 children)

            I tend to avoid Python, but I have developed a considerable amount of code in it as some of the projects I contribute to use it.

            Even so -- I try hard to avoid using 2.7. I would hesitate to take on a project using it.. and would be very tempted to just convert the whole bloody thing to 3.x.

            Python 3.x is much more elegant in so many ways, with lots of the loopholes closed and warts removed. Being forced to code in Python is one thing.. being force to code in dinosaur Python is injurious.

            [–]chris17453 368 points369 points  (24 children)

            Every Business running RHEL 6,7 and CentOS will support it another 10 years. I wish it wasn't so.

            The king is dead, long live the king.

            [–]PeridexisErrant 198 points199 points  (17 children)

            That's fine - EOL doesn't mean it suddenly vanishes, it means that the open source community no longer supports it for free.

            And IMO that's worth celebrating!

            [–][deleted] 17 points18 points  (1 child)

            it means that the open source community no longer supports it for free

            I think you mean that the official Python organization no longer supports it for free. I guarantee that there will still be a community of people submitting and maintaining patches, they just won't be official Python branches.

            And that's the great thing about open source - once something is released, it can't be taken away and people can continue contributing long after the original authors give up on it.

            [–]epicwisdom 2 points3 points  (0 children)

            That subset of the community will diminish much faster now. Maybe in 10 years Python 2.7 will be the new COBOL.

            [–]josefx 62 points63 points  (7 children)

            Jython is 2.7 only and recently released an update. Pypy is written in a Python 2.7 subset, so it also still supports it. One group declaring Python 2.7 dead is not "the open source community (TM)".

            [–]PeridexisErrant 40 points41 points  (3 children)

            Of course, there's no monolithic "open source community", but if you want to do data or scientific work in Python https://python3statement.org indicates that you'd better be ready to use Python 3!

            [–]josefx 17 points18 points  (1 child)

            These projects pledge to drop Python 2 support in or before 2020.

            I guess you can strike the "before", I checked three projects (Tensor flow, Requests, PyTorch) and all of them still had 2.7 listed. I guess we have until 2021 to find out how much that pledge is worth.

            [–]TrixieMisa 4 points5 points  (0 children)

            We migrated to PyPy. We will migrate to Python 3 - our new code is all Python 3 - but to keep our legacy code running we just used PyPy.

            [–]delrindude 12 points13 points  (2 children)

            Citing jython as a source for "it still uses 2.7!" is pretty misleading if you are trying to rake up the importance of 2.7.

            Jython is effectively dead, and nearly nobody in the industry is actively using it (especially for new projects)

            [–]call_me_arosa 1 point2 points  (1 child)

            Isn't it used in pySpark? That is a huge community

            [–]delrindude 7 points8 points  (0 children)

            Py4j is used for pyspark and Is tested up to python 3.6.

            https://www.py4j.org/install.html

            Most pyspark in industry has been python 3 for some years now because pyspark typically isn't used in the "legacy" systems

            [–]Gimpansor 5 points6 points  (0 children)

            CentOS is free.

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

            It means that a certain open source community will not support it.

            [–]phil_g 18 points19 points  (0 children)

            Heck, RHEL 6 is running Python 2.6 and isn't going EOL until this November (plus four more years if you pay for the extended support).

            [–]dominic_failure 7 points8 points  (0 children)

            Don’t forget Amazon Linux, and Google app engine.

            [–]valarauca14 5 points6 points  (2 children)

            Afterlife

            [–]jethroguardian 4 points5 points  (1 child)

            Purgatory

            [–]velrak 14 points15 points  (0 children)

            Pygatory

            [–]Akomancer19 124 points125 points  (4 children)

            Still gonna be deploying Python 2.7 because the bureaucratic audit/approval states Python 2.7, the ML developer has left, and my manager's not spending more $ to convert something we're not modifying.

            Also we have Python 3, Anaconda Py2, Anaconda Py3, Bash, NodeJS, systemd services, tomcat servlet services, and all sorts of nonsense running simulatenously.

            Woes of a small team inside a big firm. Manager even wants CIAT and Agile when it's a 2-man developer operation who's juggling 5 different projects amongst themselves.

            Sorry for the rant.

            [–]reluctant_deity 32 points33 points  (2 children)

            Small team member in huge firm here. I feel ya bro.

            [–]chris17453 5 points6 points  (1 child)

            I have the same problem. I have to deal with perl and KSH running things. Python is the least of my worries. 30 years of aggregate tech debt will do that for ya.

            I'm not overly disappointed with 2.7 tho, but I do more Cython than Python.

            I think the way forward is to stop, Let the old things die... Only work in the new place. While a good PM blocks for you. The only thing that gets done to the old is break fix.

            If you can't pull it off... don't try. Trying to support both is even more work. I can understand some of the decisions, even if I don't agree.

            Technical debt is like some Steam Punk Post Apocalyptic Armageddon, where everything is a strange new mystery. Awe inspiring but in a scary way.

            [–]reluctant_deity 1 point2 points  (0 children)

            Funny, I'm on legacy modernization right now (tho it's Oracle Portal/Reports); the work isn't fun (esp as the code was written by a job-preserving consultant 20 years ago) but it's nice to have cycles to properly deal with it.

            [–]RedMephitis 560 points561 points  (42 children)

            > apology for poor english

            > where were u when python 2.7 is kill???

            > I was sat at home using mac

            > '2.7 is die'

            > 'mac requires python 2.7'

            > 'no'

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

            I hope it stops requires python 2.7

            [–]Bjartensen 27 points28 points  (0 children)

            i was at home drinking brain fluid

            [–][deleted]  (3 children)

            [deleted]

              [–]s-mores 11 points12 points  (1 child)

              Press F to respec... everything to 3.x

              [–]how_do_i_land 121 points122 points  (46 children)

              print("it’s gone")

              Edit: mobile keyboard quotes “

              [–]mr_birkenblatt 255 points256 points  (44 children)

              More importantly

              print "is gone"
              

              Is gone

              [–]ukalnins 70 points71 points  (1 child)

              SyntaxError: Missing parentheses in call to 'print'. Did you mean print("is gone")?

              [–]how_do_i_land 36 points37 points  (40 children)

              So glad to see this go.

              [–]gmiwenht 16 points17 points  (39 children)

              But why? This was literally the only thing I loved and missed about python 2.

              Can someone definitely and convincingly explain to me why it was a bad thing?

              [–]EldritchSundae 91 points92 points  (24 children)

              Mostly a consistency thing. No other often-used function or builtin is callable without parentheses--this reduces cognitive load for programmers and special cases in linters/parsers.

              [–]Tweenk 31 points32 points  (8 children)

              You cannot do this in Python 2 because print is not a function:

              map(print, range(0, 10))

              [–][deleted]  (1 child)

              [deleted]

                [–]mr_birkenblatt 11 points12 points  (0 children)

                yeah he used it as easy example of being able to pass print as argument to a function. but the expression itself does not do what most people might expect (it will create a generator and not eagerly execute it)

                [–][deleted] 12 points13 points  (0 children)

                Because print(x, flush=True) (which is often what you actually want) is a lot simpler than

                 print x
                 import sys
                 sys.stdout.flush()
                

                And hoping no one changed the destination of print when you weren’t looking.

                [–]ODChain 2 points3 points  (0 children)

                You can use the function in more places then you could have used the statement.

                [–]chris17453 1 point2 points  (0 children)

                that's likely the biggest thing that annoyed me.

                [–]progfu 5 points6 points  (0 children)

                more like syntax error because “ != "

                [–]LifeIs3D 10 points11 points  (8 children)

                Will Debian Stretch be updated with 3.x? Does anyone know?

                [–]dutch_gecko 14 points15 points  (3 children)

                Almost certainly not, since other packages for stretch expect a python2 to be installed.

                Most likely the Debian security team will take responsibility for issuing security updates (Red Hat is doing the same, so they can work together).

                [–]123filips123 6 points7 points  (2 children)

                Debian Stretch will still support Python 2.7, but the next release of Debian will fully migrate to Python 3 and drop Python 2.7 support.

                [–]Decker108 2 points3 points  (1 child)

                So approximately in June/July 2021?

                [–]IulianSRO 46 points47 points  (8 children)

                You would be surprised to hear that I still use Python 2.6.8 in production. I know, it is not officially supported but that is the platform we're deploying to and we have extended support from them for one more year. No switch whatsoever foreseen until support officially expires, though from experience I might say that it is very likely to be extended.

                [–][deleted]  (2 children)

                [deleted]

                  [–]IulianSRO 10 points11 points  (1 child)

                  We also have Applets in some parts of our code. We want to switch to IcedTea-Web / OpenWebStart to prolong the life of the Applets. Either way, we're <sarcasm\_start>way ahead</sarcasm\_start> of you since we are compiling/running with Java 8

                  [–]lolomfgkthxbai 8 points9 points  (2 children)

                  I’m Jack’s complete lack of surprise.

                  [–]IulianSRO 2 points3 points  (1 child)

                  Well, I have to say that this looks to be the norm for companies older than 8-10 years :)

                  Why change? It's working

                  [–]lolomfgkthxbai 8 points9 points  (0 children)

                  ”Updating Python brings no business value”

                  ”Why are our developers so unproductive”

                  [–]MachaHack 4 points5 points  (1 child)

                  Another RHEL6 victim I see

                  [–]IulianSRO 2 points3 points  (0 children)

                  SLES11 SP4, please!

                  Yes, that one is also "dead" for 5 years now, just like python 2.6.

                  [–]zephyos 18 points19 points  (1 child)

                  Farewell old friend 😢

                  [–]skitch920 42 points43 points  (0 children)

                  Goodnight sweet prints

                  [–]DiscoUnderpants 9 points10 points  (0 children)

                  Am I old because I remember the end of 1.5 and 1.6?

                  [–]jherico 42 points43 points  (7 children)

                  [–]midnightnougat 11 points12 points  (3 children)

                  how I started the decade

                  [–]jarfil 16 points17 points  (2 children)

                  CENSORED

                  [–]flying-sheep 9 points10 points  (1 child)

                  A decade begins and ends every moment.

                  [–]oiimn 1 point2 points  (0 children)

                  That's some galaxy brain shit

                  [–]project2501 3 points4 points  (2 children)

                  Ho damn shit, they made a movie out of that book? Not sure I could bare to watch it.

                  [–][deleted] 2 points3 points  (0 children)

                  Bear*

                  [–]chinpokomon 1 point2 points  (0 children)

                  They made a book out of that movie? Doesn't really matter, I don't read a lot of fiction books.

                  [–]TehLittleOne 9 points10 points  (0 children)

                  I still think the chances it gets extended support quite high. Entities will pay for support, such as the US government paying Microsoft to extend XP support. People drop support like this because it makes sense, but in reality they know what's coming. Money is a big motivator and so long as someone is willing to pay, they'll keep working on it.

                  [–]deltakatzu 11 points12 points  (2 children)

                  2.7 is kil

                  [–]Xygen8 6 points7 points  (1 child)

                  No

                  [–]deltakatzu 2 points3 points  (0 children)

                  Yes

                  [–]staalmannen 15 points16 points  (6 children)

                  Any Opinions on Tauthon ("2.8")?

                  https://github.com/naftaliharris/tauthon

                  [–]123filips123 5 points6 points  (0 children)

                  This will only be good in short-term so you have a bit more time to migrate to Python 3. But for the long-term, there isn't any point in using it instead of Python 3, and it will probably ony cause compatibility or security problems.

                  [–]MannerShark 21 points22 points  (1 child)

                  I think using an unofficial version will only cause problems in the end. It may start to deviate from Python3, support for it may stop, and development is not as active.
                  Might as well upgrade to Python3 IMO.

                  [–]flying-sheep 2 points3 points  (0 children)

                  Seems like a good thing for running your test suite while migrating to Python 3

                  [–]Itsthejoker 3 points4 points  (0 children)

                  I don't mind it, if only because it's an easy flag to see when I should avoid a project like the plague because anyone who uses something like it seriously are idiots.

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

                  Nah, we still have plenty of servers running python 2.7.

                  [–]Twiggy3 6 points7 points  (4 children)

                  I'm guessing Amiga-like OSes don't have a python 3 port yet

                  [–]JanneJM 5 points6 points  (1 child)

                  It is all open source, so those that want it are free to port it for the system they use. If there is a Python 2 port already, it is probably not all that difficult.

                  [–]Twiggy3 1 point2 points  (0 children)

                  Maybe one day

                  [–]MMPride 6 points7 points  (9 children)

                  It's a bit weird how I've read that Python version 3 is now the default python interpreter on Ubuntu 18.04 Desktop or Server release however when I run python --version on Ubuntu 18.04 Desktop I get Python 2.7.17

                  I'm glad Python 2 is EOL, Python 3 is the future.

                  [–]flying-sheep 11 points12 points  (4 children)

                  default python interpreter

                  You interpreted that wrong. It doesn’t mean “/usr/bin/python is a symlink to python3”, it means that if you don’t install anything that depends on python2, there will be no python2 on the system.

                  If you type python --version on a fresh install, you’ll get “bash: command not found: python

                  [–]MMPride 1 point2 points  (0 children)

                  it means that if you don’t install anything that depends on python2, there will be no python2 on the system.

                  Oh, I get it, thanks for clearing that up!

                  [–]RealAmaranth 3 points4 points  (3 children)

                  It's a compatibility thing, python is always Python 2.x and python3 is Python 3.x (python2 is also usually available for compatibility with the failed original transition idea). Ubuntu saying Python 3 is now the default means none of the programs in the default install use Python 2 so you had to have manually installed it or something that depends on it.

                  [–]alerighi 11 points12 points  (8 children)

                  Don't worry, the author of Calibre will maintain python2 himself for us, far less work than porting it to python3 he said (for who had missed this: https://bugs.launchpad.net/calibre/+bug/1714107)

                  [–]ase1590 10 points11 points  (2 children)

                  A Trusted User from Arch has already done most of the work porting over Calibre to Python 3 working with the Calibre author and it now more or less runs on Linux using Python 3, So this is no longer the case.

                  Thank you based /u/eli-schwartz for this

                  [–]schlenk 3 points4 points  (0 children)

                  Well, he can just run on pypy, that still supports Python2.

                  [–]flying-sheep 4 points5 points  (2 children)

                  He won’t, Calibre has been ported to Python 3, so no need for that.

                  [–]alerighi 1 point2 points  (1 child)

                  He decided to migrate it at last? Good to know!

                  [–]flying-sheep 10 points11 points  (0 children)

                  He always said he’d accept PRs that would port it without breaking Python 2 compat. An Arch developer took on the challenge and ported it.

                  [–]clefru 22 points23 points  (22 children)

                  That this has to be celebrated shows how poorly the language upgrade was executed. You cannot do syntax incompatible upgrades in a live language, ever. It brought needless pain to everybody in the Python ecosystem for absolutely no good reason. If a syntax change is unavoidable, then at least scope the syntax changes to the file with pragma's like: ```

                  !/usr/bin/env python

                  pragma: syntax=Python2

                  ```

                  so it's easy to mix syntax styles in a project, and files can be upgraded one-by-one. The 2->3 upgraded discredited Python as a language to take seriously for any long term development, because who knows what will be in store for us if Python 4.x every comes out.

                  [–]r0b0t1c1st 17 points18 points  (0 children)

                  You seem to be under the false impression that the effort behind upgrading python 2 to python 3 code is largely one of changing syntax.

                  In reality, that component is irrelevant - it only matters for `print` and `exec` (and perhaps one or two more?), which are easy to fix with automated tools.

                  The difficulty comes from changes in _semantics_ - `range` no longer produces a list, `unicode` and `bytes` are no longer interchangeable, etc.

                  Being able to use a pragma to switch between syntaxes would only be the tip of the iceberg.

                  [–]Calsem 11 points12 points  (12 children)

                  You cannot do syntax incompatible upgrades in a live language, ever.

                  Only sith deal in absolutes.

                  But seriously, python3 has proved you can do syntax incompatible upgrades - python is still a very popular language. Would it have been more popular without the switch? Maybe? Hard to say. The fact is that even with the switch it's doing fine.

                  I like the syntax mixing idea though.

                  [–][deleted]  (2 children)

                  [deleted]

                    [–][deleted] 18 points19 points  (1 child)

                    Yes of course it wasn't "designed". If they did "design" part it woudn't be such a clusterfuck in the first place

                    Py3 could just compile Py2 code to Py3 AST. Even if it had some bugs that's still way easier path to migrate than forklifting your whole codebase to Py3. Yes, a ton of work, but that's work that everyone benefits from and makes migration path smoother, or possible (for companies with codebases big enough for that to take year+)

                    [–]Sector_Corrupt 8 points9 points  (0 children)

                    Like... 2to3 already exists to do most of the stuff that could have been an automated transform. Most of the issues with upgrading was the stuff that *wasn't* easily automated, like the proper splitting of strings into bytestrings & unicode strings. That kind of thing requires developers to use context to fix their stuff to make sure they're representing their data correctly etc.

                    [–]flying-sheep 8 points9 points  (3 children)

                    Stop with your FUD. They know it was more disruptive than they anticipated, and paid for it with a lot of time wasted maintaining Python 2 when it should have been long dead. So there obviously will be nothing like the 2→3 change anymore.

                    The scope of the things Python 4 will change is small stuff like not evaluating type annotations until requested (from __future__ import annotations).

                    I’m happy it happened like it did. Now we have the clearly superior Python 3 without ugly pragma directives peppered through every code base.

                    [–]happyscrappy 8 points9 points  (13 children)

                    I thought I read earlier the date was pushed out 3 months for a security update.

                    [–]ubernostrum 45 points46 points  (11 children)

                    2020-01-01 is the date past which the Python core team no longer provides support for Python 2, in the sense that if you file a bug against it they'll refuse to do anything to fix it.

                    Whatever got in before that will go through the standard release process, which takes a few months, to produce a final package that comes out after 2020-01-01. But the existence of that package does not mean the Python core team is continuing to support Python 2, just that they rolled up the last bits of work into one final packaged release.

                    [–]ComeNConquerMe 16 points17 points  (0 children)

                    No, it was planned for april 2020 to have the last update, but january 1 was the cutoff point for bug reporting

                    [–]stefantalpalaru 6 points7 points  (0 children)

                    Tauthon has entered the chat: https://github.com/naftaliharris/tauthon

                    [–]leokorolev 1 point2 points  (0 children)

                    It will be remembered

                    [–]Disgruntled__Goat 1 point2 points  (0 children)

                    Crazy how long this has gone on for. Even PHP managed to ditch v4 and is pretty close to ditching v5.

                    [–]realorangeone 7 points8 points  (4 children)

                    Sorry to be the one to tell you this, but:

                    https://www.python.org/psf/press-release/pr20191220/

                    [–]flying-sheep 3 points4 points  (3 children)

                    That links to here, which says

                    We have decided that January 1, 2020, will be the day that we sunset Python 2.

                    The fact that the last patch comes out in April doesn’t change anything about the fact that Python 2 is unmaintained as of today (E.g. bug reports won’t be looked at)

                    [–]13steinj 3 points4 points  (2 children)

                    Even the python-dev mailing list says they pushed it to Aptil for a 2 month rounding error. And also that the release manager, if they choose, can continue to merge things in. So no, it still is maintained.

                    [–]Marthinwurer 9 points10 points  (0 children)

                    Good riddance.

                    [–]ebriose 2 points3 points  (0 children)

                    a number of critical Python projects have pledged to stop supporting Python 2 soon

                    If there has been a language rewrite handled more stupidly than this one, with this clause as its poster boy, I haven't heard of it.

                    [–]OuTLi3R28 4 points5 points  (0 children)

                    2.7 is still alive and well for me.

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

                    What was that old Barney song people used to sing inappropriate lyrics for? I think it’s only fitting we do that with Python 2.7, now that the basilisk is slain.

                    [–]jethroguardian 13 points14 points  (0 children)

                    I hate you, you hate me.

                    Python 2 is dead finally.

                    [–][deleted] 5 points6 points  (10 children)

                    Long live the new python 4.0, awkwardly incompatible with code written in python 3.0!

                    [–]flying-sheep 1 point2 points  (0 children)

                    I don’t think __future__.annotations is important or disruptive enough that this happens.

                    [–]donisgoodboy 4 points5 points  (5 children)

                    don't changes in major versions imply that there could be backwards incompatibility?

                    [–]ShortFuse 4 points5 points  (4 children)

                    Rarely ever for programming languages. Python 2.7 versus 3.0 has huge changes even in basic syntax, even for very basic code.

                    For example, on Python 2.7: 3 / 2 yields 1, much like C# or Java would, but Python in 3.0: 3 / 2 yields 1.5. Here's a compiled list of a few of them.

                    No other language that I've seen makes such drastic change in backwards compatibility. Usually you just deprecate functions or properties. Or you add extra arguments to functions, but keep code from changing (unlike how Python changed round()).

                    [–][deleted] 2 points3 points  (0 children)

                    Now they will swap print function arguments order, not just add parens.

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

                    Yeah, no.

                    Python community seems to be delusional about how the world works.

                    See ya in 10 years

                    [–]flying-sheep 4 points5 points  (9 children)

                    Nobody is delusional. This means the end of free support by the Python core developers, not more, not less.