I really *hate* choosing all that stuff. I use CGI.pm, Class::DBI and Template because it seems these are the consensus favorites (I have zero statistical evidence).
One of *my* favorite things about Perl is the massive number of modules on CPAN. This is why I try and pick the most popular Web app components -- they are more likely to have cool plugins/extensions/subclasses of their own.
I have checked out Catalyst but, for my tastes, it has too many options, allowing me to choose which templating system, object-database mapper, etc, which feels to me an awful lot like "back to square one." This profliferation of options is probably why I can't get my head around the Catalyst documentation. Everything is much more complicated than it needs to be because TMTOWTDI.
I would be thrilled if someone made some smart decisions and put together an intelligently documented Web framework. I want an opinionated "super CGI.pm." What a great way to put it. ++dhoss.
Don't get me wrong -- I love that the options exist on glorious CPAN, and I respect why people prefer a custom-rolled solution or a looser framework. I just want the option of ... less options ;->
This sounds a lot like Rails in the Ruby world, but Rails boots its own webserver and has all kinds of code generation. It would be cool to start something that runs acceptably under CGI and then if you want it faster/more custom you just move it to an established, scalable persistence system like mod_perl or fastCGI (thus avoiding some of Rails' scalability pains).
If CGI::Application doesn't feel like the right tool, dhoss, you might check out CGI::Prototype by Randal Schwartz, which is a very cool control layer, albeit one with all sorts of Smalltalk-like hairs growing out of it. You might hate those hairs, or decide they are extremeley neat and Perl-ish in the best sense of the word. Adding methods on the fly would be an extremely useful way to extend a Web framework, and a Prototyped class gets you there.
Some sort of mix of that, Class::DBI, Class::DBI::Loader, Template (aka Template Toolkit) and a form module like CGI::FormBuilder could be a great "super CGI" with the right amount of glue code and a light touch.
And a text search module like Kinosearch could be a great foundation for a first plugin.
Of course the exact mix of modules is rather inconsequential to me. I'll gladly trade DBIx::Class for CDBI or Data::FormValidator for CGI::FormBuilder or HTML::Template for Template if the framework is smooth enough.
|