On Sep 19, 2011, at 1:13 PM, Dave Rolsky wrote:

> On Mon, 19 Sep 2011, ian.doche...@nomura.com wrote:
> 
>> I have written a new module along the lines of FSA::Rules, only as a Moose 
>> Role.
>> 
>> Is it convention that Moose Roles are in the MooseX::Role namespace so I 
>> would call the module MooseX::Role::FSA::Simple, or can I call it 
>> MooseX::FSA::Simple?
> 
> I'd really prefer that MooseX _only_ be used for extensions to Moose (at the 
> meta level).

So I /mostly/ agree with you on this one.

For MooseX:: itself, yes,.. should just be exactly that.

For MooseX::Role:: though, I think it is not so simple.

Take for instance MooseX::Role::WithOverloading or MooseX::Role::Parameterized, 
these fit you example well because they extends Moose::Role at the meta level. 

But then take MooseX::Role::TraitsConstructor, this doesn't extend the role API 
at all but is clearly very Moose specific and generically extends the 
functionality of Moose classes, though not at the meta-level at all.

Also MooseX::Role::Pluggable, which also is pretty Moose specific and provides 
an extension of functionality in that same "generic" manner.

Similarly other MooseX::Role modules such as:

- MooseX::Role::Listenable
- MooseX::Role::Matcher
- MooseX::Role::MissingMethodUtils
- MooseX::Role::BuildInstanceOf

All of these modules really add functionality to the individual classes they 
are applied to and not to the meta-level.

I think we have a fuzzy line here and honestly I am not sure it will be easy to 
clarify (at least not as simple as MooseX:: is).

- Stevan

Reply via email to