Most active commenters
  • (7)
  • pvg(4)
  • jessaustin(4)
  • jacquesm(4)
  • coldtea(4)
  • technologia(3)
  • sametmax(3)
  • justinator(3)
  • Alex3917(3)
  • jstarfish(3)

←back to thread

2024 points randlet | 178 comments | | HN request time: 2.026s | source | bottom
1. bla2 ◴[] No.17515883[source]
> I don't ever want to have to fight so hard for a PEP and find that so many people despise my decisions.

Leading a large open source project must be terrible in this age of constant outrage :-(

replies(9): >>17515955 #>>17515972 #>>17516193 #>>17516427 #>>17516776 #>>17516884 #>>17517282 #>>17517716 #>>17517821 #
2. sjm-lbm ◴[] No.17515955[source]
It's PHP and not Python, but every time I read something like this from a major open source figure, I always think of this old PHP mailing list thread:

https://bugs.php.net/bug.php?id=50696

replies(8): >>17516108 #>>17516130 #>>17516216 #>>17516240 #>>17516461 #>>17516708 #>>17516836 #>>17517666 #
3. symmitchry ◴[] No.17515972[source]
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?

replies(5): >>17516128 #>>17516129 #>>17516223 #>>17516774 #>>17519017 #
4. Y_Y ◴[] No.17516108[source]
That's a good read. I feel like the "customer is always right" mentality does quite a bit of harm to OSS support.

Also reminds me of that dev (who I can't seem to search up) who had their email printed as part of a open-source software license in a car manual and would get ridiculous email from people who had car trouble.

replies(6): >>17516199 #>>17516206 #>>17516230 #>>17516371 #>>17516964 #>>17517308 #
5. jnwatson ◴[] No.17516128[source]
It 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.

replies(6): >>17516204 #>>17516226 #>>17516681 #>>17517178 #>>17517212 #>>17533584 #
6. staticassertion ◴[] No.17516129[source]
Every 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.

replies(1): >>17516424 #
7. coryfklein ◴[] No.17516130[source]
OMG there are some real gems in that thread.

> Escalate? Oh how I wish I had someone to escalate to. - rasmus@php.net

> After carefully reviewing this bug report with our board of directors on 4chan, we have come to the conclusion that your "rusty C skills" should be enough to fix the issue. I would therefore like to remind you that rasmus@php.net is http://en.wikipedia.org/wiki/Rasmus_lerdorf

replies(4): >>17516383 #>>17516676 #>>17517003 #>>17517845 #
8. technologia ◴[] No.17516193[source]
On a related note, we've always had the constant outrage, its the internet that allowed it to become more apparent.
replies(1): >>17516245 #
9. JdeBP ◴[] No.17516199{3}[source]
* https://news.ycombinator.com/item?id=16393228 * https://news.ycombinator.com/item?id=16763618
10. ranko ◴[] No.17516206{3}[source]
You're probably thinking of Daniel Stenberg of curl fame:

https://daniel.haxx.se/blog/2016/11/14/i-have-toyota-corola/

replies(1): >>17517807 #
11. raverbashing ◴[] No.17516216[source]
"This is going to cause us MONTHS or fixing code for no real benefit since this behavior change is arbitrary and seemingly, was made for no reason"

Yeah, tough. Fix your code

That's the attitude some maintainers need in cutting unreasonable requests.

replies(1): >>17516395 #
12. sametmax ◴[] No.17516223[source]
That's the very point of a bdfl : it assumes he knows better than others. Debating is for insight and cortesy, not mandatory.
replies(2): >>17516307 #>>17518113 #
13. chimeracoder ◴[] No.17516226{3}[source]
> 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.

replies(4): >>17516673 #>>17516682 #>>17516696 #>>17517423 #
14. ◴[] No.17516230{3}[source]
15. vxNsr ◴[] No.17516240[source]
O_o I wonder how many times I've spoken to someone and didn't realize who it was/how important they were because of the anonymity of the internet.
replies(4): >>17516660 #>>17517001 #>>17517331 #>>17521892 #
16. nemild ◴[] No.17516245[source]
In 2018, we can finally use our advances in data science and social network design to precisely target outrage and make it maximally engaging.
replies(1): >>17516297 #
17. cbhl ◴[] No.17516293{4}[source]
I 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.

replies(1): >>17516436 #
18. technologia ◴[] No.17516297{3}[source]
Not to dismiss your point, but outrage on the internet is like a car wreck, its terrible that it happened but everyone on the road still wants to check it out and put their 2 cents in.
replies(1): >>17516553 #
19. 21 ◴[] No.17516307{3}[source]
But the B is for Benevolent. When a huge part of the community is against, does that B still stands?
replies(6): >>17516435 #>>17516440 #>>17516441 #>>17516601 #>>17516714 #>>17516986 #
20. krylon ◴[] No.17516371{3}[source]
OTOH, way back, when I had a TV receiver card by Hauppage, and a new Linux kernel broke something, I posted a description of my troubles on Usenet, and within 24 hours, the person who had written the Video4Linux subsystem replied asking for more details (which I gladly provided), and a few days later, the bug was fixed.

That, I think, was the most awesome "customer support" experience of my life. I did make a point of being polite about it, however, which I consider a ground rule for dealing with people, especially if I want something from them.

But it was so awesome to post to a random usenet group about a driver problem and have the person who wrote the driver personally approach you for details. You don't get that with Windows, for sure. ;-)

replies(4): >>17517050 #>>17517497 #>>17517581 #>>17519508 #
21. ◴[] No.17516383{3}[source]
22. ashelmire ◴[] No.17516395{3}[source]
It's hilarious because it's literally a one-liner that Rasmus provided for him.
replies(1): >>17516460 #
23. crdoconnor ◴[] No.17516424{3}[source]
There are always haters but I don't remember any previous PEP being quite as unpopular as this one.
24. ◴[] No.17516427[source]
25. bch ◴[] No.17516435{4}[source]
He gave them a fantastic language for free and shepherded it for years - how much more benevolent does he need to be?
replies(2): >>17516616 #>>17517890 #
26. steveklabnik ◴[] No.17516436{5}[source]
For the discussion about Facebook, see here: https://news.ycombinator.com/item?id=17417201

It seems Python 3 is now dominant but not total, according to TFA.

27. icebraining ◴[] No.17516440{4}[source]
If both kids want to eat candy as dinner, is the father blocking that not benevolent because he's outnumbered?
replies(2): >>17516503 #>>17516653 #
28. kgwgk ◴[] No.17516441{4}[source]
This is what happens when the B and the D collide: you renounce to the FL.
replies(1): >>17516534 #
29. pvg ◴[] No.17516452{4}[source]
This is a particularly ill-chosen thread to deliberately try to re-flame this flamewar. Most threads are.
replies(3): >>17516644 #>>17516760 #>>17517200 #
30. sjm-lbm ◴[] No.17516460{4}[source]
It's more hilarious because his response to that (basically, "this is tax software so there will be a lot of QA when we make that change") is at least sort of legitimate, but only because his accounting software evidently only works due to undefined corner cases in the underlying platform, and that's just ... wow.
replies(3): >>17516692 #>>17517084 #>>17517300 #
31. ErikAugust ◴[] No.17516461[source]
I'm sure 'endosquid.com' is currently being by hammered by people wanting to find out who was so rude and unreasonable.
replies(1): >>17516603 #
32. 21 ◴[] No.17516503{5}[source]
There is a reason kids aren't allowed to legally decide for themselves until 18.

In Python land, there is this saying "we are all adults here".

Being an adult also means avoiding creating needless drama.

replies(2): >>17516596 #>>17516650 #
33. sametmax ◴[] No.17516534{5}[source]
If you are a good person.

I agree with the idea you should give power only to people that don't want it.

I think guido was the right person in power.

34. robbrit ◴[] No.17516553{4}[source]
Seems like this thread is a few steps away from outrage about outrage :)
replies(1): >>17517259 #
35. sametmax ◴[] No.17516596{6}[source]
Have you ever tried to debate on python-idea ?
36. cuckcuckspruce ◴[] No.17516601{4}[source]
Benevolent: "well meaning and kindly"

You can do something that people disagree with, even something that you think is the best for them, and still be benevolent.

37. Operyl ◴[] No.17516603{3}[source]
Looks like it has been dead for a bit now.
replies(1): >>17517457 #
38. ben509 ◴[] No.17516612{4}[source]
No, 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.
replies(6): >>17516995 #>>17517386 #>>17517687 #>>17518069 #>>17520956 #>>17528411 #
39. ◴[] No.17516616{5}[source]
40. romanows ◴[] No.17516644{5}[source]
Heaven 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
replies(2): >>17516675 #>>17516790 #
41. ben509 ◴[] No.17516650{6}[source]
They are, but they're adults who work in completely different environments and thus have wildly divergent needs.

One contrast:

You have some people who in business and want to do keep an old code base working forever.

You have some people who have no business experience and have no idea what a bottom line is, but might need a feature for a critical open source project that many others will use.

42. ryanisnan ◴[] No.17516653{5}[source]
In nearly all cases where parenting is present, children are inferior to their parents in both intelligence and judgement.

This analogy does not work in software.

replies(1): >>17517332 #
43. freehunter ◴[] No.17516660{3}[source]
I know I've gotten into heated arguments on here or on Reddit with very well-known figures in the tech world without realizing who they are until after the fact. Luckily I don't think I've every argued with a developer about their own product before... that I know of.
replies(1): >>17516715 #
44. jimmaswell ◴[] No.17516673{4}[source]
I'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.
replies(2): >>17516821 #>>17516939 #
45. pvg ◴[] No.17516675{6}[source]
Heaven, sadly, cannot forbid poopy responses but we can encourage others (and ourselves) not to post them.
replies(1): >>17517250 #
46. robaato ◴[] No.17516676{3}[source]
Shades of:

It often happens that I wake up at night and begin to think about a serious problem and decide I must tell the Pope about it. Then I wake up completely and remember that I am the Pope.

Pope John XXIII

replies(1): >>17516848 #
47. Redoubts ◴[] No.17516681{3}[source]
> 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.

replies(1): >>17516973 #
48. cuckcuckspruce ◴[] No.17516682{4}[source]
Python 3 avoided becoming what Perl 6 has. That alone is a victory.
replies(1): >>17517296 #
49. justinator ◴[] No.17516692{5}[source]
I was on the side of the person giving the - I think fairly legit., bug until I came to, "tax software in php" and then I realized there's nothing really black and white in this world.
replies(1): >>17517330 #
50. nas ◴[] No.17516696{4}[source]
> The jury is still out on the Python 3 decision, to be honest.

It's not. Python 3 has overtaken 2 and there is no stopping migration to it now. Python 3.7 is a lot better than 2.7. Just on memory use alone, 3.7 is massively better. Sure, there will be some hold outs on 2.7 for a long time. That's fine.

Also, this is not the say that migration from 2 to 3 was handled well. It wasn't. Python 3.0 should have had backwards compatible features like allowing the 'u' string prefix. Indexing byte strings should have returned length one byte strings. Byte strings should have supported at least a minimal amount of %-style formats. Etc.

That has all been mostly resolved and is in the past. Mistakes were made because, shock, the Python core developers are not perfect and didn't foresee all the migration issues. However, there is no way that we are going back and reviving the Python 2.x branch.

replies(4): >>17517214 #>>17517416 #>>17518146 #>>17519190 #
51. swyx ◴[] No.17516708[source]
found prior HN discussion: https://news.ycombinator.com/item?id=4145179
52. dragontamer ◴[] No.17516714{4}[source]
The D is for dictator. When a huge part of the community is against, the Dictator overrules.
53. swyx ◴[] No.17516715{4}[source]
i have a great solution: speak to everyone like they are a human being with feelings :)
replies(1): >>17516795 #
54. Bahamut ◴[] No.17516760{5}[source]
To 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.
replies(1): >>17516974 #
55. simonh ◴[] No.17516774[source]
If '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.
56. blattimwind ◴[] No.17516790{6}[source]
Python 3 breakage is basically flamebait by now.
57. TimTheTinker ◴[] No.17516795{5}[source]
* slow clap *

