I have been using CGI-Application in my projects for over 2 years now and never had I any reasons to complain. Some of the things which have made me stick to this framework are 1. Brilliant documentation, 2. Easy intuitive interface 3. A large number of plugins which address almost every conceivable requirement. 4. A very helpful mailing list.
CGI-Application seems to hit a very sweet spot between a lightweight framework and a complex system where you have to bend over backwards to perform anything non-standard. Good job.
Great framework for small CGI webpages. Very scaleable; can even work well in a non-persistent environment. I wouldn't recommend it for large projects, but I have worked on a large project that used it and it was mostly fine.
I can't recommend this module higher, it has just the right mix of high and low level capabilities to appeal as a powerful advance over CGI.pm and a light, nimble alternative to heavyweight frameworks such as Catalyst. It also boasts a number of excellent plugins to make it easier in specific cases. The runmode concept is awesome and really provides all you need in terms of dispatch (though I do use CGI::Application::Dispatch 98% of the time with this, it doesn't take anything away from cgi-app). The quick startup time and low memory footprint compared to some other frameworks make it work for me in situations where others just can't go. The direct access to the CGI object is also a plus.
I think it has to be admitted that this is a module for "hard core" or "old school" web developers rather than those who want to get up and running with the latest fad as quickly as possible. It offers the following advantages over new school approaches:
1.) It is sufficiently low-level that you can feel you really understand what is going on.
2.) It is very lightweight so it works well for shared hosted websites using suExec to protect the various clients from each other. (If I was writing a website for a large company on a dedicated server where mod_perl was available, I am not sure I could win a case for CGI::Application.)
3.) It works with a lot of modules and for every module that it works with there are one or two you could choose from.
The big disadvantages are as follows:
1.) There are a lot of details you need to deal with. Generating sitemaps for example.
2.) It is not clear which related modules are active and good.
3.) I don't believe that currently there is a good "model" component.
I've been very happy using cgiapp for at least 5 years, since I interviewed with Jesse and he asked me to use it to build some sample apps. Using the cgiapp approach, you can build web apps with discrete and specific functionality encapsulated in separate methods of your cgiapp subclass for each run mode. It's a must-have for web developement for me, and works great with mod_perl.
Even in the wake of more complex frameworks like Catalyst, I find myself using CGI::Application all the time. It accomplishes a common (and usually painful) task, and does it quickly with a simple interface.
The documentation is excellent, as it consists of mostly code examples. A good thing since many of us programmers (myself included) seem to learn better by doing.
If you're looking to build the next great content-management system or some other massive and highly complex application, you may need something more complex, but if you just want to build a quick, small, simple, stable application, this is the right module.
I haven't worked with many web frameworks and actually, CGI::App is my first, but I just haven't had the need to move to anything else. This framework gives me a LOT of control and there are scores of Plugins that provide further functionality when & if I need them. Great mailing list, great people and great IRC channel (#cgiapp on irc.perl.org). I've coded a ton of web apps with cgiapp for QSR Magazine & Fine Books Magazine as well as some internal stuff. You can also do the fancy AJAX stuff with cgiapp, too ... it really is awesome stuff and I love it to pieces! :)
I recently had a need to build a complex, multi-mode CGI application,
and almost started from scratch until I remembered this module. Well
done, complete documentation, clean integration with HTML::Template
(or Template toolkit, with CGI::Application::Plugin::TT), and useful
examples, this module is an excellent example of what all CPAN
authors should strive to produce.
Excellent module for separating the individual components or modes of your CGI application into discreet and easy to handle subroutines/methods. It also handles dispatching of POST/GET requests for you and in general gives you a solid OO framework for creating applications. The framework is also pretty easy to subclass from and includes hooks for templating systems like HTML::Template and Template-Toolkit (through the plugin interface which also allows for interfacing with other modules like CGI::Session, DBI, etc.).
Whenever I started a new CGI throwaway at work, I began by taking one of my old scripts and stripping everything but the setup, teardown, and dispatch table. By the time I was frustrated enough to write it all into a module, though, I remembered the perl.com article on CGI::Application and gave it a go. Not only did it do everything I needed, but it did it better and with a few features I never realized I needed. With a little subclassing, my usual CGI skeleton went from half an hour to ten seconds. This module makes my life easier.