On Mon, Sep 7, 2009 at 2:15 AM, Eric Wilhelm<enoba...@gmail.com> wrote: >>> 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. > > Why not? If it's properly specified and pod-renderable, things like the > distribution status, author, bugtracker, repository, tags, blahblah, > can be human-readable and appear in perldoc while also being > machine-extractable.
I thought you were implying a Pod section "=begin meta" or something. I'd take comments over that any day. A downside of Pod is that it isn't guaranteed to exist and this starts imposing conditions on personal development styles, plus of course, the usual natural language processing problems. > (Picture say, keeping MYMETA.yml on the > installed tree plus a scheme for querying that.) I've already added that to the CPAN Meta Spec proposal page, as it has benefits that go way beyond knowing release status of installed modules. >> package Foo 1.23 stable; > > Well, what about "author", "tags", "repository", etc? Where the version > number is a necessary thing and reduces boilerplate code, the status is > an unnecessary thing which adds boilerplate code. > > The '_' in your VERSION vanishes within the runtime because of the > necessary eval(). The status and some way to query it is not a > necessary part of the package -- plus all of this is really dist-level > stuff and you're opening yourself to multiple conflicting status values > per .pm file. That's why I haven't implemented "package Foo 1.23 stable" nor the "package Foo :ver(1.23) :auth(JDOE) :rel(stable)" syntax that was suggested. These are all orthogonal issues to version number declaration, which *is* a package level thing, though it cascades to modules and distributions. C.f. http://www.dagolden.com/index.php/308/packages-modules-and-distributions/ > I think you're going a bit knee-jerk on the maintenance concerns of the > trigger mechanism. Heh. How many toolchain modules am I working on now? Excuse the knee-jerk reaction. :-) In seriousness -- I'm running the process to revise the Meta spec. I'm confident that will lead to consensus around dealing with release status. I don't want to front-run that process. Also, I'm encouraging other toolchain maintainers to try to work in consensus. I'd rather not see things like PERL5_CPANPLUS_IS_RUNNING or M::I's "test_requires" again*. If I'm going to ask them to work on a maintainer consensus basis, I need to do the same for M::B maintainers (because I am one). * Digression on test_requires: M::I offers a 'test_requires' keyword "for the future", even though (a) there's no such thing in META.yml, (b) it puts things in build_requires in META.yml and (c) during install, it's all squashed into PREREQ_PM anyway. I periodically have to explain this to people on #toolchain as well as tell them that, no, M::B is not going to add that "feature" until it's in the spec. It's an attempt to influence the spec development process by creating a user-base. Even though I'm fine with the concept of 'test_requires', I don't like that as a development process, particularly when the implementation is not what it claims to be. > The author features of M::B don't need to be so > set-in-stone because the author has control over which M::B they're > running and responsibility for doing what it expects. That's not to > say that I want to build something hugely complicated and then rip it > out from under everyone on the next version, but the "# ALPHA" parse > feature is small and special enough that it shouldn't be a big deal. Can you help me understand the urgency? Why not wait a few months? Yes, underscores suck. Why do we need "# ALPHA" right now when you say that it's OK to rip it out again in a future version? Is there a particular need you're trying to solve, or it general impatience to see some sort of progress on the issue? > The produced data should > adhere to the META spec, but how the user declares that data is up to > their tool. I think I agree on that point, though I still prefer avoiding tool lock-in and would like to see similar semantics in any tool. (Does "ALPHA" mean "unstable"?) Perhaps my knee-jerk reaction is to seeing new hacks on the $VERSION line to replace the old hacks. -- David