“A word aptly spoken is like apples of gold in settings of silver.” —Proverbs

58. keymone ◴[] No.17516821{5}[source]
Syntax regularity is infinitely more important than scripting convenience.
replies(1): >>17517415 #
59. Sir_Cmpwn ◴[] No.17516836[source]
Archive:

http://archive.is/XYXoi

60. spease ◴[] No.17516848{4}[source]
“But, Doctor, I am Pagliacci!”
61. tw04 ◴[] No.17516884[source]
It's not the outrage, it's the entitlement. People have always been outraged, the major difference I've seen is the rampant sense of entitlement. I'm not sure if it's a result of bad parenting or something else, but it's slowly becoming a major issue for the entirety of the human race.
replies(2): >>17517310 #>>17517378 #
62. mywittyname ◴[] No.17516939{5}[source]
Try Ruby.
replies(1): >>17520093 #
63. Alex3917 ◴[] No.17516964{3}[source]
> "customer is always right" mentality does quite a bit of harm to OSS support.

It goes both ways. All too often people promote their new library on HN and Reddit, wait until a bunch of people are using it as a dependency, and then abandon it without even telling anyone whether or not it’s abandoned.

replies(2): >>17517068 #>>17517252 #
64. Daishiman ◴[] No.17516973{4}[source]
Name one.
replies(2): >>17517477 #>>17517863 #
65. pvg ◴[] No.17516974{6}[source]
No, 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.
replies(1): >>17517087 #
66. iajrz ◴[] No.17516986{4}[source]
B stands for benevolent even in that case. The target of that benevolence is the project. His call should be in the best interest of the project (benevolent), final (dictator), and (tongue in cheek) eternal (for life)
67. jessaustin ◴[] No.17516995{5}[source]
The 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.

