News for hackers. Stuff that matters.
Re:Blurring the Line Between User and Programmer by krapp on Friday October 25, 2019 @10:31AM (#21355306)
>Sometimes I wonder if the people of the 1960s (i.e the people who came up with lisp, multics, unix) had the right idea: to use a computer you should program it.There are many programs, each does a different thing, you program your final product by composing programs. Users of the final product are the programmers.

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.

Re:Blurring the Line Between User and Programmer by jonjacky on Friday October 25, 2019 @05:06PM (#21359256)
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

Re:Blurring the Line Between User and Programmer by krapp on Friday October 25, 2019 @06:01PM (#21359669)
Separating 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.