[Catalyst] Catalyst, MVCs and other MVCs
Adam Clarke
adam.clarke at strategicdata.com.au
Tue Nov 4 06:56:51 GMT 2008
Hi Jacinta,
On 04/11/2008, at 2:25 PM, Jacinta Richardson wrote:
> If anyone has anything they'd like to share about Catalyst vs Jifty,
> Gantry,
> CGI::App, Maypole, Mojolicious etc, I'm certainly open to insights.
> I don't
> have enough time to learn all of these frameworks properly so I'm
> very dependent
> - at this stage - on information from the users and creators.
I don't have huge insights but I'll add those that I do. Several years
ago we informally reviewed CGI::Application, Maypole and (a bit later)
Catalyst. We gave Jifty a quick look but its philosophy of one-true-
way scared us off a bit. We put it on our 'wait and see' list but
haven't felt the need to look at it in detail again yet.
When we gave Maypole a go and found that the scaffolding stuff
provided a great 10 minute 'wow that was easy' experience but in the
longer term got in the way. We tinkered with the resulting code to
make it work the way we wanted but worried that we would get stuck
with ageing versions of Maypole installed because our modifications
wouldn't work with the next release. Our assessment was that there was
a 'Maypole Way' and if you didn't like it you were in for extra work
at implementation and extra problems during the application life-cycle.
As a result we didn't pursue Maypole for any real projects. In
addition, Catalyst appeared on our radar and our initial impression of
Catalyst was that it was very much inspired by Maypole but was
intended to address the kinds of concerns we had about it. People
seemed to be deserting Maypole for Catalyst at that time. We decided
to keep an eye on things.
CGI::Application seemed nice and light weight. We used it in a number
of projects at the same time as we evaluated Maypole. After a while we
noticed that on every job we added our own config handling code, and
session handling code, and dispatch handling code. In addition we
didn't really like HTML::Template which was the de facto CGI::App
templating standard at the time. I assume ours was a common experience
since a long list of plugins and modules appeared adding these
standard capabilities. We replaced our custom code with a standardised
subset of them (including one that facilitated using Template Toolkit)
from various authors.
At this point I took another look at Catalyst and it was immediately
clear that all the add-on modules we used for CGI::Application
projects were effectively included in the core of Catalyst so we
decided to evaluate it further. Our first experiences of trying to use
it were quite frustrating - there were zillions of dependencies to be
met and this could take a fair bit of perseverance since they would
often fail to install for reasons which were difficult to determine. I
believe this situation has improved significantly. The documentation
was also lacking but this situation is better now also. There are many
more examples available and the book (http://www.packtpub.com/catalyst-perl-web-application/book
), while not perfect, is a valuable learning tool.
A naive comparison of Catalyst and CGI::Application dependencies made
Catalyst look positively bloated and CGI::Application attractively
svelte however this comparison was unfair - once you looked at all the
CGI App plug-ins and add-ons we had accumulated the difference was
nowhere near as stark. It was also seen as advantageous that what we
considered to be a basic web application stack was distributed and
tested as a unified release rather than haphazardly across a loose
federation of 'third-party' modules as with our use of CGI::Application.
Today Catalyst is our default web application framework since we have
found that it provides the bits of standard infrastructure we had
previously (re-)written each time or cobbled together from disparate
sources and it does this without unduly restricting our capacity to
find more than one way to do things. We have successfully glued
existing Class::DBI and Alzabo ORMs into our Catalyst apps and have
been more than happy using DBIx::Class (the de facto Catalyst
standard) for new projects.
I hope that my very unscientific brain dump is of use.
Cheers
--
Adam Clarke
More information about the Catalyst
mailing list