replies(4): >>17517441 #>>17517444 #>>17517465 #>>17522768 #
68. fpgaminer ◴[] No.17517001{3}[source]
When I was much younger I started building a ray casting engine. I was having trouble wrapping my brain around how to render the floors so ... I emailed Ken Silverman.

It escapes me now _why_ I emailed him. I certainly had no idea the gravity of who he was (for those also unaware, he is perhaps most famous for creating the Build engine used in games like Duke Nukem 3D). I believe I was under the false assumption at the time that the Build engine was a raycaster (I hadn't played Duke Nukem), and I probably found a personal page of his about the Build engine while trying to solve my problem.

Either way, young me emailed Ken Silverman like it was nothing. He responded! He corrected me about the Build engine, but also proceeded to help describe how to render floors in a raycasting engine.

It still took me awhile more to get the hang of the math, and I believe a few more emails back and forth with him. I feel bad now, knowing now who he was. But I appreciated his help immensely. I think I wrote 3 or 4 more ray casting and tracing engines back then. Some were rudimentary, one was a raycaster but allowed arbitrary 2D level geometry (and even used some tricks to put "holes" in walls to cheat windows and have multiple heights). One was for a code golf competition. And one was _super_ efficient; the math and levels were set up such that 90% of the logic was just binary math rather then having to do the usual multiplications, divisions, and square roots. They're a lot of fun to make and I learned a lot.

Ken, if you ever stumble on this comment, thank you!

replies(3): >>17517353 #>>17517424 #>>17525407 #
69. hlmencken ◴[] No.17517003{3}[source]
Born in Greenland, that's a first I've seen.
70. kwhitefoot ◴[] No.17517050{4}[source]
I had the same experience. Suddenly Emacs Gnus reader stopped working, about 11:00 on a Friday morning. I posted the bug and had a reply from Lars Ingebrigtsen with an explanation and a workaround by 13:00. I think it was fixed by the beginning of the following week.

My experience of trying to get help from Microsoft on the other hand is, well let's just say not quite so impressive; they kept me on hold for 45 minutes once and never did solve my problem.

replies(1): >>17517426 #
71. jstarfish ◴[] No.17517068{4}[source]
Not using toy libraries for production systems is a lesson every young developer learns early on in their career.
replies(3): >>17517183 #>>17517245 #>>17517678 #
72. ocschwar ◴[] No.17517084{5}[source]
The underlying platform? WOuld that be Python or the tax law?
73. Bahamut ◴[] No.17517087{7}[source]
Then if someone disagrees & an argument erupts, then that should not be surprising - that post is equally as culpable for igniting a well-discussed issue by posting something clearly so opinionated/leaning towards one side of an issue that at this point one should have known better than to even allow a conversation to digress in that direction if that person wants to avoid that discussion.

To ignore that is to straight up deny what can only be described as flamebait.

replies(1): >>17517184 #
74. pmontra ◴[] No.17517178{3}[source]
That 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.
replies(1): >>17517772 #
75. jacquesm ◴[] No.17517183{5}[source]
Fortunately every young developer is also schooled extensively in telling toy libraries apart from serious ones.
replies(3): >>17517708 #>>17517858 #>>17519660 #
76. pvg ◴[] No.17517184{8}[source]
It is not flamebait to say 'I think so-and-so handled a difficult problem well', especially as part of larger point. It's flamy to respond 'u wat m8?'. It's not a complicated thing and there's no 'fairness' in treating these things as the same.
77. coldtea ◴[] No.17517200{5}[source]
>This is a particularly ill-chosen thread to deliberately try to re-flame this flamewar

Apparently it's the right thread to be rude and to assign intentions to people you don't know though?

And all because they dared say their opinion on a subject you're sensitive about?

How about that: people can have any opinion they like on Python 3, including considering it a botched migration process and a ho-hum update. And it's totally legit for them to speak about that. And it's not your place to censor them, or act up any time they express their opinions.

You can either add your arguments, or skip reading their comments. How about that?

replies(1): >>17517519 #
78. jacquesm ◴[] No.17517212{3}[source]
> 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.

replies(1): >>17519364 #
79. TylerE ◴[] No.17517214{5}[source]
How much momentum was lost in the transition though? I know that with the pain of 3 at the time a lot of people started looking at languages like Go or even Scala.
replies(1): >>17519883 #
80. passiveincomelg ◴[] No.17517245{5}[source]
In what parallel universe are you and how do I find the next wormhole to get there? :)
replies(1): >>17517728 #
81. coldtea ◴[] No.17517250{7}[source]
Notice 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?

