Pre-Modern Perl VS Post-Modern Perl: Redux
I seem to have started a whole controversy. I feel like I should be blushing: all this attention is probably assigning far more importance to my opinions than I deserve.
First, a recap: There were a couple of blog posts about pre-modern Perl. Then I responded with a bit of a defense of post-modern Perl. This engendered a lot of comments; certainly more comments than I’ve ever had on any of my other blog posts (in fact, more than twice as many as the previous record-holders). Then the author of the post that initiated the discussion made a fuller response.
I normally don’t revisit blog topics, especially if there’s nothing new to add. But this topic has spawned so much interest and attention that I’m going to make an exception. It’ll be up to you to decide if that’s a good thing or not.
First of all, there’s great deal of rhetoric about whether people are being rude or not. Personally, I find this topic completely boring. Yes, some people are going to be rude. Other people are going to be rude about people being rude (even some people who weren’t rude in the first place). But, hey: this is the Internet. A certain level of rudeness is to be expected—if you haven’t learned to ignore it by now, you’re either new, or slow (and now some people will accuse me of rudeness). Besides, these are blog posts. Blog posts are worthless—there’s a reason that I call my Other Blog “Do Not Read This Blog.” And my blog posts are just as worthless as anyone else’s. They’re just long ravings of people who would, under normal circumstances, be standing on soapboxes in city parks ranting at passersby. You can’t put but so much stock into that ... right?
Besides, if all we’re going to do is bicker about who’s being rude, we’re going to completely lose sight of the actual topic. Some people made some points about pre-modern Perl. Some others made some points about post-modern Perl. Some people may find the tone of some of the points or other offensive, but you know what? That doesn’t change the meaning. Sometimes we get so caught up in our absolute right not to be offended that we ignore what’s actually being said.
David Shultz said:
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.
Yes, exactly. One man’s passion is another man’s rudeness, and as far as I’m concerned concentrating on whether this person or that person may or may not have been offended, and whether this “tone” (which is, after all, all in the ear of the beholder) may or may not have been better expressed differently, just avoids the whole point of the discussion.
Secondly, I should probably point out that the title of my previous post was meant somewhat sardonically (this may have gone over some people’s heads). It’s a reference to fighting video games like Mortal Kombat and many others. Much like the “fight” between Perl 5 and Perl 6, in the end it’s somewhat silly to think of the relationship as a combat, because neither one is going to “K.O.” the other. Perl 6 is not going to throw Perl 5 down and rip out its spine, and post-modern Perl is not going to uppercut per-modern Perl so hard it falls off a cliff. These things (and many other so called dichotomies) will continue to live alongside each other, and that’s a good thing. I had hoped to draw attention to this by the absurdity of envisioning the two concepts as going up against each other, Mortal Kmobat style. But perhaps that was too subtle.
But let me say that I’m not unhappy with all the response. I believe that David Shultz wanted to start a conversation when he posted the original article. I wanted to continue that conversation. And now it’s out there, and people are talking about it, so I say: mission accomplished. I’ve heard many an artist say that they don’t particularly care whether their art inspires love or hate, as long as it inspires something. That’s pretty much how I feel here. Agree with me whole-heartedly, or disagree with me violently: either way I think it’s a good thing. (And I also noticed that a few people felt like I was able to represent their feelings on the topic, so that made me very glad I took it on.)
So I don’t want to respond to individual comments, for the most part. Except I will respond to the point about evolution not always being a good thing, because I think that it is. In fact, I think that’s sort of built in to the defintion of “evolution” ... not all change is good, perhaps, but all evolution is inherently good, because that’s what “evolution” means. Dictionary.com tells us that evolution means: “any process of formation or growth; development,” and it lists its antonyms as “stasis” and “inactivity.” So without evolution we have stagnation, and we know the rest of the world is not going to undergo any stasis or inactivity. Therefore, things that do not evolve are left behind. That is the thing I don’t want to happen to Perl.
But, in general, I’ll let the fights about all the side topics—and in particular, Moose—just have their own life. Personally, I use Moose, but only in the context of MooseX::Declare; without that, I generally agree with Shultz when he says he finds “the syntax of Moo(se) ugly (personally).” I don’t think Moose is perfect, but I don’t think there’s much point in decrying it either. There were a bunch of different object systems for Perl, and this is the one that won. It may not be the clearest and most popular victory in history, but it’s not the tragedy of VHS beating out Betamax either. It’ll do, and it’s constantly getting better, and there are ways to make it even betterer (such as MooseX::Declare, as long as you replace MooseX::Method::Signatures with our own Method::Signatures, which is why I got involved with that module in the first place).
All I really wanted to say in my article was that I don’t think it’s necessarily fair for those of us on the side of post-modern Perl to say “well, fine: if you don’t like Moose (or insert other post-modern Perl feature here), don’t use it.” There are people working to get Moose (or at least parts thereof) into Perl core. Personally, I applaud those efforts and, if I were voting, I’d vote for that, emphatically. It’s a difficult road, and it may never happen. But the fact that it’s even being considered means that the pre-modern Perl people have every right to complain about post-modern Perl, because it has the very real potential to impact them by sneaking into their newer versions of Perl.
But the real point that I wanted to make was all in my last two sentences:
In some cases we just need to Perl to keep up with us. And, if that means that in other cases it’s going to drag us along for the ride, I’m okay with that.
Maybe I needed to belabor it a bit more; perhaps just tossing it out at the end there was too abrupt for full consideration. So allow me to belabor it here.
What I’m trying to say is that, yes, I like Moose and I’m okay with people promoting it and trying to get it added to core. But even if I didn’t like it, I’d still be okay with people promoting it and trying to get it added to core. And it’s not that I’m insensitive to arguments that adding features to any software causes bloating, and doing it to languages can be even more devastating. It’s just that I feel that the importance of Perl evolving overrides that concern. We still must balance things, of course: we can’t just add whatever we like without considering memory and speed tradeoffs. I’m just saying that I’ve seen unwillingness to evolve before—whether it’s a fear of change, a belief that the product is “good enough” as is, or a very realistic worry about feature bloat causing customer dissatisfaction. In the end, it doesn’t matter what the motivation, unwillingness to change can kill a product deader than trying to rewrite it from scratch. I’ve seen it, and I’m willing to bet most of you have seen it too. This is the fate that I want to avoid for Perl. So if someone wants to take something I have absolutely no interest in, and start talking about how Perl “needs” to add this feature, and develops a set of modules for it that everyone says is awesome even when I think they’re sort of crappy, and even talks about getting support for it in the core, I won’t rail against it. Oh, sure, I’ll probably make a post or two grumbling about how I don’t see what the big deal is, because I’m just as much a curmudgeonly sort of fellow as the next guy. But I won’t say we shouldn’t move “forward,” even when the direction we’re moving is more what I’d personally consider “sideways.” Because moving is good, to me. Staying still ... that’s when I’ll worry.