I've always had some love for Perl 5's object system. I appreciate that it doesn't foist an ideology on me, instead providing me tools to build and use an object system that I'm comfortable with.
Typically for me that object system uses blessed hashes, hand-written accessors (with hand-written validation), hand written method parameter validation and explicit manipulation of @ISA.
Why don't I use X for (accessor generation, parameter validation, etc.)?
I probably have, and maybe do on a project here or there. But I've never fallen in love with a combination of OO helpers on the CPAN, and Perl's built in OO mechanisms are usually good enough for me.
A couple of things happened the other day. I looked at Moose's documentation, and stubbed a couple of classes for a home project. I was expecting a steeper learning curve than I found, and in a couple of minutes I was working with object system that I liked.
I didn't see anything about method parameter validation in the Moose documentation, so I hopped on irc.perl.org#perl. People were nice and helpful (thanks autarch, mst and sartak!) and in another minute I had MooseX::Params::Validate plugged in and working away. I also got some exposure to MooseX::Method::Signatures, Method::Signatures and Devel::Declare. Insanely cool stuff.
Thank you and congratulations, Moose team!
-- Douglas Hunter