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]


Reply via email to