Getting people to use the terminal to do things instead of the bloatware produced by Google/Microsoft tools is almost impossible...

I live in the terminal, but most people in my company, including developers rather stay away from it

To state the obvious (sorry):

(1) Command lines lack the discoverability element of GUIs (and TUIs), where the available choices are typically laid out in front of you. Just look at the command "firm -c list contact" in the screenshot in the linked readme - no doubt it's sensible, but you wouldn't just type it in out of nowhere. You could argue that good docs fix this, but they'll never be a substitute. (Silly analogy: imagine if your toaster had buttons just labelled "1", "2", "3" and you had to refer to the manual for which meant toast, defrost, extra browning.)

(2) Command lines lack the visual persistence of the data you're operating on (like a list of files in a directory, or project/people data like in this program). If you rename a file and you then re-run ls and now everything appears in a slightly different place on the screen (because the previous listing had shifted up when you ran "mv") it's visually jarring in a way that just operating directly on the data isn't. Not-silly analogy: it's like how no-one today would dream of operating on a text file using a pure line editor like ed. (Even command-based editors like vim persist the file data in the main visual area.)

Command lines are much better than GUIs/TUIs for some applications, for example when called from a script, or where you might need to compose a complex command and then tweak and re-run it (in fairness, that might apply to OP's project). But I think techies sometimes get a bit carried away. GUIs are sometimes a legitimately better choice.

The approach I like the most is to first design a CLI that has the functionality you need. Then move that functionality to a lib and have the CLI now be a frontend for the lib. Then make a GUI frontend too.

Allows for a GUI for tasks that need that better context or hand holding. But then the CLI is there when there is a workflow the GUI doesn't support comes up. Bonus of scripting being possible with the CLI too.

Challenges this approach has is that you have to have a test suite that exercises both workflows or due diligence to make sure they both work as development continues.

Also not all programs can be done acceptably with a CLI. Real time 3d games are an easy example of a GUI only task.

I don't disagree with you at all, but my biggest hangup with GUI-based software is twofold:

1. It tends to be bloated, with developers slapping framework upon framework, creating a mess of background wiring that is prone to a dictionary's worth of issues that will either frustrate the user or confound the person maintaining it.

2. UX Designers approach their jobs incorrectly; they assume they are smarter than the user. Interestingly, this might actually be true on paper in most cases, but the practical reality is that the user needs to do things the user's way, not the way the the developer wants them to.

If we could find ways to smooth those two glaring issues, I posit that we'd see a lot of problems with productivity and workflow melt away. Caveat; I'm not a software developer, so I'm sure anyone who is thinks I'm speaking out of school right now. Fact is, I've worked in a few different industries over 40 years, and one of the biggest thorns always seems to boil down to the software not being quite right for the team/application, so workarounds have to be invented, adding layers of complexity on what is already a decidedly fragile system.

> UX Designers approach their jobs incorrectly; they assume they are smarter than the user. Interestingly, this might actually be true on paper in most cases, but the practical reality is that the user needs to do things the user's way, not the way the the developer wants them to.

This is just as true for CLIs.

I think this blunkiness is in part because these things are often created and designed exclusively by frontend and full stack developers. IMO systems like these need strong backend developer influence, with highly scalable data models and and as much work as possible pushed server-side.

In short, the system should be designed by people that despise the general state frontend development. It should still look good, I love a modern clean frontend (like Docmost for example), but not at the expense of snappiness and scalability.

I think the willingness to use CLIs often goes hand in hand with having a bit of a hacker mentality.

To me, it’s obvious that if a certain command feels cumbersome (e.g., (1)), you can just create an alias, script, or panel to make it behave exactly how you want. In contrast, a GUI usually forces you to use the functionality as it was envisioned by the product team that designed it.

Ultimately, GUIs target the average user, providing a good experience on average across all users.

With terminal apps, if you are patient and willing to learn how to customize your shell, you can make an excellent environment which would offer a huge boost of productivity

Reading all these opinionated comments about CLI vs GUI, I feel out of place as just a humble TUI fan.

- CLIs are powerful but hard, basically an exercise in mnemonics.

- GUIs are much friendlier, and can be faster than CLIs for certain use cases. While complex and bloated, they have their use cases to shine.

- TUIs are basically less expressive GUIs, since they're limited to text, but you must go out of your way to make them bloated and slow; they usually are very snappy.

All have their best and worst scenarios, no need to argue which is better. Use what fits best with your workflow, no size fits all.

The main reason might be that terminals are ugly and messy, you can't find shit, everything melts together. Might be nice for power users, but those aren't so many I would guess.

I live in the terminal. I've been using the terminal since before guis were an appreciable option.

People who lionize the terminal are silly, it's objectively bad and the fact we use it at all is just the inertia of TTY.

Trying to put GUIs in terminal, all this stuff, it's a hack, a sign of failure to make progress.

In an alternate universe Emacs wouldn't be culturally anti-human and we'd have a data first gui instead of app siloing. Some Emacs custom setups are the fucking future, context switching, everything is so perfect, but because the interop is so bad you can't use it in your day job.

But most OSS OS devs have spent all their time focused on the system part and not the operating part.

Human factors and human interfaces are still mostly ignored, and that's just from a sole user perspective, most developers of UI don't treat the networked/relational aspect as a first class UX issue for an OS.

And that's partly a failure of imagination, a failure of loving people as much as tech and also because distributed collaboration is fucking hard and most people just rewalk existing paths.

Maybe LORO is the only truly interesting open source project right now, but Ai can't write those algorithms so even their implementation is under explored.

Yes I agree.

My guess is that the console is a much better and natural UI because it goes in one direction and is less confusing and productive for humans.

In the end we seems to move back to it through the chatbot paradigm, because it is in the end a console...

It's an interesting trend. With the push for chatbot-based interactions, CLIs and plain text representations are making a bit of a comeback, since LLMs interface with those more easily than UIs.

We saw this in the early days of chat tools like Slack, too. /remind anybody? Today you, at least, get a floating help text if not a mini-GUI within the channel once you begin to invoke.

So I'd wager we will see the same with chatbot interfaces. I furthermore predict that we will get taylor-made AI applications with a GUI that triggers specific "prompts" on unspecified datasets. "Prompt engineering" will become just another skill of professionals that have to use general purpose tools to built specific purpose tools... again.

Many people forget the main reason why Windows, Mobile, Webapps succeeded is because of convenience. The more easy to use the more better. Convenience is also the reason why Meta Glasses will be successful.