Personally I'm opposed to anything that doesn't have a really good
reason. Once it's in core we can't take it out, so we better be damn
sure we got it right.

MX::Types is one thing, it fixes problems with core functionality, but
the more code in core the more code can break, the more maintenance
burden we have, etc etc. It's already the second generation fix
(though there are still a few disputed things about it, e.g. people
still complain about the fact that we don't AUTOLOAD class type
constraints to delegate to the class, and coring it means we can never
change our mind about that without introducing
MooseX::Types::ButActuallyRightThisTime).

Making dependency haters happy is irrelevant, if you use Moose you can
also use MooseX::Foo. They will complain about Moose's deps just the
same.

So, one by one...

StrictConstructor - I'm in favour, but because the code could be used
by Moose itself for its even if not with the same API, reducing
duplication.

NonMoose - i think this is better kept outside of core, it's perfectly
fine as it is and allows for more freedoms in the future.

Aliases - not yet mature as we discovered today ;-)

MultiInitArgs - seems like a somewhat esoteric feature, so no pressing
need in core IMHO. Unlike StrictConstructor I can't really imagine
myself ever recommending it as a best practice, it seems like a way of
dealing with legacy code.

SemiAffordanceAccessor and FollowPBP - seems justified due to the
simplicity, kinda like the different errors we have, but goes against
keeping core minimal. I don't think we'll ever change our minds about
these though, because they're so simple and so old by now.

Method Attributes - i think this is in the same ballpark as
overloading, since we don't support that last I checked (even though
it's pretty easy), I don't think that justifies it.

Reply via email to