From Fedora Project Wiki

(→‎Needed: add catalyst, metaclass)
(add first runthrough of table)
Line 24: Line 24:
#* CONS: may fail for a variety of reasons
#* CONS: may fail for a variety of reasons
# Should we try to normalize the versions?
# Should we try to normalize the versions?
{|
|'''Requirement'''||'''Example'''||'''Current'''||'''Target'''||'''Compat?'''||'''Comment'''
|-
|<code>use base</code> constructs correctly evaluated||<pre>use base 'XXX';</pre>||<pre>perl(base)</pre>||<pre>perl(base)
perl(XXX)</pre>|| ||Need also to correctly evaluate <code>use parent ...</code>, etc.
|-
|''No duplicate provides''|| || || || ||We often see duplicate requires.  These are harmless, except in the case where one requires is versioned and another unversioned.<br><br>This might need to be addressed at a higher level than perl.prov.
|-
|Mo*se subclassing||<pre>extends 'Some::Class';</pre>|| ||<pre>perl(Some::Class)</pre>|| ||
|-
|Mo*se roles||<pre>with 'Some::Class';</pre>|| ||<pre>perl(Some::Class)</pre>|| ||
|-
|Mo*se traits||...in an attribute specification:<pre>...
traits => [ 'X', 'Y' ]</pre>|| ||<pre>perl(Moose::Meta::Custom::Trait::X)
perl(Moose::Meta::Custom::Trait::Y)</pre>|| ||This is going to be tricky.
|-
|Mo*se metaclasses|| || || || ||
|-
|Catalyst and other plugin syntax|| || || || ||
|-
|Ability to include/exclude|| || || || ||
|}

Revision as of 11:55, 18 February 2009

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

Current Flaws

Needed

  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)

Questions

  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';
perl(base)
perl(base)
perl(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';
perl(Some::Class)
Mo*se roles
with 'Some::Class';
perl(Some::Class)
Mo*se traits ...in an attribute specification:
...
traits => [ 'X', 'Y' ]
perl(Moose::Meta::Custom::Trait::X)
perl(Moose::Meta::Custom::Trait::Y)
This is going to be tricky.
Mo*se metaclasses
Catalyst and other plugin syntax
Ability to include/exclude