in reply to What can bring the excitement back to Perl?

Well, I very much (respectfully) disagree with you, let me explain why.

Why is Perl not considered as awesome as PHP & Ruby? I have a couple theories on this actually ...

First PHP, it has a (very) low barrier of entry which makes it appealing to first time programmers. I am not sure anyone but those who have only ever programmed in PHP (maybe also in Javascript) think it is all that awesome. It does have a lot of nice "off the shelf" applications which are super easy to install (so sysadmins like them). The real killer app of PHP (IMO at least) is that you can write a fully functioning database driven web application, stuff it all in a single .php file, upload it to your $5 a month web host, and thats it, your done! No modules to install, no dependencies to track down, no servers to set up and configure, etc etc etc. It's so simple, it hurts. Perl simply does not have this "feature" 1, which is nice for those consultants which get paid by the hour and for those of us who care about long term maintainability and clean project organization. However this raises the barrier of entry and makes us cost more, two things which non-tech-savvy business folks (a.k.a - the guys writing the checks) care about very much.

Second is Ruby. Ruby, Ruby, Ruby, *sigh*. It's actually a very nice language, and Rails is a decent framework. The really funny thing is though, the killer app for Ruby is not (necessarily) a Ruby app at all, but just blogging software that is most often written in either Perl or PHP (oh the irony). Ruby has been made cool by countless bloggers (some good, a lot bad) who are spewing their love (infatuation) for the language all over the blogosphere. When you combine all this exposure with sites like Digg and Reddit and many thousands of bored and unhappy programmers you get a Hype Bubble that is impossible to burst 2.

But wait, this is not all Ruby has to offer, it's more than just hype. Imagine yourself stuck in a windowless cubicle, flourescent lights bathing everything in a cold, bland shade of blue, a cup of stale coffee next to your keyboard and nothing but Java as far as the IDE can see. Now imagine yourself sitting in a big comfy chair next to the window in your favorite coffee shop, sipping a triple-tall mocha-frapa-spresso with whipped cream 3 and joyfully writing 1 line of Ruby on Rails code for every 20-30 lines of Enterprise Java code. Which would you choose?

Ruby is object oriented all the way down, which appeals to the Java Junkie who has been told that this is the only acceptable way to be. Ruby's OO is clean too, not like that icky line-noisy Perl OO, or that awkward and kinda clunky Python, but clean,... like Java. Ruby also has lots of cool features like blocks, continuations, metaclasses, etc. which are fairly easy to play with and make you feel smart and clever when you use them. In short, Ruby is fun!

Of course the really funny thing about Ruby, outside of the recent wave of startups and larger cities, not really a lot of work is out there. It has not trickled down to the PHBs in Middle America who have small budgets and need to get things done. It's overall market penetration is fairly low compared to PHP, Java and even Perl. Sure it is growing, but the hype still far outstrips the reality on the ground.

So, to recap, we have PHP; low barrier of entry, easy to deploy. We have Ruby; super cool and sexy, easier to write then Java. How can Perl compete?

Perl 6, yeah maybe, when it comes out. Not to be pessimistic, but people will not be switching to Perl 6 on Xmas of 200x (we may need to start saying 20xx soon). I consider myself an early adopter and the earliest I would even consider using Perl 6 in production would be Xmas 200(x + 1). Why? Because it's a new untested language that is running on a new untested VM and $work is what pays the bills, so I will wait till I am convinced it is stable and ready for use (Of course being an early adopter means I will probably help out with that testing too, and I encourage everyone else to do so as well, it will only get us there quicker). And even still, Perl 6 will only give us the "super cool sexy" thing, it won't be any easier to deploy then Perl 5 (probably harder, at least initially), it won't be "easier to write then Java" since it won't have a "Perl 6 on Rails" (at least initially), and it's barrier for entry will be no lower (and maybe even a little higher) then Perl 5. So if we are really honest with ourselves, looking at Perl 6 as our savior is a long term strategy and doesn't really help things in the hear and now (in fact, it could be argued that all the FUD about Perl 6 actually hurts things).

CPAN, well, it is full of much more crap then it is good stuff, and this is hard to sift through for the uninitiated. The CPAN ecosystem is awesome and really has nothing that even comes close to competing with it. But if your not writing Perl code, then is useless to you. If the language itself cannot attract the people, then how will 16,000,000+ lines of code in that language make it any more appealing?

You say that Catalyst, DBIx::Class and Moose aren't exciting enough outside of the community to save us, but I disagree. Catalyst is (IMO at least) far superior to RoR in that it is very much not opinionated, it may be "just another MVC" but so what, it gets the job done. DBIx::Class actually is "something new", it beats every ORM I have looked at in terms of flexibility and robustness, and since it is built on top of DBI, it supports many more database vendors then most other ORMs out there in any language. Moose, well I am biased since I wrote it, but I know for a fact that the object model it provides is unlike anything else out there 4 and I have been told by several people that it is "fun" to program in (and one former Ruby programmer said it was as "fun" if not moreso then Ruby).

So to go back to our list:

So why then is Perl not as popular as PHP and Ruby? Perhaps we just don't have enough people blogging about these new Perl technologies, generating the amount of hype needed to break out beyond this (giant) Perl echo chamber 5. A key feature of all of them is TIMTOWTDI, but with an emphasis on providing a more "correct" way to do things, rather then just creativity-run-wild. This kind of flexibility really can only be found in the Perl community, because it is so key to our culture. We need to get out there and promote this, show them it is a good thing and something they should use.

Okay, now I really need to get back to $work :)

  1. no Vanilla CGI does not count, besides you still have to chase modules and dependencies
  2. yes, Zed Shaw tried, but ultimately failed
  3. and a little cinnamon sprinkled on top, yummy
  4. It borrows from so many different sources (CLOS, Perl 6, Smalltalk, Ruby, Ocaml, BETA, Java, etc.) to produce a combination of features such that it only could be written in a language like Perl. Also, I keep tabs on new languages and technologies and I have yet to see something which is comparable.
  5. Perlmonks and use.perl don't count as "blogging" they are still inside the echo chamber.