LOL I stepped away from Mastodon for a couple hours and everybody is VERY MAD that I made jokes about CLIs. I use them every day, guys, it's gonna be okay. I promise I did not hurt Zork's feelings. It is, however, a factual statement that CLIs are not discoverable user interfaces and they are a poor choice for mainstream audiences; this debate was settled long ago.
@anildash We *used* to have *documentation* and things didn't have to be "discoverable".

@stevenaleach @anildash I was there and I disagree. Otherwise, why did the acronym RTFM need to exist?

(Then again, today I am writing a CLI/possibly eventually TUI tool. Yes, in 2025.)

@kboyd @anildash Ah, but these days there usually is no FM to read. And if there is no FM, then you need to fall back on being intuitive, obvious,, and "discoverable".

But of course folks used to CLI will read --help and pick up on how to use a tool quickly. But someone has to actually *be* a CLI user first and their computer didn't ship with a manual explaining how to use the CLI. It just shipped with a desktop they can click around on and figure out how to use.

@kboyd @anildash But yea, I do pretty much everything from the CLI and basically don't know what GUI tools exist to do anything. I've just never learned how to "discover" how to use most GUI tools or that they exist to begin with ;-).
@stevenaleach @anildash Yeah, lots of people probably haven't heard of "jq" or "htop" or imagemagick. All of which are very useful.
@stevenaleach @anildash Documentation that was rapidly outdated and incomplete. And rarely translated widely. However again, people should not have to read a book to operate a computer. Discoverability is important.

@reflex @stevenaleach @anildash We still have documentation and it is A Pain In The Arse.

CLIs have their place. However I am currently fiddling around with sorting a Unix PPP dialin for 'fun'.

On Windows this is a solved problem, you click a few boxes and it works. On Unix the documentation is in four different man pages, and requires tangential knowledge from at least another two.

Some modern cli and text file oriented software such as Kea and nsd/unbound are reasonably straightforward though, and largely don't make you lose the will to live.

@syllopsium @stevenaleach @anildash Literally this. Plus, again, discoverability! Unix apps are terribly named, nothing makes sense without years worth of memorization to anyone who hasn't been immersed in *nix for a very long time.

@stevenaleach @anildash
I use CLIs every day and have been for 40+ years. I also teach how to use the CLI and I support beginners and advanced users alike.

And while it is powerful - and, arguably, necessary in my field - the CLI also sucks.

There's no discoverability. Users live in constant fear they will break something and never even notice.

The CLI is fine *as a complement* to a GUI. Lean into its strengths. But it was never a viable interface for computing in general.

@jannem @stevenaleach I think that’s exactly it
@anildash for decades I've been using CLI tools which are highly discoverable, far more than typical GUI apps
@synlogic4242 @anildash If I put a regular person in front of a CLI for a system they have never used before, they will be utterly lost. I'm glad you can magically know about grep and all, but most people wouldn't know where to begin.
@reflex @anildash --help. easy to learn. unlocks a lot. or "man foo"

@synlogic4242 @anildash Um, so that helps me find the damn command how exactly?

A system that requires people to memorize large numbers of commands and consult often out of date or untranslated help files (which themselves tend to be written assuming the user is experienced) are the opposite of discoverable.

@reflex @synlogic4242 yeah, -- help after … what, exactly? A random group of characters?

@anildash @synlogic4242 The fact that grep is a thing after all this time, and the fact that I still struggle with practically using it despite using Linux off and on since Slackware in 1995 really says it all. Like congrats to those who have pulled it all off but nobody should have to do this just to use their damn computer effectively.

I think many in the space view the mastering of such unnecessary complexity as a badge of honor and a way to keep others out of their clubhouse.

@reflex @anildash I hear you!

