20 ms·
I'm a little confused though, by his feelings here. Why did he feel the need to "fight so hard for a PEP" if it was so controversial, and everyone was outraged?
by symmitchry 8y ago
I'm a little confused though, by his feelings here. Why did he feel the need to "fight so hard for a PEP" if it was so controversial, and everyone was outraged?
I do understand people's points about "the age of outrage" and "internet 2018" but still: the PEP wasn't generally accepted as being a fantastic improvement, so why did he feel the need to fight so hard for it?
- jnwatson 8y agoIt was controversial syntax, inline assignment-as-expression. There's always a tension between "keep it simple stupid" and "let's make it better", especially when a large user demographic of Python are non-professional-programmers. Interestingly, C++ is going through the same process, with lots of great ideas being proposed, but the sum total of them being an even more complicated language (on top of what is probably the most complicated language already). Python has been successful, IMHO, because Guido has made several brave, controversial calls. Python 3 breakage and async turned out to be prescient, fantastic decisions.
- coldtea 8y ago>Python 3 breakage and async turned out to be prescient, fantastic decisions. Async maybe. Python 3 breakage? Did you forgot the /s tag?
- cbhl 8y agoI think there are people on both sides of this fence. Google is still largely Python 2, but my impression is that Facebook actually managed to make the transition to Python 3 after putting in the right presubmit checks.
- steveklabnik 8y agoFor the discussion about Facebook, see here: https://news.ycombinator.com/item?id=17417201 https://news.ycombinator.com/item?id=17417201 It seems Python 3 is now dominant but not total, according to TFA.
- pvg 8y agoThis is a particularly ill-chosen thread to deliberately try to re-flame this flamewar. Most threads are.
- romanows 8y agoHeaven forbid that someone responds to a point made in another post. On a public internet discussion forum. In a discussion about the context and effects of divisive and difficult decisions. /s
- pvg 8y agoHeaven, sadly, cannot forbid poopy responses but we can encourage others (and ourselves) not to post them.
- coldtea 8y agoNotice how you've only added noise in the discussion, and made a casual comment on something somebody wrote a 10+ comment meta-thread? Plus rudely assigned intentions ("flamethrower" etc) to others?
- blattimwind 8y agoPython 3 breakage is basically flamebait by now.
- Bahamut 8y agoTo be fair, the person stating that Python 3 breakage was a fantastic decision probably should've avoided referring to that as such, as it almost certainly invites disagreement on a controversial topic.
- pvg 8y agoNo, that's giving the flamemongers a flamer's veto. It's a perfectly sensible thing to mention when talking about the difficulties of leading the Python project and offering an opinion on how Guido van Rossum handled them. Picking out that one opinion and yelling little more than 'fite me' back at the person is not a perfectly sensible thing.
- ben509 8y agoNo, the bad decision was treating bytes and strings interchangeably in the first place. 99% of the hardest to fix breakage was due to that, and it was the right call to pay that price all at once.
- jessaustin 8y agoThe API in 2 is not optimal, but they fixed it the wrong way. As you know, some operations make sense with bytes, and some make sense with character strings. The operations that make sense with character strings would also make sense with bytes when an encoding is specified. Therefore, there should just be a way of annotating bytes with a suggested encoding. Then byte-oriented packages (e.g. those that deal with data sent over an interface like a socket or pipe) could simply ignore the issue of encoding. Whole classes of errors would just disappear for many python coders. Other coders, who do care about encodings and non-ASCII characters, would still get those errors but that would be OK because they would know how to fix those errors. So yes some breaking change was indicated, but the particular change that was made was the wrong one.
- ubernostrum 8y agoThen byte-oriented packages (e.g. those that deal with data sent over an interface like a socket or pipe) could simply ignore the issue of encoding. Long and bitter experience has shown that people who think they can "simply ignore" the "issue" of encoding actually can't. That mindset is mostly a more polite way of saying "people who assume everything is ASCII all the time, or at most an encoding that always has one byte == one character". Those assumptions break sooner or later. I prefer having them break sooner, because I've been the person who had to clean up the mess at an unpleasant time when it was kicked to "later". Which in turn means Python 3 made the right choice: text is text and bytes are bytes, and you should never ever pretend bytes are text no matter how much you think you'll never run into a case where the assumption fails.
- deleted 8y ago[deleted]
- 8y ago
- chimeracoder 8y ago> Python 3 breakage and async turned out to be prescient, fantastic decisions. The jury is still out on the Python 3 decision, to be honest. Heck, Python 2 is still officially supported until 2020. Python 3 adoption is increasing, but the instability and breakage that it introduced caused a lot of knock-on effects throughout the Python community that held it back and hindered its adoption and mindshare. It'll take a while before we can really say whether the long-term gains will make up for that.
- jimmaswell 8y agoI'll probably never switch for personal use. The print statement change is intolerable to me. It would have cost them nothing to just leave the old syntax in. It's supposed to be a quick and convenient scripting language and they're actively working to make it more verbose and less convenient. I also still don't like not being able to use "string" objects as dumb byte containers, like I do with an IRC bot that doesn't crash with an encoding exception trying to write IRC control characters into a text file. Yes, I know I can work around that wrapping everything up nice and pretty to tell python "this isn't a real string it's okay you don't need to throw an encoding exception ssh." I just don't think that's good design.
- keymone 8y agoSyntax regularity is infinitely more important than scripting convenience.
- jimmaswell 8y agoButton regularity on your keyboard is infinitely more important than ergonomics too, right? Anything but a grid of equally-sized squares must be wrong by virtue of aesthetics. Spoken language too: let's eliminate all contractions because they reduce regularity. Let's also make all the speed limits in the country equal at 20mph, because regularity is infinitely more important than convenience. You should be supporting return being made into a function too, right? That would be much more regular. Reminder that a guideline of python was supposed to be "practicality beats purity" which is in stark contrast to the changes to print and strings. [1] Reminds me of the gradual shift of the message on the wall in Animal Farm from "four legs good, two legs bad" to "four legs good, two legs better." 1: https://www.python.org/dev/peps/pep-0020/ https://www.python.org/dev/peps/pep-0020/
- Redoubts 8y ago> Python has been successful, IMHO, because Guido has made several brave, controversial calls. Python 3 breakage and async turned out to be prescient, fantastic decisions. A lot of companies are choosing new languages over porting python from 2 to 3.
- Daishiman 8y agoName one.
- ubernostrum 8y agoI think it's true, but also a red herring. A lot of corporate dev environments operate on a policy where you're basically allowed to fix things that sales and customer support explicitly ask to fix, but nothing else. Which in turn means an environment where doing maintenance work that indirectly sustains the software is off-limits. Which in turn means they never ever upgrade the underlying platform (that's off-limits maintenance work), and so they end up on an EOL'd platform. At which point they blame the platform, and announce they're going to switch to something better that doesn't impose this problem on them. Those types of places were never going to upgrade to Python 3 under any circumstances. They probably would not have even upgraded to a completely-backwards-compatible Python 2.8, if that had been released. So blaming Python 3 is a red herring here.
- liveoneggs 8y agoGoogle replacing python with Go?
- Daishiman 8y agoThat has little to do with Python 3 and a lot to do with the scale of Google's services where high performance is really important and where refactoring in static languages is easier.
- joshuamorton 8y agoThis also isn't really true. Google is certainly replacing certain things with Go. But its not replacing python with go.
- pmontra 8y agoThat a customer of mine started a web project in Python 2 in 2015 after 7 years since the first release of Python 3 means that the Python BDFL and community managed the process horribly.
- janoc 8y agoCould it be that many vendors still ship Python 2 as default for internal reasons (system-related scripts and what not rely on it)? Macs, for example ... So you customer, not knowing any better, used whatever was on the machine already. If that's the case, that's really not the Python's community's fault.
- pmontra 8y agoThey could have used any Python version with one of the many version managers around or docker. I think nobody cares about what comes with the operating system nowadays. The problem was that after 8 years there were still around libraries and frameworks that worked only with Python 2. That's a huge failure. If developers want to keep using the old stuff it means that the new one is either badly designed or badly managed. Compare it with Ruby. There were big changes from 1.8 to 1.9 (unicode stuff among the others) and again with the 2.x series. The language mostly maintained backward compatibility and we can still write Ruby on 2.5 with the old 1.8 syntax. Community ported libraries and frameworks, started using the new features and all went well.
- collinmanderson 8y agoMac probably uses whatever python FreeBSD uses. Most BSDs still use Python 2 by default.
- jacquesm 8y ago> Python 3 breakage and async turned out to be prescient, fantastic decisions. Python 3 implementation was a step in the right direction, but the decision to allow the old language co co-exist with the new one and to break backwards compatibility between the two (for instance 'print') in places where it didn't need to break makes no sense to me. A lot of goodwill got burned with that.
- JetSpiegel 8y agoI think this was important. The class of bugs it would have created if it had been compatible with the unicode/ascii split would be hideous. Fail fast. It's better to break right away than having false senses of security. There is always __future__ too.
- stOneskull 8y agoi don't think you answered "why did he feel the need to fight so hard for it?"
- staticassertion 8y agoEvery feature ends up being controversial. Every discussion ends up devolving, somewhere, with some group, into bikeshedding. Ultimately, it's up to certain stakeholders to hear arguments and make calls.
- crdoconnor 8y agoThere are always haters but I don't remember any previous PEP being quite as unpopular as this one.
- sametmax 8y agoThat's the very point of a bdfl : it assumes he knows better than others. Debating is for insight and cortesy, not mandatory.
- 21 8y agoBut the B is for Benevolent. When a huge part of the community is against, does that B still stands?
- bch 8y agoHe gave them a fantastic language for free and shepherded it for years - how much more benevolent does he need to be?
- deleted 8y ago[deleted]
- kolpa 8y agoFor every minute that he holds the BDLF title.
- icebraining 8y agoIf both kids want to eat candy as dinner, is the father blocking that not benevolent because he's outnumbered?
- simonh 8y agoIf 'everyone' was outraged, it wouldn't have been controversial, right? I'd argue that one person against _everyone_ else isn't a controversy, but in any case at the end of the day the PEP was accepted in a democratic poll.
- brettcannon 8y agoHe fought for it because he thought it was the right call. The role of a BDFL is to make those kinds of calls for the benefit of the language and community. It's really tough to fight the "tyranny of the majority" and go with what you think is right versus what everyone is screaming and yelling at you about.