Game over. We lost. Nothing to see here, move along.

Ben Evans ben at
Fri Nov 18 12:40:58 GMT 2005

On Fri, Nov 18, 2005 at 11:31:04AM +0000, Dave Cross wrote:
> David Hodgkinson wrote:
> > 
> > Taking *nothing* away from Catalyst iteself or the presentation  which, if
> > you speak the language, was great. But for those who don't it was all  
> > features and no benefits.
> My notes, if anyone's interested.

Good notes, Dave. 

I've been meaning to write up my concerns about this topic for a while 
now, but have been sitting on my hands and waiting for my initial 
irritation to subside.

I've now tried three times to get a Maypole app up and running and have failed
each time, taking 3-6 days of wasted effort each time.

The last case was pretty straighforward - a set of SOAP services, backed by a
database are moving towards release. The DB now needs a set of human 
operator enq / maint screens, which should be web-based.

If you believe the hype, this should be meat and drink to a web scripting
framework. If you've believed the hype and bought the T-shirt, you'd hope
that you'd get basical minimal views over single tables by a clever URL
scheme, one template and some database introspection. 

If you've believed the hype, bought the T-shirt and drunk the Kool-Aid then
you might even think that your junior programmers are going to be productive
pretty quickly.

For five days I struggled to make this thing even show me a view of a single
table. Five days of buggered call stacks so that I can't even see where
the error is coming from, no documentation on what gets called when so I can't
figure out which bit of magic is the cause of it.

No case studies between "Hello World" - which doesn't even use an external
database connection so you have to figure out where the hell the connect() call
goes - and a fully fledged app.  

Five days of dealing with cutesy error messages like "This is an abstract method."
Sweet. Which One Are You? I shouldn't have to be rooting through the source
of to see which method occurs on that line number. Here's a hint - 
languages which actually have abstract methods worth speaking of are able to
detect that sort of error at compile time.

Five days of being stuck in a maze of twisty-turney Class::DBI::Foo subclasses,
all alike and yet all subtly different. Many of which do not play nicely
with Sybase, etc.

In the end, I pulled it. If I have wade that deeply in to get an application 
which will display a template rather than 500 (I gave up on making it actually
get anything out of the database - it was a bridge too far), then the juniors
had no chance. 

I went back to using a homegrown MVC codebase I keep kicking about (use the 
Adapter pattern to hide the difference between CGI and Apache::Request inside
the View object ; make a non-OO dispatch handler inside the Control which 
decides which control method to call based on an incoming form parameter ; 
use DBI rather than CDBI because I no longer trust CDBI to talk to Sybase
properly ; use simple TT paradigms, because they're easier to teach).

In short - nothing that wasn't already part of the dev experience in 2001-2.

The caveats are pretty obvious: Sybase is nasty, Catalyst is not Maypole, etc.

But I'm getting pretty close to just jacking it all in and recommending JSP
for all future web development. The learning curve will be steeper to begin
with, but in the end, there are more resources, more support and the key 
risk to projects I'm on will be much less.


More information about the mailing list