[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-httpd-dev
Subject:    Re: am I dreaming?
From:       Greg Stein <gstein () lyra ! org>
Date:       1999-03-27 1:00:12
[Download RAW message or body]

Thomas Reilly wrote:
>...
> We provide the source for this module but our users (particularly the
> windows ones) love us to provide precompiled DSO's.  Sure compiling
> the DSO with apxs is a one liner but a lot of systems don't have perl
> and precompiled DSOs allow us to to have servlets run on Apache just
> by installing our product and restarting apache.  A big win for the
> non-hacker crowd.

Fair enough. Quite true for most people... hacker or not. For example, I
prefer RedHat over Slackware simply because I'd rather spend my time
hacking than installing Slackware packages. I don't need to know the ins
and outs... I just want a system that works.

> When I first posted I was under the impression that these breaks in
> binary compatibility could be avoided and were just oversights on the
> part of the developers who understandably don't care too much about
> binary compatibility.  However its since become clear to me that
> normal healthy work on the server will break DSO compatability because
> there is no clean separation from the Apache core and the module
> architecture.
> 
> Until DSOs came about there was no need for such a separation.

Actually, you should amend that to read "modules". DSO is just a
particular option for linking them into the server. You can easily use
modules without making them DSOs.

>...
> 1) Add a new module architecture cleanly abstracted from Apache core
> meant for use by DSOs
> 
> 2) Make the current module architecture cleanly abstracted from Apache
>    core

3) Allow the module to determine whether it is compatible or not.

[ ObDisclaimer: I didn't come up with this :-) ... this option has been
mentioned before on this mailing list ]

If you had option (3), then you would be set. (3) is also very easy to
implement for Apache. A flag in the module structure would say "I
perform my own check, thank-you-very-much". The check could then be
located in the init() function.

Of course, there would still be a need for a "cookie" that says "my
module struct is of the correct form so that you can *find* the init()
function slot." Apache would always check that, regardless. Next, it
could check the flag on whether it will perform a full API check for the
module, or whether it will defer to the init() function.

This would leave you with solid compatibility from all API changes,
except certain kinds of "module_struct" changes.

I believe this kind of change could easily be done within the current
1.3 architecture, and quite probably in an upward-compatible fashion.
But that is "believe" .. I haven't investigated.

Cheers,
-g

--
Greg Stein, http://www.lyra.org/

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic