Best practices for designing a terminal logging experience
The first 4 pictures below (#2 is also animated on the link) are examples of CLIs. The 5th picture is an image of the Heroku logs. The last picture is what you normally used to see in programs you install from the command line. Basically a bunch of logging output without much UX.
I am wondering what is the ideal User Experience for a CLI, specifically when it is performing an action invoked by the user. For example, brew install x
will install something with homebrew (first image), and give you brief status updates and progress bars along the way. Then node example.js
in the second image will iterate through a few operations while staying on one line (whereas homebrew goes over many lines). The other ones have less structure, displaying log output in a stream pretty much, nicely formatting it where possible.
The question is though, what the ideal user experience is. Taking into account the following. If it should show timestamps of the actions that occurred (as Heroku logs do, but maybe that kind of logging is a different thing than the intro CLI tool experience). If it should print out verbose output somewhere (such as in a separate file, or on screen somehow), basically all the debugging details. Or if it should hide pretty much everything (#2) and just give you titles of the current status, such as "Loading x". Or a middle ground like (#1) with status updates that also log to the stream. Not quite sure how to think about this.