Justin Erenkrantz wrote:
On 2/15/06, William A. Rowe, Jr. <[EMAIL PROTECTED]> wrote:

The second major change to be made is driven by the httpd-2.2 proxy framework.
Because all applications are in effect proxied from the front end server, the
fit of mod_proxy_aspdotnet should be self-evident.  However, mod_aspdotnet is
designed to be tightly-coupled and run in-process with the server, and migrating
the code from a 'handler' to a 'proxy endpoint' is a pretty obvious move.  The
module doesn't change.

How does that compare to what fastcgi / mod_execd would do?  It seems
somewhat similar at first glance.

Similar.  The ASP.NET framework runs in-process inside of the httpd worker.
Right now, we hit mod_aspdotnet as a handler; there are a couple concepts to
understand first;

  System.Web.Hosting
    |  This is Microsoft's ASP.NET interface, which we load at startup and
    |  invoke its methods to register hosted applications from unmanaged C++.
    |
    \--> Apache.Web.HostFactory
    |         Proliferates our Hosts into System.Web hosts, from unmanaged
    |         into .NET managed space.
    |
    \--> Apache.Web.Host [implements System.Web.Host]
    |         This object is our view of the ASP.NET Application which speaks
    |         in the System.Web.Host interface, to set up each and every hosted
    |         application space.  Think similar to an httpd vhost.
    |
    \--> Apache.Web.WorkerRequest [implements System.Web.SimpleWorkerRequest]
              This is the object that we create to pass into System.Web.Hosting
              when a new request arrives, and is queried for all the arguments
              and environmental aspects of the incoming request.

As a proxy framework module, the big distinction is that we wouldn't preassemble
the request to proxy, but instead we would create our Apache.Web.Request, and it
would interrogate the httpd module as needed to satisfy the ASP.NET engine.

