water has asked for the wisdom of the Perl Monks concerning the following question:
Anyone have observations to share, praise, or warnings about it?
janitored by ybiC: Fixed borken link to http://catalyst.perl.org, and also retitled from one-word-title-hinders-site-search "Catalyst".
|Replies are listed 'Best First'.|
by moot (Chaplain) on Sep 13, 2005 at 02:35 UTC
've been using it for a couple of projects at work, as well as some things of my own, for about a month or two. Overall it's a neat MVC implementation, but I've found that if you want to step outside the catalyst box, you can run into some problems.
For example, I like to use the in-built apache/mod-perl authz and authen handlers, but catalyst has its own way of handling authz/en (probably because it is not tied to being run under apache - fair enough, I suppose). It took me a while to figure out how to let mod_perl auth handlers take care of user authentication without catalyst getting in the way.
Also if you are using the catalyst-provided CDBI model kit, you'd better make sure all tables in your database have a primary key defined. I had to bypass the Catalyst::M::CDBI abstraction and use Class::DBI directly for a couple of tables that had no such key.
Overall though it has speeded up development for some projects that might otherwise have taken a lot longer - I was able to put together a new application that ties together three disparate data sources spread over two servers, in a little over three days, including requirements gathering, initial design, test creation, and coding. It's not complete, but I doubt I'd have experienced that sort of development speed had I not been using catalyst.
Ah, I should have been clearer. The default Catalyst::Model::CDBI class attempts to load *all* tables (using Class::DBI::Loader), which includes those without a primary key. Although I could have passed it a regexp of tables to include, that would soon become cumbersome. Since I only needed a few tables anyway, and they are all read-only (for this application), I bypassed C:M:CDBI for the tables I'm using.
Sorry for any confusion.
by mrkoffee (Scribe) on Sep 13, 2005 at 05:59 UTC
I'd say it's pretty mature, in usability if not in chronological age. The whole project is less than a year old, having started off as an offshoot of Maypole, so it is kinda young. The API has been pretty stable since around late April, though, and the framework is under active development.
I've been using Catalyst for a couple work projects, and it's been quite stable and very fast. A few of the many things I like:
The documentation started out a little sparse, though this is mainly because most of the core developers are non-native English speakers. Lately there's been more and better documentation, due in large part to the wiki. The content there gets regularly incorporated into the docs, and the developers are always accepting documentation patches.
For me the learning curve was a little steep, but mostly for good reasons. I had been building old-style web apps--with business logic, database access and presentation tightly coupled--for so long that I needed to un-learn a lot of habits while wrapping my head around the Catalyst/MVC way of doing things. Catalyst is also great at pointing you to some of the best CPAN modules to use for web development, so I spent a lot of time picking those up.
by phaylon (Curate) on Sep 13, 2005 at 10:03 UTC
I especially like the easy PlugIn mechanism. If I needed functionality that acts deeper in the guts of Catalyst and not in application-level, I just wrote a (reusable) plugin. Other +'s I found:
- Really fast development
- Applications are easy to refactor
- codeparts easy to reuse.
- Many Plugins and an easy plugin-mech so it's mostly not a big deal to write a plugin around a needed module.
- Understandable sourcecode
- fast and active developer-community
Ordinary morality is for ordinary people. -- Aleister Crowley