Just kidding ;-) But there is some truth:
1. MooseX::Declare has gained us a lot of insight on what we can do substantially better 2. We learned how to structure extensibility with traits 3. we got a bunch of stuff wrong (ranging from slightly annoying to "oops, sorry") 4. we have probably gotten things wrong that we don't know about Fortunately the MOP api is designed to be extensible, the only unanswered question is what defaults to we ship. I think it's time to start thinking about how to get Perl's 'use 5.010' for Moose, in one form or another. Fortunately, Perl kinda sorts this out for us: use Moose 0.92 qw(foo bar); This will: 1. require Moose 2. call Moose->VERSION(0.92) from the POV of the caller 3. call Moose->import(qw(foo bar)) In terms of infrastructure I think that doesn't take much else, Moose::VERSION will simply init_meta slightly differently, and the import routine can act accordingly (it is already capable of detecting pre-initialized metaclasses). I think if we structure Moose's features in a more plugin like architecture, where the metaclass instance can augment or replace the Moose::Exporter stuff to some extent, it should be trivial to make a future and backwards compatible way to keep things clean. Using a metaclass centered approach we can just let polymorphism ensure we have all our opportunities open. So anyway, I'll reply to myself with what I dislike about Moose in its current form, and I hope you do the same