lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: lilypond too noisy on the cmd line


From: Mark Veltzer
Subject: Re: lilypond too noisy on the cmd line
Date: Sat, 1 Jan 2011 12:15:09 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Hello all,

This is in response to David Kastrup.

- startup and shutdown messages. These are not usually omitted to stderr, or at
least 99.99% of the tools out there do not do it. Most tools actually *have no*
startup and shutdown messages. If you have other info then I'd appreciate a list
of famous tools which emit startup and shutdown messages to stderr (and I'm not
talking about daemons but regular command line tools). I doubt that you will
find any and most of the ones which you will find will have bug reports filed
against that behavior.

To prove my point here is gcc:
address@hidden:~$ gcc -o test.o test.c
address@hidden:~$

No startup/shutdown messages. No version. No progress. Quiet and nice. This is
the default behavior as no --quiet flag was required to enforce it.
Compare this to the lilypond behavior:

address@hidden:~/links/lilypond$ lilypond test.ly > out
GNU LilyPond 2.12.3
Processing `test.ly'
Parsing...
Interpreting music... [8][16][24]
Preprocessing graphical objects...
Interpreting music... 
MIDI output to `test.midi'...
Finding the ideal number of pages...
Fitting music on 1 page...
Drawing systems...
Layout output to `test.ps'...
Converting to `./test.pdf'...
address@hidden:~/links/lilypond$

Wow! This is all standard error messages (as the redirection above proves) and
none of these are errors.

- stderr is called stderr and not stddiag since it is intended for errors. I
agree that stdout is intended for further processing but lilypond *does not*
create any further data for further processing so stdout could be used for
version and other stuff much like other tools. To prove my point here are a
bunch of tools:
address@hidden:~$ ls --version > out
address@hidden:~$ grep --version > out
address@hidden:~$ nm --version > out
address@hidden:~$ gcc --version > out
address@hidden:~$ as --version > out
address@hidden:~$ make --version > out
address@hidden:~$ ld --version > out
address@hidden:~$
The list could go on and on. This output proves that version info goes to stdout
and not stderr and that stderr is quiet *all the time* unless errors occur. No
startup message. No shutdown message. No progress reports. No "mighty gcc
version 4.5 was here" messages.

In summary:
stderr is for *errors* and not *diagnostics*. Seeing two pages of data in stderr
(which is the current situation by the way) is absolutely counter productive. It
may be cool for developers who want to understand where a problem occurs but it
is useless to users. If someone has to suffer from supplying an extra flag it
should be the developers and not the users (as a general rule). This is actually
what forces every big project that I saw to wrap the lilypond executable with a
script (which is really bad!).

All that being said I don't really care about version info, startup and shutdown
messages and the rest at all - You can keep directing them to stderr if you feel
like it  - *just as long as they stay out of my way* - meaning that I have an
easy to use option to disable them. The current implementation has no option to
keep them out of my way and this option should actually be the default (as
demonstrated for all the standard tools above). And again, there is also
progress data there so what is the end result? When compiling 20 big lily files
which are perfectly fine I'm getting 10 pages of output which is useless to me
since I have no mental wish to process it instead of 20 lines of compilation.
I'm solving this with a wrapper that hides this useless output from me but I
expect every serious lilypond user has written a wrapper for him/her self.

Cheers,
     Mark




reply via email to

[Prev in Thread] Current Thread [Next in Thread]