David Golden wrote: > So, yes, it was a crappy design decision/hack, but now we're stuck with it.
No, we should not wedge ourselves into a corner like this. Preventing a better way of doing it from going into a protocol because there's a handful of code that uses the old way is doomed to render protocol improvements impossible. META.yml is versioned just to handle this sort of thing. Furthermore, there's probably all of 2 or 3 pieces of code which actually handles "requires: perl". CPAN, CPANPLUS and maybe PAUSE. That's going overboard on the backwards compatibility police to protect those. We're not even talking about removing "requires: perl", just adding a better way. There's only two important pieces of code which generate "requires: perl", Module::Build and Module::Install. Change them and almost all uses of "requires: perl" on CPAN will melt away over time. Hell, "requires: perl" isn't even clearly part of the spec. The "requires" documentation clearly says: "The keys are the module names, and the values are version specifications as described in VERSION SPECIFICATIONS." The "perl" thing just slipped into the synopsis without explanation. MakeMaker has never honored it. There's an old, but sadly true, joke about some bizarre feature of C and why it's there. Turns out waaaaaaaaaaaay back in the beginning the bizarreness of the feature was pointed out and a better way to do it given. At the time the response was "we can't possibly change that, there must be *a dozen users* of C by now!" We have to be able to move forward, always. -- Don't try the paranormal until you know what's normal. -- "Lords and Ladies" by Terry Prachett