Deploying Custom WebGUI code

Deploying code is a pain. You have to track dependencies, keep track of what code goes where for a particular deployment (if you are deploying to multiple targets), and manage versions. The model for managing this pain that I've been introduced to in my first couple of projects at Plain Black has gone something like this:

That works, but it runs into some problems.

A solution

Fortunately, Perl has a whole culture of tools built around solving these problems for me: CPAN distributions. I can version them, declare dependencies, specify install locations per deployment target, run automated tests just for my application, and keep all of my application components cleanly separated. With a little customization (either Makefile hacking for the brave, or Module::Build subclassing for the lazy), I can set up custom test fixtures (WEBGUI_CONF environment variable?), install WebGUI packages with special actions, and anything else that would bite me in a manual deployment scenario. Deployment is as easy as ./Build dist, copying the tarball to the target, running a configure script, and typing make install. With CPAN.pm, I can even automatically install dependencies!

I'm still working on (and thinking of a name for) a custom Module::Build subclass to handle common WebGUI-ish setups. ./Build install_assets, anyone? Stay tuned for some code, but you can start treating all your WebGUI applications as CPAN dists (and reaping all the benefits) on your own. Please leave comments or send me emails with feature requests for that subclass, too.