Hi, Since I'm speaking generally, rather than responding, I hope top posting is considered acceptable.
Things I'd like to see done differently (not exactly things I don't like, but just irritate me) 1) See Moose more as a way to hook up a bunch of suger, like MX:Declare, advanced types and exceptions, possible event multi methods and the stuff in Moose::Autobox. 2) So more deep stuff moved to MOP, like Roles (not sure if this is possible, but you said anything :) ) 3) Type constraints decoupled from Moose and some things changed under the hood to make it easier to improve error messages for things like MX:T:Structured and other changes so that slurpy in MX:T:Structured doesn't have to be an evil hack. A stand alone type constraint system that makes it easier for me to complete the dependent and faceted type stuff sitting inthe repo for like a year would be nice. And of course a sweet MooseX::Declare style syntax. Then we can end the stringy types versus MooseX::Types style types issue for good. 4) Lispy conditionals (I know it's been said before, but I think we are closer now to making this workable) ----- Original Message ---- > From: Yuval Kogman <nothingm...@woobling.org> > To: moose@perl.org > Sent: Tue, November 10, 2009 2:49:44 PM > Subject: Time for a rewrite > > 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