but I find CLI tools the ideal way to work fast, efficiently, productively, with high composeability and reuse. massive bang for the buck. whereas with a GUI its like starting with training wheels attached, and lead ballast weights, then... *never* being allowed to remove them or grow out of them. I can (and have) written entire books in vi/vim. the number of times I see youngsters reinventing the wheel with yet another GUI or web/cloud/mobile thing is breathtaking when not sad and hilarious. "Guys, I just made a way to write code in a browser, OMG guys, and its super discoverable and AI-infused guys!"

*meh* ;-)

@synlogic4242 @anildash That's very cool for you. I also enjoy the cli for a lot of things.But it does not change the fact that the way it's designed at all levels it's inaccessible to the vast majority. That could change if those in this space chose to change it. VMS showed intuitive clis were possible. But there is no will to do so.

It is true that the CLI is very powerful and useful, it's too bad that the community does not wish to make it accessible to all.

@reflex @anildash we agree there are dials to be turned which can make it easier or harder. for CLIs and GUIs. heck I'm a believer every GUI app should ship with its own integrated docs, search tutorials etc. Its fairly cheap on the margins to add it to the feature set. Just as I think every CLI should have something like --help and man pages. Heck a good pattern for a CLI is, in the absence of any args it should print at least a minimal --help. I'm building a new server in recent months and even as a network server -- super geeky -- I ensure its CLI makes an effort to help teach/remind users how to use it and get bootstrapped. I try to do right by "my future self" and assume I'll revisit it in 5 years say and forgotten how to use it. A time capsule message to myself. This in turn helps others (not me) get bootstrapped. The problem is this tactic can exist in GUIs too but... their users will still always be handicapped. Until and unless they make the jump to CLIs, APIs, REPLs or other TUIs.

@synlogic4242 @anildash IMO a CLI should have discoverable and obvious commands to do all significant functions that one would need a CLI for. Help should be standardized and multilingual in the top 100 or so languages, and the commands themselves should be multilingual, copy in english makes no sense to someone who speaks Thai as their primary language, the commands should be localized as well as the help files.

All should be built to work with accessibility tools as well, as should output.

@synlogic4242 @anildash Nobody here is hating on CLI's, they are saying that graphical UI's should always be a first class option due to the lower barrier to entry, and that the CLI itself should be fully intuitive and accessible regardless of someone's background, primary language, or special need. The latter are solved problems in the GUI space but little effort has gone into solving them for the CLI.
@reflex @anildash I hear you. I concluded years ago that CLIs/APIs/REPLs/TUIs should be the 1st class tier options, and de facto were already. With GUIs at best built on top of them, with them, or to serve special cases or niches. Its a good synergy. But with a CLI users get a much higher ceiling and productivity. Like healthy food from grocery store rather than a marked-up candy bar from gas station. Latter might be helpful in niche cases but not wise in long run.

@synlogic4242 @anildash The barrier to entry is very high, and higher still if you are not native english speaking. Tech as it stands is a form of colonialism, forcing non-natives into both terms and structure that are even less intuitive to them than they are to native english speakers.

Again, treat everyone as a first class user, build accessibility in as a primary component and you will have a strong case. Right now it inhibits most.

@reflex hey I like fact you are passionate about this topic. I am too. Sounds like we agree on some but not all. :-)

btw I have a longer form piece I've been writing, over years, a WIP, titled "GUI Anti-Patterns / GUIs Are Anti-Patterns", maybe I could CC you on it when I have full draft for folks to read? I like steelmanning my points/reasoning

@reflex @anildash Thai folks are free today to write their own software tools to copy files, and release it under a Thai-appropriate name. (Thai etc?) Go for it.
@synlogic4242 @anildash Why is that more reasonable than to just, you know, localize commands?
@anildash @reflex if someone can remember what a small arbitrary bitmap icon "means" but not say a 2-5 character word, I dont know what to say about their cognitive skills or ability to function in civ. language (English or Spanish or whatever) is a bedrock skill we all must have, else not sure how an adult can survive. kids & babies, sure

@synlogic4242 @anildash Wow, because a file icon, a save icon, an open icon, etc are totally as incomprehensible as CLI commands.

