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

Reply via email to