Well, one thing you might want to look at it support levels. Raphael
Manfredi (author CGI::MxScreen ) seems to not have a lot of
time to answer questions and he doesn't have a mailing list setup with
anyone else who can help in his place. I don't always get answers back
from him and certainly don't get them back quickly. For example long
ago, I asked him: "what will MxScreen do when you have to hit a screen
in the middle of the application cold? MxScreen seems to create a
state machine of multi-screen page flow with the assumption that you
start at the beginning and then always move either forwards or back
from there... people like to bookmark URLs and return and the fact
that mxscreen uses post data (i am reaching here, I have forgotten)
makes this common task impossible.
Besides that, when you talk CGI::MxScreen and
HTML::Mason you are talking two very different ends of the
spectrum. With Mason, you embed your logic either in your HTML page or
in a small perl-HTML "component" which you embed in your page. This is
what is known as the "inline" approach. This tight-coupling of Perl
and HTML would seem to make it difficult to change the look and feel
of a website substantially without losing all of the associated
logic. However, Mason advocates site industry-level success to the
contrary.
Even so, however, an unavoidable shortcoming of the Inline approach is
that it does not give the HTML designer WYSIWIG pages. Furthermore, it
robs the power of re-use inherent in programs such as Dreamweaver from
the designer and makes this a programming task. Thus for a web site
company which places emphasis on visual fine-tuning of pages with
close interaction between high-level management and user-experience
engineers, the Inline solution will hamper such workflow.
On the other hand, the Inline solutions do offer you a "one-stop-shop"
for any web application task you might want to handle - error
handling, common-look-and feel, re-use, sessioning, logging, and
caching all come right out of the box with either HTML::Mason
or HTML::Embperl and both of these products have very active
and very supportive and very large user bases. And, because both
products have been in development for more than 3 years, they are both
well-debugged and ready for critical system deployment.
A younger, but perhaps more open solution following the inline
development work cycle is OpenInteract. Again, the support
level is strong. This product is also a bit more open-ended. While
supplying all of the same features as either of the above, it does so
by building on major CPAN modules for each of its cornerstones. For
example, instead of a proprietary templating solutin, OpenInteract
uses Template Toolkit.
Turning to the "meta-html" solutions, with any of these, HTML page
maintenance by non-programmers (HTML designers) is 100% and the
solutions to templating are 100% non-invasive. The most mature product
in this stable is HTML::Template. However, it's maturity has
not led to a stabilization of feature set. Recently it added a small
pseudo-language for expression processing
HTML::Template::Expr and even more recently, it added a
Just-In-Time compiler HTML::Template::Jit which compiles
template to C language for 4x speed improvements. While the latter is
just a performance improvement, the former is adding to the extra
things you might have to learn when learning HTML::Template
HTML::Template also supplies a flexible set of caching options.
It has been around for at least 2-3 years as well and the base module
HTML::Template is most likely completely bug free.
However, as the HTML::Template docs say, it only does one thing and
does it well and fast. You will have to strap together from CPAN a
system for the other aspects of web application development. You might
choose CGI::Application for CGI page reuse (this module has
some surprising hypocrisy in its design. It boasts that it is
webserver and database server agnostic. Yet it is not agnostic with
respect to templating system - it requires HTML::Template. to my mind,
there is no need for a system for multi-modal page use to require a
particular templating system. This, coupled with lack of return emails
from the author make this a less-than-attractive solution for any part
of an open system). You will need something for logging
Apache::Session and so on and so forth.
The other recent entry into the meta-html templating world is my own
HTML::Seamstress.
And then you have your frameworks which have support for XML -
Apache::PageKit and AxKit.
And be sure to check my home node for what I believe to be a
comprehensive list of web application frameworks.