Insulting the users says more about you than it does about them. Iconography is inherently discoverable, random commands with crazy ass names are not. Iconography literally goes back to the beginnings of human communication.

@reflex @anildash a "floppy disk" icon means nothing unless user has prior knowledge of that as a real world item, and even that generation is dying out. kids wont know, inherently, on day one. just as they dont know what A is, or "apple" is. All of it is icons. Icons all the way down. On that we agree.
@synlogic4242 @anildash Sure, iconography has to be updated and in many cases *is* being updated (Apple has done a lot to make that happen), but it does not change the fact that it's still far more discoverable. Furthermore in Windows there is virtually always a pulldown menu, fully localized, that grants access to the functions by name.

@reflex @anildash let us assume one is a child. how does one learn the English word for <apple>?

Someone tells you. They show you. Now you know its apple.

Now that you know apple, does that empower you to learn the English word for <saxophone>? For free? Automatically? No, it does not. Instead you have to climb the same hill: someone must tell you, or show you, until it sticks and you memorize it. Neither apple or saxophone were discoverable in an ether, in an absence of all other context or humans trying to teach you.

Same "flaw" exists with ls, ps, grep, git, etc. Except that when we teach folks about their existence and use we take advantage of fact the student already know hundreds/thousands of other, foundational words. That empowers them to self-learn by reading books, docs, cheatsheets, screenshots & videos. The same as with GUI apps. You must understand some foundational human lang (English, eg.) or iconography (a stoplight, a floppy disk, a "back arrow" etc) in order for the GUIs use to be "discoverable" by you. And you have to be willing and able to experiment hands-on, trial and error, to polish your grasp. Same with CLIs and GUIs.

@synlogic4242 @anildash You know what's really awesome? User interfaces that do not require you to be handheld to learn them! In fact we've been using such interfaces since the late 80's successfully and now they are the dominant method because, well, they work and are far less time and effort intensive.

Elitists of course whine about it because they want a high barrier to entry to protect their sense of being special.

Plus, of course, the english-centric nature of the CLI...

@reflex @anildash English-centric... nothing is stopping folks who are French-native, Spanish-native, etc from making their own software, releasing to public, under whatever tool names they wish, including names in French, Spanish etc. Leverage Unicode. English-native folks happen to have played key roles in the majority of the world's software ecosystems. It is what it is.

@synlogic4242 @anildash Or, and hear me out here, app developers should actually write their apps in ways that make them multi-lingual by default rather than just being techno-colonial bros who expect others to learn their language.

Again, this is gatekeeping. It's not realistic to expect every group to write their own operating systems from scratch, and it wouldn't build a world you envision since basically you'd have hundreds of competing standards.

@reflex (dropping Anil so not spamming him)

we might disagree on one point. I dont think everyone is entitled to get the fruits of everyone else's labors. And I think we all are empowered to spend time as we wish. I am not entitled to be able to buy and stream view a film about two nerds playing Pac-Man -- someone out there would have to make it, as they wish, and decide whether and how to share it. Including in what lang translations etc. Up to them not me. As with our relationship to software, both GUIs and CLIs.

@synlogic4242 Nobody is telling you how to spend your time. But complaining that people are dissing on the CLI without being willing to help make it accessible to everyone is a contradiction.

The solution to making the CLI a powerful tool for everyone is to make it accessible to everyone. Until then it will always be a lesser interface for the vast majority.

@anildash Good thing you didn't express an opinion on tabs versus spaces in the process. Or how EMACS stands for "Eight Megabytes And Constantly Swapping". (Not eighty, you kids, eight - that was a huge amount of RAM once.)
@anildash cannot believe I missed all that discourse because my command-line mastodon client’s arguments changed and I’ve been reading the man pages for a couple of hours
@anildash The worst thing about CLIs is that they can't take a joke!
@odoruhako @anildash Not until you’ve installed the `joke` utility and resolved all the dependency errors, anyway.
@anildash This and your original essay are both related to the observation (not mine) that using prompt-based AI tools feels a lot more like being a wizard or a sorcerer than it feels like being a technologist. It needs a lot of arcane knowledge and skill but it IS arcane and most of what happens won't ever go in a "For Dummies" book. And the work process often isn't *reproducible*, either. A good demon-wrangler can do amazing stuff but we're still really struggling with demons as a service.

