"... (browsers) are multiple different kinds of programs, welded together for no sensible reason: an http fetching daemon, a "runner" to open URLs, several document viewers, a virtual machine, an OS with an API, extensive libraries for everything that the OS below the OS already offered, one or several programming language JIT compiler(s) and runtime(s), and some bits and pieces. In a healthy environment, there would not be a second OS on top of the normal one. And all those parts would be separate software, with standardized interfaces. ..."
It also potentially creates a similar problem to DLL hell in Windows, where updating or changing a component potentially breaks dependent software, or multiple versions of the same component need to be kept around. And then there's the "n+1 standard" problem, where everyone doesn't actually agree on what the "standardized" interfaces should be.
The real problem, to me, is that the FOSS model of every user being a programmer fundamentally breaks down when software reaches nontrivial complexity (wherever you choose to set that bar.) You could substitute the browser as the subject of your first sentence with just about any software people use - most of it is too complex for the average person to fully reason about, much less the average programmer.
I don't know how to solve that, other than require all software to be simple enough to fit in a single file and run in a REPL but that's obviously not feasible.
So if I have a computer and I want to access the internet, I should have to write my own browser first?
No... "to use a computer you should program it" isn't a philosophy, it's a technical limitation from when "programs" were simple and everything ran in a terminal, and no one but engineers and students would ever be expected to touch a computer in the first place, and it doesn't scale.
Should people be able to write software for their own computers? Yes.
Should programming be considered a normal part of computer use, and be far more common than it is, with systems and software being more open than they are? Yes.
Should people need to write their own software? NO.
>I think we as an industry made a wrong decision turning programs into products. We should have kept programs as programs - make them super composable, and then let the end user design their own products that fit them best.
It wasn't entirely wrong. End users don't want to write software, they want to use their computers do to things - and most of those things now require multiple thousands or millions of lines of code written by engineers with domain specific knowledge. Turning programs into products is a way of managing the complexity necessary for software that's useful to people in modern society.