A third major change that could be made is integration with mono, this precludes
using MS C++ (using C# plus C code instead), using the pinvoke API which would
be a  larger module (doing the same thing).  Obviously the mono project already
has the mod_mono module for doing just this, and that connector can continue
to evolve in their code base or here.  I have no opinion one way or the other,

Do we have any contacts within mono that we could use to see if their
developers would be interested in participating in a mod_mono-like
solution here?  If not, then there's no reason to force collaboration.

I bring it up only that if approached, we are receptive, and have no plans to
initiate any sort of action here at this time.

and have little interest in that development myself although I would gladly help
facilitate such a contribution and participate in it's review and long term
care.  Note that in this case, we should abstract the C# pinvoke code to consume
MS's API, and any tangential issues with compiling it against and running it
under mono is left to the user.  [The pinvoke entry points are the same IIUC.]

So, the code would work for MS's API and Mono's.  But, if there's no
interest from Mono folks, then it's just pointless busy work.

Bingo, no reason to start the third possible change unless some mono developers
said 'hey!  that's how we would rather integrate!'  Until and unless that
happened, mod_aspdotnet would be expected to stay pretty quiet.  It works.

For the most part, mod_aspdotnet is just 'done'.  Most of the authors on the
list are users, and in fact most of the feedback is user-to-user and has worked
very effectively.  I believe;

Right - but in order to conduct a release of mod_aspdotnet, we need a
minimum of three PMC members to sign off on it.  How familiar are
these users with the code base? If there's a bug, can they fix it? If so, should these folks be added to the PMC roster?

We will be discovering that very shortly.  I intend to offer up a tarball in the
next two weeks of the 'final old flavor' release built in Microsoft Studio .NET
(2002) before moving forward to the new C++.NET language in Studio 2005.  There
are some bugs now-fixed, and many users rely on the snapshots over the official
release, which must be addressed up by a proper release.

 * It's time to move all mod_aspdotnet user discussion to [EMAIL PROTECTED]  
Now I've
   struggled with this choice, because this would add some small traffic to an
   already busy list.  However; I don't believe that users of 'a module' should
   be stuck trying to solve that module's issue in isolation of how-to-configure
   the rest of the server.  The cli-users lose by not better understanding the
   rest of httpd.  I don't see folks unsubscribing from users@ because of 'off
   topic' traffic, as it stands there are many 'foolish' questions posed on that
   list, and lots of beginner questions that most readers probably don't need
   to read, yet they remain subscribed and helped by that list.

If we can get buy-in from the current cli-users@ participants to watch
users@ for mod_aspdotnet help, then I think folding that list as well
is a good idea.  But, we should ask cli-users@ subscribers what they
think.  (I have zero problem shuttering dev-focused lists, but I am
slightly more hesitant with user-focused lists.)

I agree that this should be put to cli-users@ after [EMAIL PROTECTED] and 
[EMAIL PROTECTED]
have offered their feedback, if that's the dev concensus.  If it's not the dev
consensus, no reason to bring this up yet to cli-users@ IMHO.

 * It's time to move mod_aspdotnet into the 'core'.  Not as a default installed
   module, perhaps not even in the modules/arch/win32/ tree (it would increase
   the size of the unix distributions for no gain), but simply consider it where
   it lays in svn as part of httpd 'proper'.

Isn't it relatively large?  Is it desirable to 'enough' users to have
this functionality?  My hunch is that it wouldn't, so I'd be mostly
against folding it into trunk.  It wouldn't solve the 'can three
people maintain this code?' core problem.

Large enough that it shouldn't be in the unix/generic distribution.  Much like
the single-voulenteer mod_arm4, it applies to a minority of httpd users, so it's
best obtained as a seperate download.  In summary, including .rc, .h and .cpp
files, the tree looks like

  aspdotnet/
     mod/         33.4kb   891 lines  the typical 'apache httpd module' elements
                                      that loads the .NET engine, sets up hosts
                                      and delegates requests (request 'handler')
     Apache.Web/  80.5kb  2136 lines  the C++ interfaces that live within .NET
     msi_dll/      9.3kb   317 lines  helpers for the installer to find apache
     resource/    16.8kb     3 files  images/icons for the installer
     aspnet.conf   3.0kb    78 lines  the documented example config
     README.txt    5.0kb   113 lines  comments and status on the module
     LICENSE.txt  11.6kb   202 lines  you know who to blame on this one :)
     LICENSE.rtf  10.9kb   202 lines  same file, different presentation
     installer.ism
                 478.9kb  4497 lines  The godawful XML file for InstallSheild
                                      that defines how to build the installer
     .../*.vcproj|sln
                  26.5kb   780 lines  The VisualStudio .NET 2002 build environ

The majority of LOC's are simply to distribute a binary, and the httpd project
has never raised an issue w.r.t. the httpd core, so I don't expect that to be
an issue w.r.t. an add-in.  The 891 lines of traditional 'module' code are
dense and difficult reading, relating to stubbing in .NET managed code through
the COM interface.  The 2136 lines of Apache.Web are relatively trivial to read,
being the actual stubs between ASP.NET back into httpd.

 * A final release should be shorn from the repository pre-conversion, and
   then the code described above to move to VC2005 and mod_proxy_aspdotnet
   can occur, and these long-lived release (I expect them to be somewhat
   long-lived based on 2.2 ABI rules and .NET versioning rules) can persist
   for those who wish to use this one-platform technology.

If you can get 3 +1s.  =)

Yup, that's the second test of reviewers.

 * If individuals wish to work on the C#/pinvoke flavor, they have a starting
   point and champions here to help shepard the code.

Now we could argue this should only happen with three maintainers.  In fact
three +1's from PMC members are be required to release the next version.  But
given that the code 'just works', I sort of place it in the same category as
mod_netware_ssl; a not-so-complicated (to some ;-) implementation that is done
and just works.  If it loses all attention in the future, then we should kill
it altogether, just as we would kill mod_netware_ssl.

I think the real question here is given the code size: are there three
developers willing to maintain mod_aspdotnet?  mod_nw_ssl is 40kb in
size - it's much smaller and if there's a problem with it and Brad
leaves (and no one else steps up to maintain it), we probably punt all
Netware support.  My impression is that mod_aspdotnet is a fair bit
larger.

Your point being?  The relationsship to mod_arm4 being considered how?
The origins of mod_python appearing how?

Forgive me if I perceive double standards applied in terms of committers.
I fully agree with the assessment for releases.

I am willing to see us try the following:

- Immediately fold cli-dev@ into dev@

+1

- Considering 'promoting' people who have been active around cli
discussions to PMC

Let's test that.  Many folks have piped up here or there; I will search through
the archives (and ask individuals to contact me privately) if they have provided
consistent participation in the project effort, so that I can bring these names
to the attention of the PMC.  Several are 'user's users', the sort who haven't
committed code but offered patches and assisted others getting started; the PMC
of httpd has never turned away active user/documentation people and I don't
suppose it would be an issue now.

The real litmus test is 'Can we release a version of mod_aspdotnet
following all of our PMC guidelines in the next three months?'  If the
answer proves to be yes, then I'm fine with continuing mod_aspdotnet
within this PMC.  If we don't have three people who feel comfortable
to +1 a mod_aspdotnet release (and support it accordingly), then we
should examine another home outside of the ASF for mod_aspdotnet.

I have no intention of leaving ASF httpd for 'greener pastures', my interest
in mod_aspdotnet is not long-term; I would much rather work with httpd in .NET
through the httpd's API, not ASP.NET's API.  But obviously there are many users
out there who desire this, and in the framework of the ASF I'm willing to do so.

That doesn't prevent anyone else from creating a fork elsewhere of course, no
matter if httpd continues to support mod_aspdotnet, or drops it.

So I'm specifically proposing that the cli-dev subproject be relieved of this
module (the cli-dev's project status itself is the topic for my next post.)

Development of mod_aspdotnet, at a minimum, must come under control of
[EMAIL PROTECTED] or find another home outside the ASF.

The door's open; it's always been under control of the httpd project (even in
it's incubation it was a sponsored project.)  If the httpd PMC provides or had
provided sufficient oversight in the past is a matter of speculation best left
to history.  There are no secrets, the process has perpetually been transparent.

Voulenteers who will continue to watch the progress of mod_aspdotnet 
(oversight)?

Given my lack of expertise or Win32 machines, I can't provide much
help.  I've just been tasked to ensure we resolve this issue in a
timely manner.  =)

It seems you have been 'tasked' with the first, no?

Bill

Reply via email to