Although, come to think of it, tex and its relatives (pdflatex, etc) have really quite terrible command line interfaces.
It's just for most people, they're not used to working with a tool that merges communication and text processing with a CLI interface.
ffmpeg -i input.file output.file
Now, usually I want to do something more complicated, so I end up having to look it up, but it's hardly the ffmpeg folks' fault that audio and video encoding is such an ungodly mess of different containers and encodings; while it could be better, I think most of its complexity is inherent to the problems it's trying to solve. I do think there's an argument that it tries to do too much, and the complexity could be mitigated if it were split into several smaller tools and a wrapper for the most common commands, like apt.Those are pretty complex tools that can do many things, so they cannot be expected to be used without learning to use them or reading the manual.
Now, if you're writing a low-level tool (in git's terminology, plumbing), that doesn't matter as much, because it's designed to be wrapped; maintainability and (interface) stability probably take priority over being maximally intuitive. But if you're writing a tool for end users (including developers), some focus on UX is warranted.
(How much each of these tools are intended for end users, can be argued separately, not by me)
Want to verify a signed file against a key that’s in another file? Nope, not supported.
Want to load a private key into a smart card without wiping the key from your keyring? Not supported.
In general, gpg has a very strong idea of how you’re supposed to use it, and it makes it very hard to do anything differently.
Thought the article says they're not planning to release this with v1.0
https://www.gnupg.org/related_software/gpgme/
It would probably make sense to implement and expose that?
Ed: see also https://wiki.gnupg.org/APIs
This makes the library really painful to use in multithreaded contexts, or when you need to have a controlled env. (like unit tests).
I use gpg-me in one of my projects, and it's very far from pleasant to use.
https://datatracker.ietf.org/doc/html/draft-dkg-openpgp-stat...
gpg --help
Or, man gpg