82. cf498 ◴[] No.17517252{4}[source]
There is a fundamental difference between the extreme of stuff like GnuPGP, OpenSSL and other extreme of stuff someone created over the weekend and was nice enough to make available

I dont want to know, how much of core infrastructure is resting on the shoulder of overworked and burned out BDFL. This isnt a ego complex in most cases, but the knowledge that without someone with their commitment working at the project it will crumble.

83. technologia ◴[] No.17517259{5}[source]
lol, if my migraine was still raging on then it probably would have been because of me :P
84. bsg75 ◴[] No.17517282[source]
> this age of constant outrage

And entitlement.

85. jandrese ◴[] No.17517296{5}[source]
Is there even a "production ready" version of Perl 6 yet? It has to be the worst example of production hell for a computer language in history. It's the poster boy for the second system effect.
replies(1): >>17518382 #
86. zaphar ◴[] No.17517300{5}[source]
One of the hidden costs when you elect to use a language like PHP in the early 00's is that as they fix the glaring issues in their language and stdlib you will be incurring a continuing maintenance cost.

It's a combination of your choice to pick PHP and their choice to fix the languages warts colliding.

It may even have been a reasonable choice for reasons of time to market, hiring, and other business related factors. But the conflict in this thread highlighted that whoever chose PHP in the beginning did not factor in this hidden cost when he made his choice. The results of that lack of information were predictable.

replies(3): >>17517548 #>>17517831 #>>17517901 #
87. bsg75 ◴[] No.17517308{3}[source]
An interesting debate: Are _users_ of FOSS "customers" ?
replies(1): >>17518102 #
88. wild_preference ◴[] No.17517310[source]
I noticed this over the years on a forum I’ve run for over 10 years. Since ads are pretty much dead for small publishers like me, the forum costs me money. But I run it out of charity.

Nothing sucks the energy out of me more than lurking in my forum and seeing users complain about how little I’ve done for the forum. I don’t want to know how many weekend I’ve spent building features for the forum or arbitrating problems between users.

The thing is that these posts of entitlement are a relatively knew phenomenon on my forum mostly in crescendo over the last four years.

I’m pretty sensitive to it now and it’s easy to spot eveywhere. From people whining that free shit isn’t perfect on HN to gamers complaining that a modder charges for the mod instead of doing it for fun.

replies(2): >>17517577 #>>17518025 #
89. ScottBurson ◴[] No.17517330{6}[source]
Did you catch the part about "it makes you lose faith in the product"? ROFL
replies(1): >>17517920 #
90. gomox ◴[] No.17517331{3}[source]
When I was 19 I was interning at Google and I got into a mild discussion on a mailing list with Rob Pike. When I went back to school the next semester someone was teaching a class on UTF-8 and I thought the name of the creator sounded familiar.

Thank god I don't have access to those emails anymore so I don't have to endure the cringe.

To make myself feel better, I posit that that kind of youthful arrogance is at the origin of many innovations done by youngsters that didn't know better.

replies(1): >>17517751 #
91. icebraining ◴[] No.17517332{6}[source]
Repeating sametmax above: "That's the very point of a bdfl : it assumes he knows better than others."
92. heurist ◴[] No.17517353{4}[source]
I've done nothing worth mentioning here, but I have received a couple emails asking detailed questions about things I'd done and forgotten about years ago or looking for early career advice, and I'm more surprised and honored that someone took the time to appreciate my work than anything.
replies(1): >>17517500 #
93. rohan1024 ◴[] No.17517378[source]
Completely agree with you. Heck I realized I have the same entitlement issue after running into 2-3 people who were on higher spectrum of entitlement. I was having issue with their behavior but realized I do the same sometimes. I am trying to balance it out. The sad thing is people are not even aware that they have this issue.

I think social media is responsible for breeding this sense of entitlement among people.

replies(1): >>17522187 #
94. tialaramex ◴[] No.17517386{5}[source]
I think I mostly agree with you, but it can be unclear to programmers (who are after all the people writing Python code) whether they're dealing with a string, or merely with bytes that happen to look like a string, and this causes hassle.

Until way too recently essentially all Python code couldn't handle basic SSL/TLS certificate validation for Internationalized Domain Names. Once you understand what's going on, this situation is a no brainer: In order to connect to a machine named X, we must have turned X into DNS A-labels that we could look up, and we can treat those as bytes. The certificate must have SAN dnsNames matching its names, and those too are written as A-labels. So we can almost just compare the literal bytes (actually DNS A-labels are "case-insensitive" so we need to handle that, and the asterisk "wild card")

But Python, in its wisdom, defined this API to take a string, and strings, as you observe, aren't bytes. So instead of the above unarguable approach they wasted precious months trying to figure out how best to turn the A-labels from a SAN dnsName into Unicode strings, which isn't even the right problem to solve.

Eventually sanity prevailed: https://bugs.python.org/issue28414

95. jimmaswell ◴[] No.17517415{6}[source]
Button 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/

replies(1): >>17517602 #
96. olooney ◴[] No.17517416{5}[source]
It was touch and go for a couple of years there but yeah, Python 3 is now well and truly over the hump.

