John Siracusa


Rose - A complete web application construction kit.


    use Rose;

    print "This is Rose version ", Rose->version, "\n";


Rose is a work in progress. It is a suite of modules used to build web applications in the mod_perl environment. Support for Apache 1 and 2 is planned.

The Rose suite is broken up into several components. This module ( lists all the other Rose components as prerequisites. Bundle::Rose is another way to install the entire suite.



Returns the version number of the Rose suite. This version number will not be meaningful until I decide on a policy for suite versioning. Until then, ignore it and simply download the latest version of each Rose::* component. The easiest way to do this is to install Bundle::Rose.


Rose is made up of the following components:


A simple object base class and method maker.


A URI object built for easy and efficient manipulation.


Central location for all Rose-related DateTime utility functions and wrapper objects.


Object representations of HTML tags, particularly HTML forms and fields.


DBI abstraction layer.


Create and manipulate object representations of database rows.


Perl module configuration system.


Simple Perl build system for web applications. (Unreleased)


Web application framework. (Unreleased)

As you can see, a lot of these components have not yet been released. I've decided to release what I have so far because I think Rose::HTML::Objects may be useful immediately, even without any of the unreleased web application code.


Here are the ground rules for the Rose suite:

  • All APIs are subject to change until version 1.0. I will try to avoid breaking things unnecessarily before then, but I make no promises.

  • If it is not documented, it doesn't exist. The Rose suite is filled with classes that exist solely to factor out common functionality in the public Rose modules. Although these modules may look useful, I reserve the right to change or eliminate them at any time in any version unless they have POD documentation. If a module has no POD, do not try to use it.

    Similarly, if a function or method is in a public module but is not documented in the POD for that module, don't just assume that I forgot to add it. Undocumented methods are undocumented for a reason, and are subject to change or removal at any time, in any version. If you feel like you need to use the method, email me and I'll consider making it part of the public API.


To report a bug, email the author or use CPAN's bug tracker.


Source code, mailing lists, and a wiki are available at the Rose project web site:


John C. Siracusa (


Copyright (c) 2008 by John C. Siracusa. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.