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:
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.
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).
> (...) 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.
> 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.
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.
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" ...
> 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?
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.
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.
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.
I think you're confusing antisocial personality disorder with antisocial behavior. I am not diagnosing Torvalds with anything, just describing his behavior.
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.
> "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.
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.
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.
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.
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.