The Python 3 Readiness Project now lists [341](http://py3readiness.org/) of the 360 most common packages as Python 3 compatible.

Even that's underselling it really. For example it lists BeautifulSoup as not converted, but the link goes to BeautifulSoup 3.2.1. However, BeautifulSoup4 works great on Python 3. And for MySQL there's mysqlclient and several others, and since database packages usually follow PEP 249 pretty closely its very easy to switch. So in reality, rather than 341/360, its more like "everything worth converting has been converted." Or just "everything" for short.

97. pjmlp ◴[] No.17517423{4}[source]
Well, many embedded developers will never move beyond C89 unless forced to do so.

Meanwhile C22 work is ongoing.

replies(1): >>17519131 #
98. code_duck ◴[] No.17517424{4}[source]
That’s great. In your naïveté, you were unaware not intimidated by his prominent figure or reputation. I’ve found that some very well-known people and companies are more approachable than one might expect, possibly because people usually assume they will be indifferent to personal communication and don’t try to talk to them.
99. undseg ◴[] No.17517426{5}[source]
Back in the days Microsoft would have amazing customer support. And I'm talking about "API customers", many times I've seen them go out of their way to fix third party programs not working correctly by adapting their platform, it was a very efficient process. I guess that doesn't work as well at their current scale, or they care less because they're not building up market share.
replies(2): >>17517534 #>>17517999 #
100. ubernostrum ◴[] No.17517441{6}[source]
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.

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.

replies(2): >>17517640 #>>17522848 #
101. tialaramex ◴[] No.17517444{6}[source]
Implicitly converting strings into bytes or vice versa means now all your APIs grow an exception "Invalid encoding" / "Can't encode this" / "Can't decode this" / etcetera that you need to deal with.

Making people actually do the conversion has the advantage that when writing their string conversion code they might actually do something with the exception beyond maybe logging it and then pressing on anyway. It also gives you the opportunity to explicitly offer them alternatives like treating everything we can't encode as some sort of replacement character (works well for Unicode, not so much for ASCII), which is way too much to ask of every single function that takes bytes.

replies(1): >>17517968 #
102. currysausage ◴[] No.17517457{4}[source]
Since 2010, it seems: https://web.archive.org/web/*/endosquid.com

Guess they went out of business before they could typecast all these nasty empty strings.

103. jrochkind1 ◴[] No.17517465{6}[source]
> 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.

That's the ruby solution. I like the ruby API here. When ruby introduced it in 1.9, it did cause similar upgrade pain, since you weren't used to having your strings tagged with an encoding, and suddenly they all kind of need to be if you want to do anything with them as strings-not-bytes.

As someone else noted would be the result, indeed the result was lots of "incompatible encoding" exceptions.

I think ruby actually has a pretty reasonable API here, but several years on, there are still _plenty_ of developers who don't understand it.

replies(1): >>17518080 #
104. ubernostrum ◴[] No.17517477{5}[source]
I 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.

105. eithe ◴[] No.17517497{4}[source]
I used to have similar experience with most of the free source (that, or silence when project got abandoned), until Laravel, where I was yelled at because somebody apparently needed an ego boost that day. I still love the framework, but I don't think I'll be trying to reason there anymore. Still - maintaining projects most of the time is unappreciated job, so kudos if you do it
106. sli ◴[] No.17517500{5}[source]
The best I've gotten are emails asking for permission to fork one of my public Github repos. I was never sure how to respond to those, because... yes? By default?
107. scott_s ◴[] No.17517519{6}[source]
Opinions are fine. But "Did you forgot the /s tag?" is antagonistic. Please don't antagonize.
108. marris ◴[] No.17517534{6}[source]
> go out of their way to fix third party programs not working correctly by adapting their platform, it was a very efficient process

This kind of thing probably doesn't even scale with itself, since there are only so many acrobatics your code can go through before no one can even understand why it's doing something, let alone add new workarounds. So the first K broken programs get special treatment, and the others face a much higher bar to get the same treatment.

109. eithe ◴[] No.17517548{6}[source]
One of my PHP bug submissions is already in high school. The other is in kindergarten. Thankfully both of them won't see light of day in most applications.

But focusing on PHP is rubbish - you can look at any language and find questionable choices. The moment where we need frameworks to make the warts go away - that's worrying. Same thing with JS really

110. mehrdadn ◴[] No.17517577{3}[source]
I think part of the explanation might be the explosion of choice [1]. For better or for worse, the more choices there are, the better people expect them to be to stand out. If you make software that solves a critical problem nobody else's does, I doubt people will feel nearly as entitled about it as about a forum or a programming language or whatever.

[1] https://www.ted.com/talks/barry_schwartz_on_the_paradox_of_c...

111. Kadin ◴[] No.17517581{4}[source]
Yep. This attitude isn't dead, assuming you approach the developer via the right/preferred venue, and are polite, and they are still actively maintaining the project. And it really helps if you give a thorough bug report!

I recently submitted a bug report to a fairly niche OSS package that I use, and within a few hours the author replied (on GitHub) something like "oh wow, yeah that's an edge case but I definitely want to fix it, can you send me the test data you used..." and once I gave him the test data, he had it fixed in two hours and now anybody who grabs the source won't have to deal with that bug.

It was great, and even though I didn't do anything except write up a bug ticket properly (the same way I'd expect anyone on my team at work to do it), the software is a little better now.

112. keymone ◴[] No.17517602{7}[source]
Are you fingers equally spaced square shape manipulators?

I don’t support having return at all. Statements that are not expressions are a mistake.

Syntax irregularities are anti-practical.

113. ◴[] No.17517640{7}[source]
114. munificent ◴[] No.17517666[source]
I have yet to encounter any user so hostile in my open source projects, thankfully. But when the time arises, the line I have prepared is:

    I'm really sorry you ran into this issue. To make things better,
    I've given you a full refund.
replies(1): >>17522935 #
115. Alex3917 ◴[] No.17517678{5}[source]
If you put something out there and no one uses it then fine. But once it has hundreds of commits and issues and over 1,000 stars on GitHub, then I think you have some responsibility to people using the thing you’ve created -- if you’ve been actively promoting it as something everyone should use.
replies(2): >>17517913 #>>17518331 #
116. jerf ◴[] No.17517687{5}[source]
"No, the bad decision was treating bytes and strings interchangeably in the first place."

