This has been my favorite web application framework, and the basis of much of my creative and professional work, since the middle aughts. The community (based around the IRC channel) is large, active and helpful.
I've been happy to see the project's leadership not shy away from having the framework adopt new community standards (e.g. Moose and Plack) after they come to prominence. I can see myself confidently continuing to use Catalyst for a long time to come.
Catalyst is a well-written MVC framework, however it is billed as the one-stop solution to developing largish web applications in Perl, but in my experience it's no panacea.
For some projects MVC may be a good fit, but for others it seems to be a hindrance. If MVC is right for your project, then Catalyst is almost certainly the MVC framework you should be using; but don't just *assume* that MVC is right for you. Investigate other options first.
For many projects, sitting directly on top of Plack without an intermediate framework may be a better option.
Excellent framework with little better than worthless documentation. The latter often assumes a level of knowledge or expertise approaching that of the catalyst developers with the result that one can waste large amounts of time trying to solve simple coding problems.
If one make the effort to unravel how catalyst works then using it is quite easy. However, don't get me started about the DBIx::Class object-relational mapper which, after several days of trying to learn, I completely gave up on since even its useless documentation states that using raw SQL is sometimes the only means of accessing the database in the desired fashion. I use Catalyst::Model::DBI to execute canned queries and experience no problems.
Regarding object-relational mappers in general, I understand the concept of representing blocks of related data as an object, and even to some extent, abstracting the interface to the data store so the latter can be changed if necessary. I question how often a web application data store changes in its life cycle, and how a web application developer can get away with with not having a mastery of the very simple SQL language in the first place.
I imagine if you are reading these reviews, you are new to Perl, otherwise you have already come across what in the past few years has become the Perl-standard MVC framework.
Do not be put off: check CPAN for the step-by-step tutorials, which are clear, well-hyperlinked, and come with extensive samples, which show you how to build a Catalyst web-app from the bottom up.
If you have used Spring or Ruby or pretty-much any other implementation of the MVC pattern, you should have a functioning Catalyst application with ORM, authentication, authorisation, and session-management within five hours.
Catalyst is the current industry standard what comes to Perl MVC frameworks. Just check the number of plugins available on CPAN: just overwhelming! You really can't go wrong with Catalyst if Perl and MVC is what you need.
Catalyst is great and I like to give some reasons for my statement.
I'm not coming from the world of web development and starts just some
month before to develop my first big web application. A lot of people
tolds me that I should use Catalyst, but because I read a lot of
another statements about Catalyst ... a poor documentation and that
it's hard to understand, I hadn't the heart to give Catalyst a chance.
Today, after the long way to read Catalyst's documentation and to
needle some people on IRC with a lot of questions... I can say that
all time I spend on it is not a lost time.
Catalyst is the new frontier of web development: it's easy, productive, elegant and fun.
It really pays to spend some time learning the philosophy of Catalyst and MVC, and the use of the wonderful (somehow) Catalyst-related modules such as DBIx::Class and HTML::Widget. Your way to develop web applications will be shaken from the roots, and you'll be able to focus on what you really need to do, not on always-the-same tasks and bloated-code-fight.
Catalyst is a very nice framework because unlike many other framework there is lots of emphasis on reducing bloat, keeping things clean, reusable, and flexible.
This means that Catalyst is a good choice for the long run, because chances are you can extend it and fix it more easily than more tightly coupled frameworks.
It's ease of use and arsenal of plugins and components mean that most of the time what you want has already been written, letting you focus on the code that is unique to your application, and thus cutting down development time.
Bias note: I participate in Catalyst development, but I didn't when I first realized these things =)
Catalyst brings some serious web development mojo to Perl. For a long time I stuck with Perl because of CPAN but thought other languages provided better frameworks and were leaving Perl behind. No more with Catalyst.
Catalyst is a MVC web framework designed to handle all the common web application functionality and let you spend your time on the application as opposed to the plumbing. To achieve its goal it combines abstraction with a logical architecture to produce a robust, plug-and-play, component-based platform for developing web applications.
This is supported by several key benefits:
(1) MVC architecture: Perhaps most among Perl frameworks, Catalyst supports a strong separation of concerns according to the MVC method. This allows large web applications to be built while keeping the code organized and easy to understand.
(2) Object/component management: Large Perl web applications tend to grow into a collection of many parts whether those parts are objects, functional modules, or simply a large collection of scripts. Often it is up to the developer to decide how to connect the parts. Catalyst combines multiple-inheritance, component auto-discovery, URL-dispatching, and view forwarding to do this for you. Catalyst handles a lot of basic design and architecture that other frameworks require saving a huge amount of time both in initial development and maintenance when someone has to understand and modify the code.
(3) Engine abstraction: Support for CGI, multiple persistent Perl environments and multiple web servers is built-in. Often upgrading from mod_cgi to mod_perl requires a certain amount of pain. And while converting a web application from mod_perl 1.9x to 2.x (incl. apreq, etc.) is manageable, why bother when Catalyst will use both transparently? Need more than Apache/mod_perl? Catalyst will let your growing requirements use the lighttpd and Zeus web servers. Abstracting away engine support will save a lot of time when planning for growth and when making the transition.
(4) Component abstraction: For common functionality, Catalyst attempts to provide a unified API to multiple CPAN modules in the areas of ORM, templating systems, session management, authentication etc. This removes a lot of the effort from switching from one option to another as often you only need to learn the Catalyst API making it easy to change component options and come up to speed on a project that has made different component choices.
(5) Flexibility / TIMTOWTDI: Unlike some frameworks, if any part of the system doesn't suit your needs, there are other options available or you can make your own. While Catalyst recommends a certain configuration and component selection, you are free to customize it to fit the projects and/or developers particular needs. In certian situations, being able to choose one way of doing things over the other may dramatically increase productivity.
Some caveats: Catalyst can run on mod_cgi but a persistent environment is recommended for production. Documentation can be improved.
Already, I can't imagine building a complex Perl web app any other way. Thanks and kudos to the Catalyst team!
Really surprising. I'm used to packages like this (that do lots of things) being tricky to install. Catalyst went right in without a question or a dependency to follow (might be I just happened to have everything underneath; OS X 10.2). Had the skeleton of an app set up and running with the built-in server in 30 seconds.
This is similar to things I've been doing on my own--URI dispatching and such--but *so* much better rounded out and easy to extend; reuse. The idea that what I'm writing for a vanilla .cgi is all set to flip over to mod_perl at any time is just flabergasting. I haven't finished anything with Catalyst yet but if it continues to be this slick I'm going to rewrite three websites with it.
With CDBI and TT underneath, web development starts to feel more like recess than work.
This is by far the most useful and easy to use MVC Framework, I've ever seen...
It is View and Model agnostic (to suit your habits), simple, powerful, practical to use AND easy to extend.
All I can say is : Just give it a try...
For years I've been searching for the "Holy Grail" in web frameworks in Perl.
I started to look at Maypole, but soon heard about Catalyst, and I just haven't looked back since! The code already feels mature, and shows no signs of instability or unnecessary feature creep. It's only a matter of time before Catalyst becomes the de facto MVC for perl web development.
Catalyst is a wonderful framework for quickly building complex web applications. It removes all the mundane tasks of handling parameters, file uploads, URL structures, database models, and templates, saving countless hours of development time. It's extremely flexible: you can follow the standard method of using Class::DBI::Loader and Template::Toolkit, or use your own database models and template library.
Numerous handy plugins make things even easier to use. 10-line login screens, 5 line form validations, built-in sessions, and so on, it doesn't get much better than this.
Another cool feature is the numerous different "engines" you can run your application under. The same code can run everywhere from a shell script or CGI script for development, to a screaming-fast 100% mod_perl app for production.