On Fri, Apr 13, 2012 at 06:48:34AM -0400, Nic Zero wrote: > 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 > compatible. > > 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.]
..ah, yes..the community - that's the compelling part about CAP for me. I like this list a lot, for example. > > 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. I am less inclined to use something other than CAP proper, but Mojolicious looks interesting. Something about how much it hides is a little unerving to me, though. I have routes set up fine using CAP::Dispatch (which also supports the HTTP methods for the clean URIs. Beyond setting up the routes, I am not sure what Mojo gives me since I still have to implement my backend to push and pull data. It is a lot cleaner looking, but one thing that stands out to me are those templates in Mojo - out of the box, they seem way to powerful (I am a fan of super dumb templates). > * 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. Thanks, everyone. And thanks, Ron, for your efforts - I don't think any effort to improve things or to learn is time wasted. Most OSS projects out there are "one man" or "one off". I have a few myself =). Brett > > Happy coding, > Nic > > ##### CGI::Application community mailing list ################ > ## ## > ## To unsubscribe, or change your message delivery options, ## > ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## > ## ## > ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## > ## Wiki: http://cgiapp.erlbaum.net/ ## > ## ## > ################################################################ > > ##### CGI::Application community mailing list ################ ## ## ## To unsubscribe, or change your message delivery options, ## ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## ## ## ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## ## Wiki: http://cgiapp.erlbaum.net/ ## ## ## ################################################################