Subject: bug#13737: Add -h option to 'users'

From: anatoly techtonik <[email-masked]>
Date: Tue, 19 Feb 2013 00:44:56 +0300

On Mon, Feb 18, 2013 at 11:57 PM, Eric Blake <[email-masked]> wrote:

> On 02/18/2013 01:31 PM, anatoly techtonik wrote:
> >> We HAVE documented it.  We document that ALL long options can be
> >> represented by an unambiguous prefix, so --h is an unambiguous prefix of
> >> --help if there are no other long options beginning with h.
> >
> > Is it a part of POSIX, RedHat or just usual man page for 'users'? Can you
> > post a proof link here?
>
> Long options are not specified by POSIX.  But they are commonly
> implemented by getopt_long(), which documents the GNU-standard behavior
> of recognizing unambiguous prefix.  The glibc manual doesn't document
> prefix handling (arguably a bug in glibc documentation, but that is not
> a question for this list):
>
> https://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Options.html#Getopt-Long-Options
>
> but the Linux man pages DO document abbreviations:
> http://linux.die.net/man/3/getopt_long
> "Long option names may be abbreviated if the abbreviation is unique or
> is an exact match for some defined option."
>
> Coreutils also documents it here:
> https://www.gnu.org/software/coreutils/manual/coreutils.html#Common-options
>
> which is very near the beginning of 'info coreutils', our preferred
> documentation system.

It is documented that "most programs recognize unambiguous abbreviations"
of long options, but these are not POSIX standards, not a recommendation
either - just a feature of getopt parser. To me it looks like the usability
choice is affected by the internal implementation of option parsing
library, not really a choice if you ask me. Python option parsing went long
way getopt -> optparse -> argparse -> docopt since the time getopt was
invented, and the "-h" option is the current best practice.

And I really doubt that much users nowadays have a chance to run over this
chapter in coreutils manual. 95% of the target documentation audience reads
stackoverflow nowadays. Therefore, how many users are actually aware of
"--h" option and intuitively use it instead of "-h"? I can't answer this
question without the poll, but I can suspect that "--h" doesn't work in
majority of unix commands provided by scripts.

>
> > Do I understand it right that if OpenBSD implements "-h" - you'll copy?
>
> Yes, if there is existing practice of burning '-h' to mean help in some
> other implementation, then the option cannot be standardized by POSIX to
> mean anything else, so we might as well also make it mean help.  But we
> aren't going to lead the pack on burning a short option for something
> like help.

And if I say that the whole cross-platform Python stack burned "-h, --help"
as default options of providing help to console scripts? This goes way
beyond OpenBSD and even POSIX. Is that enough?

> > I don't get why GNU development and usability features should depend on
> > non-GNU implementation?
>
> GNU prefers long options.  We support short options insofar as standards
> documents and compatibility dictate, but don't let short options drive
> development.

That's a good policy. "-h" is already a well matured practice to be
implemented, and I doesn't see any dictatorship documents that directly
stand against it. =)