On 4/4/06, Adam Kennedy <[EMAIL PROTECTED]> wrote:
> I want to see File::HomeDir ultimately in there, because there's a
> number of things that use $ENV{HOME} and implement their own special
> case logic.

If it presents a platform independent way to find a home dir then I
agree with you.

> You want to add ExtUtils::Installer once it works, so
> ExtUtils::MakeMaker can use it.

Well, actually ExtUtils::Installer is not that much more than a
figment of my and Randys imagination, so I certainly havent thought
about adding it to core. But if adding it to core meant signifigant
improvements in CPAN and Module::Build's ability to install then I
would say it should go in. Thats a big hypothetical tho.

> Module::Build wants to go in, but because they use YAML for the data
> file, we add Ingy's YAML.pm, who then decides he wants to use Test::Base
> for everything he does, so that slips in undernearth, and of course
> Test::Base is based on Spiffy, so Spiffy needs to go in the core (which
> isn't what actually happened, but could have)

Actually I thought the decision was that YAML wasnt going in and that
the MB team would roll their own writer?

Anyway, MB to me underscores the issue nicely. Its a big module. Its
getting added to core. Win32API::File is a fraction of the size and
performs essential tasks that you cant do without it (including
upgrading certain key dual-lifed core modules). Both ExtUtils and MB
would benefit from it. File::Temp would benefit from it. Yet for some
reason Win32API::File cant be added. Whereas Module::Build, for all
its superiority over ExtUtils::, does basically the same thing yet its
getting added.

Going back to your example. Spiffy from what i can tell is more or
less along the line of a development luxury item. IMO luxury items
dont really belong in core. Something that uses a luxury item also
doesnt belong in core.

But infrastructure code that is essential on its platform, or code
that provides a abstraction layer over platform dependent quirks IMO
does belong in the core.

As an example I see DDS as a luxury item. For all its superiority over
DD I dont really think it belongs in core. But it contains code that I
see as infrastructure so as time permits im trying to make patches to
migrate that functionality alone to core.

OTOH, something like File::HomeDir, assuming it presents a platform
independent way to deal with the issue of "home directories" sounds to
me like it _should_ be in core. Then people will actually use it
instead of rolling their own every time they need to. Then programs
wouldnt do stupid things on my computer because i dont have an
ENV{HOME} set in my environment.

> It goes on and on and on, and eventually it's impossible to make the
> core build and smoke cleanly on any platform, because not all of these
> packages work everywhere all the time on all platforms.

As long as the modules involved are the type I mean then I dont see the problem.

To clarify: Platform specific infrastructure code, or platform
independent abstraction code belongs in core.

> The core is expected to work everywhere, just look at the number of
> File::Spec subfiles now. The work involved to deal with full(ish)
> platform support is enormous.

My view is the core doesnt actually work everywhere because its
missing essential tools on at least one of those platforms.

> Which is why although I'd secretly like to put File::HomeDir in tomorrow
> and deal with problems later, I'm not going to say a damned thing until
> I'm sure it's completly bug free and working on as many platforms as
> possible, before I even think of broaching the idea.
>
> On the other hand, if you have a specific problem domain you want to
> address, it's perfectly acceptable to build a distribution that contains
> all the extra things you need for that problem domain, without the need
> to impose the extra bloat on the core.

Well my experience is that putting platform specific modules in a
platform specific distribution does not lead to those modules being
widely used by abstraction type code.  A common excuse for not doing
so is that adding the use of those modules creates dependency on
modules out of core.

Whereas from what ive seen its much easier to get people to use the
code that is in the core distribution. IE, adding support from
Win32API::File or Win32::TieRegistry is problematic whereas adding
support from Win32.pm is not.

Cheers,
Yves





--
perl -Mre=debug -e "/just|another|perl|hacker/"

Reply via email to