On Fri, 4 May 2007, James Keenan via RT wrote:
> On Thu May 03 21:02:21 2007, allison <!-- x --> at perl.org wrote:
> > Andy Dougherty wrote:
> > > On Tue, 1 May 2007, James Keenan via RT wrote:
> > >
> > >> On Tue Apr 10 01:45:31 2007, jrisom <!-- x --> at gmail.com wrote:
> > >>> Configure should act as though writing --foo=no is false instead of
> > >>> true. Tonight I tried using --execcapable=no to get around a compile
> > >>> failure, but then realized that it would probably treat "no" as a true
> > >>> value.
> >
> > I'm okay with having a plain English representation for "false value",
> > as long as we have exactly one. Pick 'no', 'none', 'false', or whatever
> > but we won't try to support every possible value a user might type in to
> > mean false. Whatever we pick will mean false everywhere, on every
> > option. And we have to be careful to make sure it's not a value that
> > someone might want to use as a string value.
It may be sensible to distinguish boolean and string variables to avoid
that problem.
> The more you multiply variant ways of providing values to options,
> -- the more code you have to write,
> -- the more code someone has to maintain,
> -- the more tests someone has to write to verify the validity of the code and
> ensure high
> coverage by the tests, and
> -- the more documentation someone has to write to explain the code.
Yes. I think we're all on the same page here. There are currently
multiple ways to say "no":
> --nomanicheck
> --cgoto=0
> --without-gdbm
> --icu-config=none
>
> This means that for undocumented things, like -execcapable, the user has
> to guess.
I'm recommending replacing them with a single way to say "no". Whether
that single way is spelled -Ufoo, --unset-foo, --disable-foo, --no-foo,
or --foo=0 is a Configure human-interface design decision (and then an
implementation detail), but supporting a single way is less work in the
end than the current 4 ways.
> For at least the third of those tasks, that someone, currently, is me.
Believe me -- I am truly very sympathetic to that problem.
> I'm hoping to recruit additional people to help maintain Parrot's Perl 5
> configuration and
> build tools, and I made some progress in this regard at Hackathon Toronto.
> Still, almost all
> of Configure.pl's options are completely untouched by the test suite. Code
> coverage for the
> config/*/*.pm hierarchy is generally only around 25%. Why multiply features
> for which, if
> we're following best practices, we ought to write tests when we don't have
> the people to write
> those tests?
I'm advocating *reducing* the number of options -- replacing the
hand-maintained hodge-podge of current options by a more generic scheme.
Then, within that generic scheme, I expect it will likely be no big
deal to internally treat --set-foo="no" as equivalent to --set-foo=0 or
--unset-foo (at least for boolean variables).
In perl5's Configure, there are over a thousand variables that can
be set by command-line options. Presumably parrot will end up with a
similar number. Attempting to write tests for them all would be madness.
--
Andy Dougherty [EMAIL PROTECTED]