[cgiapp] CGI::Application status update from the maintainer
Mark Stosberg
mark at summersault.com
Fri Sep 7 23:36:32 EDT 2012
Richard,
Thanks for the feedback.
> But since C::A first appeared we now have newer frameworks like
> Catalyst, Mojo, and the more recent Dancer (also in the process of
> being rewritten to embrace the Moose API). Given that Ron has already
> forked C::A I wonder if there is any point embarking on another?
>
> Accepting that Catalyst is not to everyones taste, and Dancer may not
> yet have the recognition and presence that Catalyst and Mojo/Mojolicious
> have as web frameworks, I'm wondering what advantage a revamped C::A
> under a new name will provide.
I think each has it's own strengths. I looked at Mojo particularly
closely, contributing doc and test patches along the way as I studied
it. ( I was surprised to find that my contribution is still third
highest by number of commits, although I haven't contributed since 2009:
https://github.com/kraih/mojo/graphs/contributors ).
In some ways their is convergance towards PSGI and Moose. I think that's
a good thing, because there is now more re-use between frameworks.
There's also more competition now among "lightweight" frameworks.
Besides the one you mentioned, there is Web::Simple and Amon2, among
many more less well known frameworks.
I think CGI::App's basic design with stages and callbacks is worth
carrying forward. I think a lightweight impementation of the Moose API
is also worth supporting in the core, which is absent in Ron's fork.
Finally, I think quite a number of people deployed CGI::Application and
some of it's many plugins, and some of them like me would like a way
forward to modernize their systems without a complete rewrite.
> One essential item for any web framework is a competent dispatcher,
> something I think compromises Dancer v1 (hopefully addressed in v2),
> essential for an application with a large number of run-modes (or
> equivalents). C::A::Dispatch or a core equivalent is a must IMO. I'm not
> sure if that is what you had in mind with "global dispatching".
I agree that dispatching has been central to web frameworks.
By "global dispatching" I mean centralized dispatching-- having one
place in your app to see all the URLs and what they app to. I call the
default Cataylst style "local" dispatching-- placing the URIs that
encompass the system next to the methods they map to.
I like the design of CGI::Application::Dispatch::PSGI and don't
currently have specific intents to change it.
I've come across one other routing solution that appealed to me.
Router::Simple has a nice OO syntax that's similar to what we use:
https://metacpan.org/module/Router::Simple
Amon2 then provides a nice DSL wrapper around it, so the resulting
dispatch entries look like this:
package MyApp::Web::Dispatcher;
use Amon2::Web::Dispatcher::RouterSimple;
connect '/' => 'Root#index';
connect '/my/' => 'My#index';
connect '/my/:action' => 'My';
https://metacpan.org/module/Amon2::Web::Dispatcher::RouterSimple
> Still, best wishes for C::A mark II if you decide to go through with it,
Thanks!
Mark
More information about the cgiapp
mailing list