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