[cgiapp] Announce: CGI::Snapp::Dispatch V 1.00 etc, with PSGI support

Nic Zero niczero at wow.com
Fri Apr 13 06:48:34 EDT 2012

I too have recently rewritten CGI::App and most of its core plugins.
That was not my original plan.  You may remember recently I was
recommending people make use of class-level initialisation and
only do object-level initialisation (ie per cgiapp instance) for those
things that can't be shared.  However, when I looked into it more
deeply (as part of a separate task) I found that support for this
within plugins is quite sketchy and unreliable.  CGI::App itself
doesn't really support the idea in any clear way.  I also thought
that rearranging the code inside CGI::App would help me and
others understand the flow better.  So I started to refactor.  But
then I encountered code that is convoluted, for example a six-
line subroutine that was much clearer in one line.  So I started
to rewrite.  And then I decided the whole thing would be easier to
code against as well as easier to read if I made my Stash plugin
be used within CGI::App itself (much like Catalyst & Mojolicious).
So then I realised I was departing from being CGI::App

That's where that story ends.  As soon as you've broken
compatibility you've distanced yourself from the CGI::App
community and your one-man project is dead.  My time wasn't
wasted cos I then refactored again so that the good bits are
separate extensions that can be used with CGI::App or
Mojolicious.  [They're close to being published; tests need to
be improved and documentation needs to catch up.]

I thought that my micro-framework would still fill a niche: those
cases where you want the functionality of Catalyst but with a
1 MB du footprint.  Unfortunately those smart people over at
Mojolicious had a fabulous 2011 and can do much more than
my framework and still sit inside 1 MB.

So if you're still reading, my strong recommendations are:
* Respect CGI::App for what it is.  If you need more, go see
Mojolicious::Lite and Mojolicious itself.
* Ignore people like Ron & me who are tempted to do rewrites
that will never have the community that CGI::App grew.  Two
years from now both of our frameworks will still contain more
bugs and fewer working examples than CGI::App.
* Ron, if you do continue with Snapp, try borrowing some of
the smart ideas from Mojolicious::Lite, but
* like me, I suspect you'll fall in love with Mojolicious and
Snapp will just be an amusing memory.

Happy coding,

More information about the cgiapp mailing list