Show me the 1995 software that gets this right, and I'll show you proof that time travel is possible, by simply showing you that software right back again.

Abstractly, yes, it's true. Concretely, though, it's not a particularly valid criticism.

117. janoc ◴[] No.17517708{6}[source]
And why isn't the young developer being mentored by someone more senior before introducing a new dependency into a business critical system?

Why is what amounts to a clear project management failure the problem of some open source developer who has published their personal pet project?

If dependencies aren't reviewed before being used, how does such organization handle software license compliance (whether OSS or proprietary), for example?

A clear cut case of trying to shift blame for own failings onto an unpaid volunteer that has helped to save the commercial developer time and money, IMO.

replies(2): >>17517787 #>>17518188 #
118. fit2rule ◴[] No.17517716[source]
What I think would fix this, is better developer metrics and statistics. If every post to the python-dev list was automatically tagged with some sort of metric for that persons contributions to the project, it would go a long way to identifying, and triaging, the most violent vitriol.

Something like code contributions, amount of churn, speed of implementation, level of correctness, etc. Trouble is, I don't really see any quick "just insert batteries" method of adding such metrics to an open-source programming community - perhaps someone knows of a great system of reports for measuring developer productivity through a repo or something? I guess it would also have to accommodate dev-ops and marketing efforts by developers, too. Hmm .. maybe this is a startup idea in the making ..

119. janoc ◴[] No.17517728{6}[source]
Well, that people don't do such things is not really the fault (nor problem) of the developer of that toy library, IMO.

Nobody else but you alone can ensure that your project is managed and developed properly.

120. crystalPalace ◴[] No.17517751{4}[source]
Reminds me of attending a conference and being in a workshop with a member of TC39, the Ecmascript standards committee. I was sitting next to this individual but didn't know who they were. I made the mistake of complaining about modern JS and version splitting. Fortunately, I didn't say anything too harsh but I definitely would have held my tongue if I knew who they were.
121. janoc ◴[] No.17517772{4}[source]
Could 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.

replies(2): >>17517898 #>>17538310 #
122. jacquesm ◴[] No.17517787{7}[source]
> And why isn't the young developer being mentored by someone more senior before introducing a new dependency into a business critical system?

Some critical assumptions:

- a more senior dev is available

- has time

- understand the system well enough to judge the impact

- is actually a better developer than the junior (in spite of being older / in the game longer)

> Why is what amounts to a clear project management failure the problem of some open source developer who has published their personal pet project?

It isn't, that was the point.

> If dependencies aren't reviewed before being used, how does such organization handle software license compliance (whether OSS or proprietary), for example?

Some critical assumptions:

- organizations keep a close eye on developers incorporating code under various licenses

- the people keeping an eye on that are qualified to make the calls

- the resources to keep an eye on this are available

> A clear cut case of trying to shift blame for own failings onto an unpaid volunteer that has helped to save the commercial developer time and money, IMO.

Sure. But that doesn't mean these things don't happen just about everywhere, many times per day.

It is rare to find a company where all of the assumptions labelled above are true all the time. And that's where the problem lies.

It's a clear case of there being no difference between theory and practice in theory but in practice there is, and rather a lot of it. Everybody knows in theory how software should be developed, but in practice hardly anybody actually does it that way. They're either out of time, options or qualifications (or all three) and they will do the job anyway.

That doesn't excuse it, but it does help you to understand it.

123. luhn ◴[] No.17517807{4}[source]
Ha, hadn't seen that one before. I did enjoy this related post about him hacking someone's Instagram. https://daniel.haxx.se/blog/2016/01/19/subject-urgent-warnin...
124. robertk ◴[] No.17517821[source]
Outrageous. I’m offended, because I see open source as a great force for change, and I find your remarks belittling.
replies(1): >>17520022 #
125. ◴[] No.17517831{6}[source]
126. jypepin ◴[] No.17517845{3}[source]
After carefully reviewing this bug report with our board of directors on 4chan, we have come to the conclusion that your "rusty C skills" should be enough to fix the issue. I would therefore like to remind you that rasmus@php.net is http://en.wikipedia.org/wiki/Rasmus_lerdorf

ahahaha

127. gaius ◴[] No.17517858{6}[source]
Then explain nodejs and MongoDB existing in production systems?

Or did you forget the /s...

replies(1): >>17517882 #
128. liveoneggs ◴[] No.17517863{5}[source]
Google replacing python with Go?
replies(3): >>17518043 #>>17518414 #>>17533714 #
129. jacquesm ◴[] No.17517882{7}[source]
> Or did you forget the /s...

Yep. It's been a long day after a particularly long week. I will take a break from HN, too much on my mind. Thanks for the reminder.

replies(1): >>17518713 #
130. kolpa ◴[] No.17517890{5}[source]
For every minute that he holds the BDLF title.
131. pmontra ◴[] No.17517898{5}[source]
They 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.

132. ◴[] No.17517901{6}[source]
133. titanix2 ◴[] No.17517913{6}[source]
No they aren’t. The code is open source anyway so if the dependency is important enough for your project, fork it. Or pay for support.
134. justinator ◴[] No.17517920{7}[source]
I caught the part about, "we have unitialized variables being passed everywhere which should be numbers" and that code, well, smells.

I think the PHP team changing the return value of a function without putting anything in a changelog is a Very Bad Idea and a dev. should be pretty upset about that. Saying that the main dev. is doing this work as a charitable thing is fairly misleading as well.

Buuuuut, I also think passing an unitialized value like that is already a bug in this context given the type of software being created. I'd rather see, "NULL" found wherever than know that it was magically changed to 0 (like they would prefer). I know the dev. said that this is just a formatting thing, but I'll wager they're using formatted numbers for some sort of calculation (inadvertently or not).

Whatever is going on, I hope there was a huge code review and a massive QA effort ( which I also doubt happened), because this is a textbook example of tech debt and the loan shark has come a-knockin'.

replies(1): >>17518587 #
135. jessaustin ◴[] No.17517968{7}[source]
...which is way too much to ask of every single function that takes bytes.

