Flag Systems

i am very interested in how command line applications present themselves. in particular, how discoverable flags are, and the natural process of a user exploring an application through the use of flags and the help system.

the help system itself is very interesting to me as well. i like to see what types of "help the user" strategies a particular application employs. to me, the ease with which a given application is discoverable on the command line represents the overall quality of the project.

if a program has a good command-line experience and help system, i generally hold it in high regard. to me, it is a good indicator of the health of the project as a whole. it is an especially good indicator of the types of people/companies that care about the command-line experience.

for example, here is curl:

the initial curl interaction feels pretty good. it doesn't overwhelm you, it gives you one simple step to help you understand what to do next.

typing curl --help is not overwhelming, curl reveals a few common options (which account for most use-cases) and hide the recent behind a more sophisticated help system. this is a very good start.

let's interrogate it a little further:

honestly, this is pretty sick and i wish more programs busted their help flags up like this. compare this to something like ls's help system.

don't worry that you can't read it the text. i just had to shrink my terminal's font to capture the immensity of the help system. i also had to take 2 screenshots because it didn't fit on one page.

this is the output of ls --help:

one of my golden rules for this sort of thing is if i have to scroll or resize my terminal's font in order to navigate your program, your program has fucked up its user experience

"help" does not mean "show me the manual so that i can understand the problem from first principles" - it means "help me figure my thing out quickly so that i can move on with my life. thank you."