On Thursday 04 September 2008 10:50:37 David Cantrell wrote:

> Maybe I should start being equally loud and obnoxious about obviously
> stupid and broken things like the existence of UNIVERSAL-isa.  It might
> give you some appreciation for how you're coming across here.

UNIVERSAL::isa and UNIVERSAL::can are examples of applying the design 
principle of Report Bugs Where They Are, Not Where They Appear.

(Anyone who's debugged memory corruption problems in C or C++ should recognize 
this principle.)

I've received far too many bug report for Test::MockObject where other code 
elsewhere used methods as functions to perform type checking.  I don't have 
the time, nor power, nor inclination to file the appropriate bugs for all of 
the CPAN, much less the DarkPAN, nor wait for fixes to all of those bugs and 
upgrades to all of the appropriate distributions.

Thus, U::i and U::c work around the problem by detecting the failure 
condition, revising it to work correctly, and reporting the bug at its point 
of origin.  (Earlier versions had one tremendous flaw in that they reported 
all *potential* failures, rather than actual actionable failures explicitly 
worked around.  This was a huge mistake to which I clung to stubbornly for 
far too long, and I've corrected it in recent versions.  However good my 
intentions in maintaining that feature, the effects worked against my goals.)

Hiding bugs doesn't get bugs fixed.  It only multiplies hacky workarounds.  
(Yes, U::i and U::c are hacky workarounds I'd love never to have to use.)  
Adding an extra step to the bug triaging and reporting process doesn't get 
bugs fixed either.

*That* is why I consider this philosophy important.  It's a question of 
spending limited time and resources where they're most effective.

As an aside, I'm open to the idea of loading U::i and U::c from T::MO only 
when people request a debugging mode, such as:

        use Test::MockObject ':debug';

... but my concern is that no matter how well I document the idea that if 
T::MO and T::MO::E appear not to work correctly and that there may be 
method-as-function bugs causing the problem, I'll again get a flurry of bug 
reports that I'll have to shunt to other distributions.  More likely, they'll 
linger in a mail folder for a while and I'll delete them, months later.  I am 
*not* the person you want reporting bugs that don't affect me.  Attempts to 
make them affect me do not work.  That's just how my brain works.

-- c

Reply via email to