On Sun, Sep 6, 2009 at 1:39 PM, Eric Wilhelm<enoba...@gmail.com> wrote:
>>> For reason #2, I'm reluctant to do it with e.g. a command-line
>>> option or Build.PL parameter.  Some sort of artifact in the deployed
>>> .pm is very useful for debugging an installed module.
>>
>>I have mixed feeling about this.  Until *Perl* has specific semantics
>>around this, I'm reluctant to add semantics in the form of comments,
>
> I think comments are going to be the least invasive/verbose mechanism.
> You want to use the pod?
>
> I would be very sad to see a runtime module requirement just to declare
> some rarely-used meta info.  Ditto for requiring a new Perl.

POD?  Hell, no.

But, for the sake of argument, let's say some bold, foolish programmer
implements an extended 'package' keyword for Perl, like so [1]:

    package Foo 1.23;

And, following popular demand, at least based on #corehackers and
#toolchain, he implements a way of marking module release status, like
so:

    package Foo 1.23 stable;

And lets assume that "stable" "testing" and "unstable" were the
allowed status flags to an enhanced package line.  If such a patch
were added to core, clearly, M::B and EU::MM would need to be patched
accordingly.

As you say, that's fine for future Perls, but what about older ones?
I would argue that using comments as a backward compatible hack is OK,
but that stable/testing/unstable should be used instead of ALPHA.

That's a contrived case to be sure, but my point is that I'd like to
figure this out once and not have one semantic for M::B, one for
blead, another one for M::I, no semantic at all in EU::MM and so on.

It's all the same problem, so I'd like Oslo-style consensus, so if we
have to use ugly hacks, the whole toolchain is consistent with it.
E.g. The Olso consensus around listing "perl" in "requires" -- even
Schwern came around and joined the consensus to keep it [thank you,
Schwern!].

Give me consensus and I'll be the front ranks of implementers, but if
the idea is Module::Build blazing a trail, I'm violently opposed.

> As I said, I only need to do it one way once with a given M::B.  If a
> better mechanism is developed, I'll use that the next time.  (I know
> we're good at thinking of edge cases around here so I'll
> preemptively 'meh' all of those now.)

Rebuttals to your "meh": YAML for Meta, version.pm, PERL5_CPANPLUS_IS_RUNNING

There are a lot of dubious decisions that seemed like good ideas at
the time that we maintainers are living with.  So "meh" to your "meh".
 :-)

>>Should we bikeshed the issue to death?
>
> I don't mind if other people's problems also get solved.  I do mind if
> my problem gets snowed under an architectural astronomy project. ;-)

Agreed.  Bound the problem around how flag, capture and communicate
distribution status and let the rest of the meta issues go.

> Iff you extend it beyond the "# ALPHA" without developing something
> formal and reproducible, this is what you'll get.

(formal and reproducible)++

> If we're adding something to META.yml and can change mldistwatch to see
> that, we don't even need a specially-formatted tarball name.

Exactly.

My suggestion is:

* Define a 'release_status' field in the new CPAN Meta Spec that
clarifies the semantics of what a release status is, and whether there
are synonyms for various release levels. (E.g. alpha = unstable, beta
= testing, is there a 'release candidate' status, and so on)

* Have PAUSE start using the new field if it exists

Then, and only then, do we figure out if it should be a comment, or
just be set in Build.PL or whatever because we'll have thought through
the issues with other toolchain developers and can probably quickly
agree on a common approach.

-- David

    [1] http://github.com/dagolden/perl/tree/package-name-version

Reply via email to