"The reason why we have Linux, and BSDs, and XNU is that they all provide the same baseline API, which was defined from the outside [by POSIX]. The coordination problem was pre-solved, and what remained is just filling-in the implementation."
But that is not at all how Posix operates or has operated. Posix standardises common denominators between existing implementations. The fact that we now have strlcpy(3) and strlcat(3) in Posix 2024, is not because Posix designed and stipulated them. Rather, they appeared in OpenBSD in 1998, were found useful by other *nix-es over time, spread, and were finally taken aboard by Posix that standardised what was already out there and being used! This to me is the very opposite of the point the author is trying to make!
Linux would have had strlcpy/strlcat 25 years ago but the glibc maintainer was famously being a giant chode and refused to allow "horribly inefficient BSD crap" into his precious code, and this fight went on for years:
https://sourceware.org/legacy-ml/libc-alpha/2000-08/msg00053...
So it wasn't for lack of trying. Yes, Open Source can't coordinate and this is why we can't have nice things.
It's surprising how we ended up with such a robust open-source OS ecosystem (pretty much every server running Linux) with such emotional people at the helm.
He is clearly not being rational there, but I could see how his aesthetic tastes might correlate pretty well with robust software. I suppose that saying no to new features is a good default heuristic, these additions could have easily added more problems than they solve, and then you have more surface area to maintain.
That being said, this old-school ideology of maintainers dumping the full responsibility on the user for applying the API "properly" is rather unreasonable. It often sounds like they enjoy having all these footguns they refuse to fix, so they can feel superior and differentiate their club of greybeards who have memorised all the esoteric pitfalls, simply because they were along for the journey, from the masses.
Many of the people involved in the history of Linux (and most software) are jerks, but when people dig up a “this jerk blocked X for 25 years” story, we aren’t seeing the 100s of other (mostly bad) ideas that same jerk also blocked that would have changed things in other ways (possibly for the worse).
My point being, not that the person isn’t a jerk or that the decision wasn’t wrong, but that one error by one jerk doesn’t tell us much.
It does tell us that there has been no advancement in terms of jerk gatekeeping.
Because there is no easy way to determine if they actually blocked hundreds of bad ideas.
If a project does not have several hundreds of bad ideas, then probably it is not popular. I don't follow that many projects in detail, but all that I follow get a lot of bad ideas in time.
I think being qualified as a jerk or not is orthogonal to the need of gatekeeping (required in my opinion) or the quantities (higher for more popular).
How does this relate to the point that no one can determine?, of course they can guess and estimate…
> (...) we aren’t seeing the 100s of other (mostly bad) ideas that same jerk also blocked that would have changed things in other ways (possibly for the worse).
Perhaps you're not seeing because those never existed? I mean, even though you're clearly speaking in hypotheticals, you're fabricating an outlandish scenario where somehow you associate being a jerk with a 100s-to-1 success rate. But there is nothing to support or even suggest that's even remotely real, plausible, or even conceivable. You have only concrete evidence of someone rejecting a sound recommendation on the grounds of gatekeeping mixed with NIH. Gatekeeping and NIH are not quality gates, are they? If that is the process, obviously you cannot expect a positive outcome.
I recommend folks give “The Cathedral and the Bazaar” a read. Another good book is “Negotiating Rationally” (see below).
If the core developers/maintainers are putting in thousands of hours over several years, and a patch comes along, it is rightfully at the discretion of those doing 80-95% of the work.
But as negotiating rationally discusses, we value our work more than others—and there’s some emotional attachment. We need to learn to let that go and try to find the best solution, and be open to the bigger picture.
https://en.m.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
https://www.simonandschuster.com/books/Negotiating-Rationall...
> It's surprising how we ended up with such a robust open-source OS ecosystem (pretty much every server running Linux) with such emotional people at the helm.
People developing proprietary software will not be any less emotional or any more rational. The difference is that it does not happen publicly.
> It often sounds like they enjoy having all these footguns they refuse to fix, so they can feel superior and differentiate their club of greybeards who have memorised all the esoteric pitfalls, simply because they were along for the journey, from the masses.
Often the reason for these pitfalls is that they exist because they enable some performance optimizations. The respective maintainer does care about performance.
Sure. One part of the time. Likely maximum 10% even. Very often it's just somebody's fragile ego.
> Likely maximum 10% even.
Intel, AMD and Apple would very likely be willing to invest an insane amount of money for a 10 % performance increase. So, if this indeed increases the performance by about 10 %, I'd call it a very good idea.
Ah, I meant something entirely different: that somebody looking like a jerk because there's ugly code that is very necessary for good performance... is likely true for only 10% of the time.
I'd wager the other 90% are OSS maintainers being jerks. Occam's Razor and all that.
> It's surprising how we ended up with such a robust open-source OS ecosystem (pretty much every server running Linux) with such emotional people at the helm.
As opposed to what? Unbiased and dispassionate? There's no such thing. What you're probably thinking of is careerist and authoritarian within a corporation. It's not more efficient than the darwinism of open source.
Naturally, passionate builders and experts who rise to prominence controlling a tool will feel strongly about the vision for that tool. That's how it gets made in the first place.
Calling them "emotional" is just cheap.
Your so called "rationality" is easy when you're not the one pouring your intense effort into something.
You keep diminishing and attacking these "arrogant" creators while you're clearly the model of rationality who habe built... No, you use what they build. Funny that.
Maybe take a humble pill.
I suppose that what I'm advocating is being passionate about the technical problem, and only the technical problem. Making decisions based on facts and principled reasoning, and not vague aesthetic preferences or personal animosity.
This is no utopia, and it is not rare, it's pretty basic professionalism and engineering discipline. If you really care about the problem you are solving, you'll push the rest of the baggage aside, especially your ego.
Surely name-calling and making unfounded gut judgements based on us-vs-them tribalism, like is seen in that response, is not very productive. He demonstrated no intention to solve the problem, no acknowledgements that it exists, no explanation why the solution is not appropriate, what alternative solutions might be better... He had no interest in working together to find the best path forward. He was simply being territorial and scaring off those that did not align with his Holy Taste, whatever that is.
I see it as a trade-off. There will be people passionate and rational enough about a project to make it work 90% while being a total jerk for the rest 10%. Would that make me put in the effort to do all the work? If jerk people "push it" too much, on too many topics, projects will be forked. But I think we will always have some that will manage to be "just acceptable" ...
- [deleted]
> Making decisions based on facts and principled reasoning, and not vague aesthetic preferences or personal animosity.
You're like companies claiming that "we make decisions based on data".
Believe your own Kool aid but reality is much more nuanced and power/leadership/intuition based than "data based".
I don't want to get into politics but it would be extremely easy for me to find several examples where you'll claim something and when I say that's emotional and tribal you'll decide I must be <label>.
I don't even care about this specific example but about your initial generalization from it. Either you talk about this specific case only or you make and prove your generalizations in a "rational and unemotional" way, right?
- [deleted]
- [deleted]
"BSD crap," "deserves to be punished"...
There's also an element of "Linus Torvalds is an antisocial jerk, and he's a genius, therefore if I am an antisocial jerk I must be doing genius-level work." In particular, it's a lot easier to attack someone with empty insults than it is to defend your own position with substantive thought.
is antisocial appropriate for linus ? I thought he was semi hot headed and thin skinned when it comes to quality, not necessary harmful for no reason
The trend of 'savant but antisocial asshole' is not just a software thing.
Gordon Ramsay - "this food is fucking raw!" /throws food
We have sitcom dramas like House glorifying the same thing.
Notably, Ramsay is mostly doing that as an act, so it’s really just the same thing as House. If you watch his UK shows, or see some of the other stuff he’s put out, he doesn’t bother with that whole antisocial performance.
but real question, is that antisocial ? to me antisocial is much more toxic and unrelated to perfectionism
an antisocial ramsay would just throw your stuff no matter what even you did well, for the sake of messing with your head
You can be a perfectionist, and not throw a hissy fit when things aren't the way you want.
>an antisocial ramsay would just throw your stuff
A social Ramsy would refuse to eat your food, but not throw it at you or have a giant baby fit about it. Of course no one would watch him on TV if he was calm and collected.
American tv.
I think you're confusing antisocial personality disorder with antisocial behavior. I am not diagnosing Torvalds with anything, just describing his behavior.
hmm yeah I thought these were nearly the same, i'd describe linus as an edgy angry perfectionnist (i'm less angry but i understand the strict spirit)
I mean, he deserves to get upset if a professional preparing food serves raw chicken. I guess the programmer equivalent would be not sanitising input, or not even knowing what an injection attack is.
The Linus rants Ive seen are pretty much the equivalent of a chef undercooking chicken.
Notably, Linus rants at his sous chefs, not at the guy washing dishes. "You are expected to know better" is the theme.
"I want to trust your judgement, so I can delegate decision making to you" has always been his poorly-delivered message.
True, the times I see him go fully mental, it’s pretty justified. Stuff like out off date food, uncooked food, vermin in the kitchen, unclean, etc.
This is the kind of stuff that can make people seriously ill and kills multiple people every year. This isn’t even lack of skill, it’s pure laziness.
> "Linus Torvalds is an antisocial jerk, and he's a genius, therefore if I am an antisocial jerk I must be doing genius-level work."
There's way too much of this in general. People use a talented individual with problematic behaviors to justify their own problematic behaviors. So many talented ICs that are absolute dickheads to work with.
> The problem with strlcat and strlcpy is that they assume that it's okay to arbitrarily discard data for the sake of preventing a buffer overflow. The buffer overflow may be prevented, but because data may have been discarded, the program is still incorrect. This is roughly analogous to clamping floating point overflow to DBL_MAX and merrily continuing in the calculation.
He was not that wrong!
Just to be clear, someone else wrote that response. It's unclear if the maintainer had the same thought process. They probably did to be fair, but the fact that they decided to throw an incoherent tantrum instead is not very helpful.
I believe the responder is here on HN as kazinator. I remember him from back in the day.
Wow so “Linux didn’t get it for 25 years because the glibc maintainer is a jerk” is an oversimplification??? Shocking.
That argument sounds totally wrong because you can easily detect truncation:
if (strlcpy(dst, src, dst_len) >= dst_len) { // Truncation! }
The argument is also totally wrong because the whole point of strlcpy is to copy the string and, if it fails, calculate the amount of storage that was really required, without making two passes over the data that does fit. The fact that the too-small buffer is overwritten with a truncated copy of a string is just a side effect.
Don't let perfect be the enemy of good
Making changes to ultra-core stuff like glibc is not really a "move fast and break things" area.
Nor is it a "never change" area. At least it shouldn't be.
Isn't the point that it's harder to use those interfaces wrong then the null terminator stuff?
Eh, to be fair, if doubles are overflowing past DBL_MAX, things went off the rails in your code quite some time ago, and it doesn't much matter what the exact overflow behavior is.
A better example would be signed integer overflow, which a conspiracy of spec authors who don't work in the real world and compiler maintainers with a perverse sense of humor have decided means "Anything goes."
Well, sounds like no one else stepped up with a fork, the commitment to maintain something better, and the networking effort, so the community had to put up with whoever was doing the work. Like if you didn’t cook and just sat on the couch you can’t be picky about you’re served.
Actually I think this is exactly the point.
BSD got them in 1998, it took 17 years for it to go to posix and another 8 years before they made their way to glibc. 25 years to add a clear improvement
Guess not everybody though it was a clear improvement then? It's not like it made everyone adopt BSD instead of Linux. If it was easy to make all the right decisions someone would have made them and sold it as a product instead
Even if profit isn't involved this entire op argument seems really weird to me. It seems exceptionally entitled and also myopic? Somehow the author wants the good (??), popular (??) open source projects (made of thousands and thousands of opinionated decisions, many aesthetic and not "rational") to decide to cooperate and suddenly share opinions and aesthetic (while simultaneously maintaining the unique opinions and aesthetic that made the project popular in the first place?). The whole thing feels a lot like consumers demanding even more from open source maintainers and continuing to pay nothing.
exactly, you can't standardize on a solution before any good one exists in the first place
Tell that to the C++ Standard Committee. They have no problem standardizing things that don't even exist and may even be impossible to implement.
Most additions to the standard library have been existing implementations found in boost. But yes, they have a tendency to go a little too theoretical. C++ standard targets a virtual machine and all that. Modules in particular was a hot mess.