4 ms·
Regarding browsers, a reasonable complaint is that even if you want to, and have the skills it is far too difficult to modify a browser or use its parts to buil
by jonjacky 7y ago
Regarding browsers, a reasonable complaint is that even if you want to, and have the skills it is far too difficult to modify a browser or use its parts to build something else. This might be fixed by better design, as somebody noted in this recent HN comment [1]:
"... (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. ..."
[1] https://news.ycombinator.com/item?id=21061067 https://news.ycombinator.com/item?id=21061067
- krapp 7y agoSeparating all of that into components, each with its own interface, would be more elegant... but I don't think it would solve the complexity problem so much as decentralize and standardize it. A modern browser still needs all of that functionality, regardless of where it comes from, at least for most users. 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.