Sorry if I wasn't clear. I meant to suggest that the byte-functions wouldn't know or do anything about encodings. They just work with bytes. It's the other functions, that take the encoding-annotated bytes (or optionally a "pure" unicode type), that would care about encodings.

136. TheDauthi ◴[] No.17517999{6}[source]
They once shipped my company a custom MSVCRT.DLL to fix a crash bug in a third-party application under heavy load. True, it was a bug in the C runtime itself, but they got us a fix for it about a day after we (along with the third party) got in touch with them.

Just a few years later my team had to contact them for a BSOD that kept happening after one of their patches. We were put off for about a week before throwing our hands up on it.

137. chias ◴[] No.17518025{3}[source]
I'm in an almost identical situation with an online community that I've built and have continued to work on. Back in the day I could hang out there to relax -- these days it's incredibly draining for me to be around.
138. Daishiman ◴[] No.17518043{6}[source]
That 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.
139. fgonzag ◴[] No.17518069{5}[source]
Bad decision? UTF was Standarized in 1993, python was first released in 1991. You can't decide to use something that hasn't been invented yet. Back then bytes and string were the same thing. Java did do it right but by 1995 the industry had already seen the problems of differing character sets.
replies(1): >>17522175 #
140. jessaustin ◴[] No.17518080{7}[source]
Sure, there are growing pains with any breaking change. Do you think the ruby 1.8 -> 1.9 transition went more smoothly than the python 2.7 -> 3.x... transition?
replies(2): >>17518536 #>>17518878 #
141. dhimes ◴[] No.17518102{4}[source]
I think "consumers" is the better term.
142. jhayward ◴[] No.17518113{3}[source]
> That's the very point of a bdfl : it assumes he knows better than others

I think it's not that he knows better, it's that there can be a single, coherent, consistent design consciousness.

A BFDL can create an effective process of evolution rather than some of the more egregious open-mob process failures that are prevalent in open source.

143. mistrial9 ◴[] No.17518146{5}[source]
false imperative => "Python 3 has overtaken 2 and there is no stopping migration to it now. "

this shows a superficial, almost entertainment-industry sort of view of a software development lifecycle..

in the latest Ubuntu Bionic with apps, building right now on a local machine, I see 143 python-xx packages installed and 43 python3-xxx ..

saavy package authors use import future and six to side-step the whole issue, while core maintainers struggle, and outsiders invoke a mob voice

Python 2.7 for LTS

144. rhizome ◴[] No.17518188{7}[source]
And why isn't the young developer being mentored by someone more senior before introducing a new dependency into a business critical system?

Because they're already the senior. CEO said it shouldn't be that hard, and besides, they only wanted to pay $40K/yr.

145. jstarfish ◴[] No.17518331{6}[source]
It's a free product, not a child support obligation. Even if you do walk away, it's open source and can be maintained by anybody interested in stepping up. This is the price of adoption, not guaranteed updates for life from the creator.

But I get where you're coming from. It's even worse on Steam, where developers will actually collect money during the "early access" phase and then walk away once a (closed-source) tech demo is half-complete.

