I'm going to modify that a bit to say it's mostly economics but also barrier to entry. Wirth's Oberon etc work was designed to be easy to understand from language to architecture to tools. Students with little experience regularly ported it, redid it, and so on. I've seen similar in FOSS projects well-designed for easy understanding. I think many of these popular projects were not designed that way to the point the real and incidental (i.e. implementation) complexity is to high for most to justify time in. I know it is for me for several, major projects.
So, we need to remember that. More FOSS being designed for contributors as much as users might increase number of contributions.
Usually you have to fight for the right to contribute back, which in big companies means lots of fun with upper management layers and legal department before you get the green light to do that little pull request.
So in my career I have seen lots of open source being used at Fortune 500, sometimes with internal forks of bug fixes and zero contributions being done back.
Yes it is.
But once you start making serious changes to the source-code, it's probably less painful than trying to deal with all the merge conflicts from your own fixes every time you upgrade to a new version. At some point it's just easier to push all of that stuff to the common version.
What matters are all those companies that no one heard of, or whose business has nothing to do with producing software.
We're not going to get there, either. The number of users with the time available to dig in any depth into an issue they find is always going to be dwarfed by the total number of users contributing issues. That number in turn is dwarfed by the number of users who don't even go that far, and just work around problems they find (probably by silently switching to an alternative product). This isn't a moral issue, it's simple economics.