Hello, I have been thinking about a reorganization of the Apache/Perl modules for a while, and have come to the conclusion that it would probably be a good idea. Please tell me what you think about this proposal.
What is the situation now? Currently, all mod_perl modules are, as you know, grouped under the Apache:: namespace on CPAN. We have luckily come to have many of them, which is of course a great thing. However, this array of modules has created a lack of organization which leads to problems when you're trying to find your way around the Apache/Perl modules on CPAN. We have Apache::Log* modules, many Apache::Auth* modules, a number of frameworks, content handlers, and more... Why do we need change? I'm not sure if everyone feels like me, but for me, the Apache:: namespace is very much like a sub-section of CPAN. We have all kinds of different modules, but the only thing they have in common is that they run under mod_perl. However, on CPAN everything is nicely (or atleast mostly) organized into categories, like HTML::, Text::, Devel::, etc... Why can't we have such an organization for mod_perl modules too? With the advent of mod_perl 2.0, we have the occasion to change. For those who have followed mod_perl 2.0 development, you will have noticed that mod_perl now uses many namespaces: Apache::, APR::, ModPerl::. Let's follow the good form! What do I suggest? Like CPAN, there is of course no written rule when it comes to module naming. However, at one point we have to decide on the unwritten rules, so that they enter our culture. This is why I suggest the following organization (which is, as I said, open for comments), based on the different modules available for mod_perl now. We keep the Apache:: namespace, but create sub-categories: Apache::Response:: for pure content handlers. Apache::Auth:: for Authen, Authz and Access handlers Apache::Type:: for PerlTypeHandlers (or the equivalent for mod_perl 2.0, whatever it is) Apache::Framework:: for Application Servers/frameworks (along the lines of Mason, Embperl, etc, if these want to use the Apache:: namespace) Apache::Log:: for log handlers. Apache::Devel:: for anything development-related (Apache::DB for example, with any others. Apache::Trans:: for PerlTransHandlers Apache::Config:: for configuration-related things. Apache::Monitor:: for monitoring tools (Apache::WatchDog, VMonitor, and maybe Apache::Status). and maybe Apache::Util:: for modules that aren't handlers but useful when writing apps (like Apache::Session). I suppose not everyone will agree with me on all these points, but let's try and focus and come to a conclusion here. Most of all, once we decide on something, it is important that future modules begin using these conventions: it's the only way to get it adopted. -- Per Einar Ellefsen [EMAIL PROTECTED]