Do you know anyone who is language-agnostic and has chosen a Perl MVC framework to build a new web application?
All of the people I know who have been using Perl frameworks (and there are many who have been using them very successfully) are people who would choose to do any programming task in Perl. But I don’t know of anyone who has thought to themselves “I need to build a new web application, let’s review all the framework options in all the languages - oh look, that Perl-based framework looks good, we’ll use that”. Do you?
I think that at least part of the problem is the sheer range of options that Perl gives you. There’s Maypole, Catalyst and Jifty. There are lightweight frameworks like CGI::Prototype and CGI::Application. I’ve almost certainly missed some. And now there’s Woodstock. Woodstock is the new framework which will be designed by Sebastian Riedel to fix “a lot of design mistakes in Catalyst”. And let’s not forget that Sebastian originally started the Catalyst project as a fork from Maypole because he didn’t like the direction it was taking.
Part of this stems from the perfectionism of the Perl community. If you’re not completely happy with the way that a module works, you fork it and write another version that works how you want it to work. This means that a new user looking for a module can now have more choice and choose one that works exactly how they want it to work. But the evidence would seem to indicate that they are unlikely to do that. They’ll either add another fork or they’ll decide that they can’t decide between the two very similar looking modules and go off to use something completely different (probably a different programming language completely).
The Ruby community doesn’t work that way. Rails isn’t perfect. I’m sure they realise that. But you don’t hear of people creating forks to make it work just the way they want. They just work within the restrictions and present a united front to people looking for an MVC framework. If you want an MVC framework in Ruby, there it is. Take it or leave it. And as it works well for the majority of cases, a lot of people take it.
So, as I see it, you have a choice. You either give people options and they decide it’s too hard to choose and go eslewhere. Or you tell them “this is how we do it” and hopefully they’ll like your solution. I used to think the Perl way was the right way to go, but now I’m not so sure.
Perhaps I should be a Ruby programmer :-)