water has asked for the wisdom of the Perl Monks concerning the following question:

How mature is catalyst currently?   (Sept12, 05)

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'.
Re: Catalyst?
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.

      Class::DBI does not work at all on tables without a primary key. If you have such tables and try to use them with Class::DBI, you will run into problems.

        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.

Re: Catalyst?
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:

    • Many choices of server engines (Apache 1.3, 1.9 and 2.0; FastCGI; SpeedyCGI; etc.), models (Class::DBI in different flavors, Tangram, the new DBIx::Class) and views (Template Toolkit, Petal, Mason, etc.), so you're not locked into one way of doing things.
    • Heavy use of caching makes it very fast.
    • Simple plugin API. Simple enough, in fact, that even I could write one. Through multiple inheritance via NEXT, plugins automatically become part of the application's context, which is the instance of your application that gets forwarded around.
    • Helpful developers and user community. The mailing list is active, and I've gotten lots of info by logging #catalyst (irc.perl.org) and grepping those files for what I need. (I don't get to talk much in #catalyst, as I'm usually asleep when the Catalyst Cabal are awake.)
    • The standalone server. I love that I can just say script/myapp_server.pl, and the standalone server will fire up, and I can watch the logging right in my terminal, then test the application from my browser at http://localhost:3000/. This has really sped up the development cycle for me.

    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.

Re: Catalyst?
by phaylon (Curate) on Sep 13, 2005 at 10:03 UTC
    I've built an AJAX-powered CMS with Catalyst, about 6_000 to 8_000 loc without templates and have to say it was fun.

    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