We haven't even started the lynch yet (though I'm expecting to experience one at the comments), we're just starting.
What does a web developer really need in a serious system? First of all, a way to CRUD data (Create Read Update Delete) online - usually because you're writing a small CMS engine for someone or you don't like working with SQL directly to enter huge blobs of text. Makes sense. None of these MVCs have it. And why should they? They are MVCs only, not CMS programs. But.. this really is the first thing (and usually, the most) I (and most web programmers) really need.
Catalyst itself does not provide a lot of things because it goes after the concept of Perl of write another extension to do what you need and then just mix them all together. I love that, I really do. I love that if I want to do some nifty socket stuff, I just use it (and if it's not there, I install it through CPAN) unlike in PHP where you have to COMPILE SOCKETS IN THE FSCKING BINARY OMG! Then again, perhaps that's there's a lot of CRUD options which none of them work well enough for me or anyone else I personally know. Perhaps me and the people I get to meet are all idiots, but.. perhaps not.
So, when we look for something to do CRUD. We have:
What all of these (and the rest of the *CRUD* modules on CPAN) have in common is that they are either over documented - meaning there is so much documentation you don't even know where to begin and have to put aside a week or two or three to read and experiment - or under documented, which is usually the case. I still don't understand why developers figure that writing the name of the method and the purpose of it in one line is enough. "Sure, I get it now! It's so obvious!"
It's worth noting that many of them didn't work for me, and I have really tried. One even refused to work with a simple DBIC schema, but ONLY dbdesigner4 files. WTF?!
It all started when I wanted some CRUD. At first I started writing it. Then after showing my girlfriend a part of mjd's awesome lecture on Red Flags, I figured I shouldn't repeat myself, so I tried to write generic CRUD functions but stumbled across some inheritance issues with FormBuilder so I went over to #catalyst to ask for some advice. The advice given was to try other form building modules. While I checked FormFu (underdocumented IMHO, but seems like worth a try), I was tipped off on HTML::FormHandler which is basically a Moose (love Moose) wrapper to handle the form logic, and has a small (yet extremely ugly) form rendering option. This, funny enough, was the only JFDI I've tried yet with all of these (and I've tried over 10, no kidding). All the rest are more than 30 lines of code or 30 piles of documentation to understand, or better yet, a few one liners that tell you NOTHING. With HTML::FormHandler, I got a simple CRUD up with just a few lines, expressively and easily. Finally!
However, my life is still not easy. Since HTML::FormHandler is so simple it's missing a lot of things, and I'm pretty sure bugs are still lurking (as in any software - as Steven Little notes). Now I have to write my own abstraction layer in order to allow CRUD for every possible controller that I want without having to replicate the code + minor differences between them. Hopefully it will work. Perhaps I'll have to patch some things.
Why isn't there any standard module that JFDI?! The greatest language in the world, and we can't have a database web simple and working interface. Woe is me.