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]

Reply via email to