Keeping this all in perspective, TB2::Mouse is one 110K file (compressed down
to 25K) with no POD.  It's part of the Test-Simple distribution.  p5p has to
do NO EXTRA WORK AT ALL to include or maintain it.  It just comes with
Test-Simple like any other .pm file in Test-Simple.

If I didn't bring it up, nobody would know it was there.  Think about that.

This discussion is EXACTLY THE SAME if TB2 were using Role::Tiny or
Role::Basic or any other CPAN module which is not currently core.


On 2011.11.25 3:53 AM, David Golden wrote:
> To be clear -- I'm not (yet) saying that TB2 should absolutely roll
> it's own OO, but I am concerned about hiding yet another copy of a
> perfectly decent CPAN module so that we can avoid saying that we're
> including another CPAN module in core.  It's seductively easy to get
> the benefits *now* during the development of TB2, but there are
> downstream maintenance costs that we shouldn't discount lightly.

That is only a tangential problem.

The real problem is how does Test::More depend on a non-core CPAN module
without having a dependency on a non-core CPAN module?  One which uses
Test::More.  That problem always remains.  Test::More has it.  MakeMaker has
it.  And the simple answer is bundling.

BTW  What are those downstream maintenance costs?


>> Also one of the side benefits of shipping TB2::Mouse is now other Test 
>> modules
>> can rely on it getting the benefit of a fully operational OO system without
>> adding further dependencies.
> 
> And potentially *other*, non-test modules could start doing so too.

Disallowing non-Test modules is not strictly necessary, it's just something I
have in my head to rein this in a bit.  I don't think it changes anything.

Anyhow, they would be in violation of the documentation (which would be
written in bold neon on the first page) and not supported.

p5p doesn't always toe that line, but that's their problem.


> Is there a guarantee that TB2::Mouse will always be in core (short of
> a deprecation cycle)?  Would it have to be available "forever" under
> "use v5.18"?  I'm very leery of adding more core modules when the core
> policy around deprecation or lack thereof is in flux.

If it's documented, then yes.  See above about it being a single file with no
extra support costs for p5p.

I do see a work around.  Document that TB2::Mouse can be used, but you MUST
add it as a dependency anyway.  That way when we do remove it from the core
(and I do agree, it would be nice if we could) then it can be put on CPAN and
slurped in like anything else.

We did it once with Test::Harness::Straps, though not nearly that well thought
out, and it worked.


> [ Social hack: include TB2::Mouse but mark it "deprecated" from the
> start.  :-) ]

That would be "for internal use only" and lacking documentation like all the
other "for internal use only" .pm files already in core and other CPAN modules.

The "everyone else gets an OO framework" part of this plan is just gravy.
Right now it's not documented at all, so anyone using it has violated
encapsulation and gets no support.


> If I had my druthers, I'd like to see Stevan's core MOP work finished,
> then I'd like to see a powerful, minimalist object system on top of
> *that* built for inclusion in core, then I'd like to see core modules
> gradually migrating to that.  And I'd like a pony, too.

Throw in a time machine so we can all fast forward three years to that version
of the future.  Wait... eleven years!  Gotta wait for all those versions of
Perl that don't have a MOP to end-of-life!  :-/


> Maybe the related, fundamental question is whether TB2 itself needs to
> be in core -- or, if so, *when* it needs to be in core.  Maybe core is
> just fine with Test::More as is and anyone needing more powerful
> testing frameworks can install TB2 from CPAN.  (Ditto for any new test
> modules that are written that rely on TB2.)  Eventually, when TB2 is
> well proven on CPAN and the core offers the kind of MOP that TB2
> needs, then it can migrate in.

It won't work for the simple reason that if any dual-life CPAN module decides
to use a feature or bug fix of Test::More 1.5.0 then it can't be cored.  The
forward dependency march will drag it in.

It also means the perl core gets no bug fixes and no feature enhancements.
Unless they want to maintain their own fork, which I sure as hell am not.  And
that IS an extra maintenance load for p5p.

As TB2 is a pretty radical internals restructuring, and I expect new and
existing Test modules will want to start using those internals, and people
will want to start using those new versions, Test::More 1.5.0 will be
required.  Holding it back in the core is just YET ANOTHER immediate upgrade
that's necessary after a fresh perl install.

While we might debate the utility of having certain modules in the core,
modules which help install other modules have always been in that set.  The
test framework used by 80% of CPAN is squarely in that category.  Should it be
thrown out because of one file?

If I didn't point it out, nobody would have known it was there.


-- 
Robrt:   People can't win
Schwern: No, but they can riot after the game.

Reply via email to