[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