I'm going to chime in, as someone working on a suite of modules that are
intended to eventually work with apache 1.x and 2.x. First, I agree with
this:
On 12/31/04 2:27 PM, Adam Kennedy wrote:
> For the moment, I'm asking just that the release of mod_perl 2.0 be put
> on hold until this problem, and it is most definitely a show-stopper of
> a problem, is resolved in it's entirety. And to the satisfaction of both
> the mod_perl developers and the perl community.
Next, I'm going to put in my vote for a new namespace, be it Apache2:: or
something else.
As has been pointed out, the APIs of mod_perl 1 and 2 really aren't
compatible--nor should they be. Apache 2 (the http server) took the 2.x
change as an opportunity to Do It Better, and so should (and has, for the
most part) mod_perl 2.
Even as someone writing several modules that will need to work with both
versions of mod_perl, I'd still rather have a clean split. I can abstract
things easier (based on $ENV{'MOD_PERL'} most likely, but many mechanisms
are possible) if there's a clean namespace split. Let me unify my API.
I'll hide the Apache:: and Apache2:: (or whatever) differences behind the
scenes.
As for third party Apache:: modules, let them eat port. I'd rather see them
make Apache2:: ports that take full advantages of the brave new world of
MP2. And I'm sure many (most?) authors would like a chance to revisit their
APIs anyway.
Porting while maintaining API compatibility and staying in the same
namespace seems like work to me. Porting to Apache2:: and being able to
clean up the sins of the past and do cool new stuff in the process seems
like fun. Call me crazy, but I think this is a common view among
programmers (in the case of 3rd party Apache:: modules, whether they're the
original authors or not).
Finally, I don't see a proliferation of Apache2_2::, Apache3::, etc.
namespaces as a real threat. The policy is simple: CPAN namespace == an
API. If apache/httpd 2.[2-9] or 3.x requires or would benefit from a new
mod_perl *API*, guess what, then you get to pick a new CPAN namespace. If
not, you can continue to use Apache2:: (or whatever) regardless of how
apache/httpd server changes behind the scenes.
This line of thinking eventually leads to another simplifying decision: the
mod_perl API versioning and branding should be divorced from Apache
Foundation branding and versioning where possible. If Apache 3.x doesn't
warrant mod_perl API changes, then there's no reason the Apache2:: namespace
can't serve it. Ah yes, but the "Apache" name is in both places, so that
argues for maybe ModPerl::, ModPerl2:: or MP2:: or whatever instead of
Apache.*::.
My summary:
1. Hold off on the offical release of mod_perl 2 until this is settled.
2. I think the simplest solution is also the cleanest and the most
forward-thinking, even if it is more work: a new CPAN namespace for mod_perl
2, and a divorce of mod_perl branding and versioning from the Apache
Foundation's branding and versioning.
-John
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html