@anildash You are standing in an open field west of a white house, with a boarded front door.
There is a small mailbox here.

> Open mailbox

Opening the mailbox reveals: A leaflet.

> Take leaflet

WELCOME TO MASTODN!

MASTODON is a social network of nerds, furries, and very old nerds. In it you will explore some of the dumbest replies ever seen by mortals. No computer should be without one!

@anildash
Programmers wondering why avarge folks aren't comfortable with CLIs:
@Klein @anildash It's truly too much to expect people to be able to read four to six words on a screen at a time. Perhaps the words should dance a bit, that might make it a little more accessible to the general public.
@anildash it’s not a binary choice. If it was, you use BRUN instead of RUN.
@anildash
I made a discoverable CLI 30+ years ago (and verified that it worked in the field), based on a design that goes back to VMS and I think RSTS. It's not difficult - or maybe I'm being too modest?
@PeterLudemann @anildash Dave Cutler's VMS was way ahead of it's time with it's CLI. It makes me sad that we are still using 50 year old commands on Linux.
@anildash Zork is being very stoic about the whole thing.
@anildash arcane, hard-won incantations >>>> basic humans trying to do a thing with minimal investment

@anildash This may get me in trouble with the Linux nerds, but Powershell is a fucking fantastic CLI in terms of readability and discoverability. Every command is in Verb-Noun format so even if you don't know the name of the command you're looking for it's pretty easy to narrow down just by looking. The help/manual system is incredibly useful as well, if your search terms don't come up with a specific command name the system will search for that term in the very detailed descriptions every installed command, so again, you're pretty likely to find the function you're looking for. Also, in that documentation most commands come with detailed examples showing you exactly how its syntax works in most situations.

Point taken, it is not the kind of UI I would expect general users to be adopting. But it's one that was intentionally designed with its specific audience in mind. That is to say, system admins, who usually have little time to spare between putting out active fires and need to be able to find solutions quickly without pouring over esoteric command names and cryptic manual pages.

@anildash

I think that GUI, TUI or otherwise CLI ... Whatever tool fits best for your stile, skill and goal - go for it.

If you feel to - you can drive a nail into the wall with pliers ... Unless you are Chuck Norris avoid bare hand πŸ˜‰

@anildash Your sword is glowing with a faint blue glow. Your sword has begun to glow very brightly.

@anildash the CLI is good for people who actually know what a computer is, can read manpages, and write scripts to automate tasks.

Not everyone is willing to learn computer science and the Unix operating environment just to edit their documents and look at cat pictures. This is ok, just as long as everyone is given the autonomy needed to manage their own machine how they want to, and learn how to do things more deeply if their life permits.

@burnoutqueen

"In 2022 Dash and McCoy won the Webby lifetime achievement award for the development of NFTs"

Anil Dash is a troll farm in an allegedly human body.

@burnoutqueen

Also, the replies he's getting to this "LOL NERDS" post are really horrible.

Horrible in that there are so many supportive comments about how the command line needs to be discoverable or something.

Like they're confusing "user friendly" (which command lines can be) with "learner friendly" (which command lines rarely are)

The whole reason Win11 sucks so much is that they want learner friendly and not user friendly.

@anildash
"Abandoned the command line 40 years ago"

Maybe you hallucinated that?

@anildash that is *not* a fact, btw. CLIs are no less discoverable than GUIs. both CLIs and GUIs can be designed with newb-friendly and newb-unfriendly features. I've personally designed, built, shipped many of both kinds for 40 years.

I'll shutup on this point, now. but I saw "someone wrong on the Internet" and had to chime in, per XKCD. :-)