The problem is mainly one of discoverability. The non-programmer in the examples says "simple" when they mean "discoverable". The programmer says "simple" when they mean "not much code complexity".

Of course you disagree.

All the examples - installing and using a package manager, running a command line program - are "simple" from a software point of view, but they're not at all "discoverable". To understand the steps you need to memorise a seemingly meaningless sequence of text.

Of course, the programmer has a very strong underlying model of all of this, and so these commands seem straightforward. But even for a programmer, this stuff isn't very discoverable. I'm frequently stumped by man pages, and end up having to hunt down an example of how to use a particular command line application on Stack Overflow. I've been using linux for decades and I still often can't find where an applications binaries or config live, and I still very often have to type some magic incantation I found on Stack Overflow into the command line, because my mental model of some subsystem of Ubuntu isn't complete enough to know it. None of these things are discoverable - I've got more patience than most in searching Google and Stack Overflow, but it's not exactly a desirable way of using a computer. I would prefer it if there was a nice button in the system settings that did what I wanted.

When things aren't discoverable, they become hard. And people don't generally like doing hard things. That's not exactly a revelation.

I wish CLIs had better discoverability. That's one of the first principles of UX.

There should be a library that makes it easy for developers to include a basic GUI with a CLI

> There should be a library that makes it easy for developers to include a basic GUI with a CLI

There are. For example, in Python, Gooey provides that. [0]

[0]: https://github.com/chriskiehl/Gooey