replies(1): >>17518396 #
146. lizmat ◴[] No.17518382{6}[source]
There has been a production ready version of Rakudo Perl 6 (https://perl6.org) since Christmas 2015. It has been on a monthly release cycle for years, and a 3-monthly release cycle for Rakudo Star, the "user" distribution (with some bells and whistles added).

Cro (https://cro.services) is a set of libraries for building reactive distributed systems. Comma IDE (https://commaide.com) is an IDE for Perl 6, based on the JetBrains IDEA platform, now in (paid) beta.

If you want to keep up-to-date on Perl 6 development, check out the Perl 6 Weekly (https://p6weekly.wordpress.com).

147. Alex3917 ◴[] No.17518396{7}[source]
> This is the price of adoption, not guaranteed updates for life from the creator.

I’m not saying anyone should be obligated to do free work. This issue is that most people don’t feel comfortable publishing a public fork without the blessing of the creator, or at least knowing the creator no longer intends to work on the project in the near future. So you end up with these situations where there are thousands of people running production systems with unmerged security patches because the creator can’t be bothered to spend 30 seconds to write a one sentence reply to an email.

Short of being in a coma, I consider that toxic behavior.

And just to be clear I’m taking about situations where there are lots of open PRs but no signs of life for months or years on end, not situations where the creator just went on vacation for a few weeks.

replies(1): >>17519628 #
148. joshuamorton ◴[] No.17518414{6}[source]
This also isn't really true. Google is certainly replacing certain things with Go. But its not replacing python with go.
149. jrochkind1 ◴[] No.17518536{8}[source]
My impression is that it did, yes.
replies(1): >>17520279 #
150. ScottBurson ◴[] No.17518587{8}[source]
I agree with this as far as it goes, but I think @zaphar has the better answer: a tax app should never have been written in PHP to begin with.

There's a fundamental quandary in language design: accessibility to novice programmers and suitability for serious work are in opposition. Novices, being novices, are unable to appreciate this problem.

replies(1): >>17518712 #
151. justinator ◴[] No.17518712{9}[source]
Oh dude: absolutely agreed on that.
152. gaius ◴[] No.17518713{8}[source]
Have a great weekend, catch you on the flipside
153. coldtea ◴[] No.17518878{8}[source]
Sure it did. Barely took a few years, and it also had a large performance boost (whereas 3 initially came with regressions until 3.4 or so).

Plus, basic things like Rails were working from the start.

154. brettcannon ◴[] No.17519017[source]
He 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.
155. llukas ◴[] No.17519131{5}[source]
> Well, many embedded compilers will never move beyond C89 unless vendor is forced to do so.

FTFY

replies(1): >>17520842 #
156. cwyers ◴[] No.17519190{5}[source]
That's not the point of the person you're responding to. They didn't say that the transition didn't happen. They said it's not yet known if it was worth it. All you're saying is that it happened.
replies(1): >>17519438 #
157. JetSpiegel ◴[] No.17519364{4}[source]
I 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.

158. nas ◴[] No.17519438{6}[source]
I'm saying it happened and Python 3 is the language I want to use. If you don't do Python 3, you either keep the error prone str/unicode string model or you dream up some way to evolve to a better model. Would some mythical version of an evolved Python 2.x be better than what we have? I mean, how to argue against that? I haven't seen anyone propose a workable migration plan. Python 3.7 is better than 2.7.15 and better than 'tauthon'.
159. bigger_cheese ◴[] No.17519508{4}[source]
Years ago I purchased a motherboard with a built in Raid controller. There were no drivers for it in mainline Linux kernel but there was code for a kernel module on the chipset vendor (Via's) website. The provided code wouldn't compile because there was a bug.

People from Fedora IRC channel helped me live debug the code over irc and we found the bug and were able to get code to compile and my raid controller working. Was an awesome experience.

160. lstodd ◴[] No.17519628{8}[source]
eww, that's called entitlement.

no one promised you anything. you merged some code into your project. now deal with the consequences. be responsible for your work.

161. jstarfish ◴[] No.17519660{6}[source]
By definition, they aren't though-- for the truly green, that extensive schooling comes from `npm/pip/gem install`ing random packages with implementations they don't understand or can't account for, then having to deal with the fallout in whatever form it chooses to manifest itself. Could be a maintainability nightmare, or it could be losing your job.

My advice to mentees is that if installing a package to achieve x saves (a significant amount of) time/money that outweighs the risks to self/company or has value added by means of product maturity or domain expertise, then by all means do not roll your own crypto, web framework, db connector or machine learning library. But if one is going to introduce dependencies on things as trivial as leftpad or someone's Show HN single-pass weekend hackathon proof-of-concept, they will soon learn why we don't bring toys to work.

162. lenocinor ◴[] No.17519883{6}[source]
Python currently still 4th at https://www.tiobe.com/tiobe-index/ . As the most popular scripting language on there by some margin, I'd say they're still doing pretty well.
163. robertk ◴[] No.17520022[source]
Denizens... please. I was clearly facetious.

Too deadpan.

164. cutler ◴[] No.17520093{6}[source]
Aw, alright then.
165. jrochkind1 ◴[] No.17520279{9}[source]
But on the other hand, Python's overall popularity has grown (mostly on the back of 'data science' I think), while rubies has shrunk, and python is definitely more popular than ruby at the moment... so python's lesser success at that transition didn't actually matter much in the end?
166. pjmlp ◴[] No.17520842{6}[source]
Not really, many of those developers do have C99 compilers with partial C11 support at their disposal.

There are almost no vendors left offering C89 only compilers.

167. kqr ◴[] No.17520956{5}[source]
I wish I could sufficiently express my frustration for this. It's such a common mistake too. If you design a language with a type for text, and your language has a type called "string" oh God please God let those two be the same thing.

There are so many languages in which the type "string" is not the one to use for strings...

168. jmmcd ◴[] No.17521892{3}[source]
I wrote to Ken Thompson when I was an undergrad doing a history of computing essay. And he wrote back with a potted autobiography! It was probably a bit before email became the scourge that it is now.

The sad part is: I lost the email in a transition from one machine/set of floppy disk backups to another.

169. coldtea ◴[] No.17522175{6}[source]
>Back then bytes and string were the same thing.

No, they weren't. Impossible as it seems, we had encodings (including multi-byte encodings) for decades before UTF.

Python couldn't use UTF-8 in 1991, but it could very well tag strings with a specific encoding, instead of treating them as a bucket of bytes C-style.

>Java did do it right but by 1995 the industry had already seen the problems of differing character sets.

We had seen the problems of "differing character sets" for decades already (Windows vs DOS version of the same language encodings was a classic example for most users, but the problems go back to EBCDIC and so on).

Java just did a more right thing, but we already have a need for generic string types that can handle multiple encodings and know what they contain and how to convert from one to another.

170. tonyedgecombe ◴[] No.17522187{3}[source]
I'm not sure it is social media, rather I think it's the price. Free or very cheap opens you up to a group of people you wouldn't normally have to deal with.
171. kqr ◴[] No.17522768{6}[source]
Encodings are related to storage and transportation -- not business logic. You should not have to deal with encodings inside your application, so forcing programmers to deal with encodings at the point it matters, when text enters and exits the application, is thus sound.

If yoy truly don't care whether or not the text is decodable (which is sometimes the case), then don't read it as a string, read it as a byte array.

You can still have methods that are generic over byte arrays and text, since that is an orthogonal concern.

172. jessaustin ◴[] No.17522848{7}[source]
For lots of applications it doesn't matter how many bytes are in a character, because characters don't matter. Even within a particular application, it's common for characters to only matter in a few particular locations. It would still have been a win for python, to make such applications easier to write and maintain.
173. kamyarg ◴[] No.17522935{3}[source]
Ah, now I want to contribute to open source community just because I might be able to say this to some unappreciative prick. :)
174. justin66 ◴[] No.17525407{4}[source]
> Ken, if you ever stumble on this comment, thank you!

His email address takes a very short time to find and he's on Facebook. Just a suggestion: why not send a note and thank him for real? You might make his afternoon a little brighter.

(I'm awful about thank you notes and if you knew me you'd be within your rights to call me a hypocrite, but still!)

175. AlexCoventry ◴[] No.17528411{5}[source]
> the bad decision was treating bytes and strings interchangeably in the first place

Python preceded unicode, though.

176. stOneskull ◴[] No.17533584{3}[source]
i don't think you answered "why did he feel the need to fight so hard for it?"
177. webmaven ◴[] No.17533714{6}[source]
I understand that had more to do with their "Unladen Swallow"[0] work being rejected than anything related to the transition to Python3.

Since Google couldn't convince folks to let them make Python faster, they created a NEW language instead.

[0] https://www.python.org/dev/peps/pep-3146/

178. collinmanderson ◴[] No.17538310{5}[source]
Mac probably uses whatever python FreeBSD uses. Most BSDs still use Python 2 by default.