Let's try this again
This started as a reply comment on another post about “people” being rude, that being the case please forgive how it starts.
I'm not sure I agree that the community has always been inclusive, I'll point (again) to chromatic's post back in 2k11 http://modernperlbooks.com/mt/2011/04/civility-starts-with-me.html about issues within the community relating to hostile behavior. We all have the ability to be rude, biting, short, etc. I'm just as guilty as anyone throughout my life both personally and professionally.
I strongly believe this “rude behavior” is due to the passion each of us feel about our beloved Perl. Mithaldu, Buddy Burden, myself and all the others that have either posted or commented on this “fight?”, I assume you/we all love Perl, otherwise none of us would care enough to say anything. It is and has been a huge part of our lives for years, for some of us decades. It's not a bad thing, we will all be rude at some point because we are heavily invested in Perl. When we get a bit to excited it's important for those around us to point it out and ask us to calm down a bit, I'm ok with this. No, I am not suggesting either Mithaldu or Buddy Burden were rude, both have made valid and reasonable comments adding to the discussion.
Moo(se) is pretty damn awesome if you consider the CPAN had nothing great before it, it solves a host of irritating issues that honestly most of us would prefer to not be bothered with (including myself). I happen to work in a medium/large Perl shop that has over a decade of in-house Perl infrastructure. Check the CPAN, Ovid posted both Sub::Signatures and aliased, both of which are our code authorized for public release at Ovid's request. You may or may not like them, they are a very small part of what I'm used to working with, I must assume this has strongly colored my view of public answers to similar questions.
So I said I hated "Modern Perl" (I meant Moo(se)). Why? well the truth in it's in large part to the fact that I've had all the features Moo(se) offers and much more for a very long time. When compared to what I'm used to I find the syntax of Moo(se) ugly (personally). My dislike doesn't make it bad, but it also doesn't mean I have no right to voice my opinion in public. I want to see Moo(se) continue to evolve, grow, get faster, better, increase in functionality and performance while decreasing in it's learning curve because this pushes the community forward, I want this for all public Perl code.
All this being said, I think it is important for every point of view to be discussed on it's merits, not on the charisma of it's current speaker. Why do I prefer C::MM over Moo(se)? Well until I show some code it's simply an idea and put up or shut up applies to me as much as it does anyone else (having reviewed Moo I feel they are *mostly the same with different syntax in how I would use them). I wanted to start a conversation, clearly I came off way more heavy handed then I intended. I've apologized for some of the glaring mistakes I made in my original post, and I've tried hard to be both open and courteous to each and every comment I have either directly or indirectly received. I'll continue to follow the idea that an open discussion is good for me, for you, and for the community.
Modern Perl seems to mean a few different things to different people, that's more clear now then it was when I first posted. Use strict, warnings, unit testing, pair programming, peer review, qa, etc. These have been standard for my development for almost 20 years, so the idea that they are modern didn't enter my mind, they are not modern to me. The CPAN has had tests (some more, some less) for nearly all modules it hosts as long as I've used it, I didn't realize this wasn't how everyone coded both personally and professionally, and this was a stupid assumption on my part (what happens when I assume? Yeah, exactly).
My mentor in Perl taught me to test first and code second, to get peer review on anything that wasn't a 5 minute one time script. He also taught me to be passionate about what I'm doing, to do it right no matter how many re-writes that took, and to take pride in my work. I've written some truly horrible code in my day, and I've written some things I am extremely proud of. I started this conversation with the intent to share my experiences with the community at large, and to encourage more of you to do the same.
If I were to write public code today I'd very likely use Moo, why? Because it's popular (and therefore familiar to many) and because it's not so different from C::MM as to be a stumbling block for me personally. The heart of the conversation I wanted to have with you all was about writing elegant code to solve interesting problems without using ready made answers provided by others. Because code re-use is bad? Not at all, in fact without code re-use many of us would be writing the same things over and over and likely burning out in the process. I wanted to start the conversation because while working on the shoulders of giants is a great way to move forward for many, some of us really want to know the guts, to understand how the wheels work and even possibly improve on their design (I'm not suggesting I have a better wheel). I'd still like to have that conversation (I have multiple posts in the works) with any of you that are interested. Though I'll try to do so without alienating many of you in the process as I clearly did with my previous post.
If you want to consider this post an apology I'm good with that, I did say some things wrong and used some wrong terminology so by all means, take this as an I'm sorry. The heart for me is about having an open conversation about we I think we all love, Perl.
* Moo(se) provides Roles (“safer” mixins, don't believe me? Read the docs on Moo(se) Roles, they are mixins with some attempts to stop you from being stupid). Also Moo(se) allows for flagging ro(p) and data types (beyond scalar, array, hash). I haven't personally checked on this but I'm guessing adding a number to something labeled as a Str will either die or use the chr() of the number, or something similar? None of this is provided by C::MM as far as I'm aware. They are mostly the same in how I would use them, you may very well use them differently.