From Fedora Project Wiki

Revision as of 11:55, 18 February 2009 by Cweyl (talk | contribs) (add first runthrough of table)

Brain dump. Comments welcome and appreciated, on the talk page.

Current Flaws


  1. Understands "use base", "use parent", etc, constructs.
  2. Understands Moose
    1. "extends" - subclassing
    2. "with" - roles
    3. "metaclass" - metaclasses
    4. "traits" - metaclass roles
  3. Understands Catalyst plugin speficication syntax
    • This should be extensible to other module classes
  4. Doesn't generate duplicates. e.g.: perl(Foo) and perl(Foo) >= 1.9
  5. Better able to deal with the wonders of Perl versioning; e.g.
    • 1.20a stays 1.20a
    • 1.20 becomes 1.020000 (version triplet)


  1. Should we attempt to compile? (a la perl -wc or Module::ScanDeps)
    • PROS: highly accurate
    • CONS: may fail for a variety of reasons
  2. Should we try to normalize the versions?

Requirement Example Current Target Compat? Comment
use base constructs correctly evaluated
use base 'XXX';
Need also to correctly evaluate use parent ..., etc.
No duplicate provides We often see duplicate requires. These are harmless, except in the case where one requires is versioned and another unversioned.

This might need to be addressed at a higher level than perl.prov.
Mo*se subclassing
extends 'Some::Class';
Mo*se roles
with 'Some::Class';
Mo*se traits an attribute specification:
traits => [ 'X', 'Y' ]
This is going to be tricky.
Mo*se metaclasses
Catalyst and other plugin syntax
Ability to include/exclude