Paul Querna wrote:
So, here is my short-list-made-up-this-afternoon of things I would like
to look at doing after 2.2 is branched/released as GA. I welcome
additions too.
1) Eliminate the HTTP in HTTPD. I would like to be able to compile
httpd with --disable-http. Currently the 'http core' is half mangled
with the 'core core'.
I like this idea. I think one of the best and most important things
that apache is doing these days is trying to migrate away from being a
web server and towards a generic server platform. Eventually I would
like to be able to run apache to serve web content, email ( smtp as well
as pop3 ), and subversion repositories and other file shares ( possible
now ).
2) Add a major Protocol Module. I would like to add a major protocol
module, besides http, into the mainline distribution. I believe adding
a FTP Server Module would be the best one to start with. Many of the
paradigms are the same, but it is different enough to help with Goal #1,
eliminating the dependence on http.
Sounds good. FTP would offer the path of least resistance and help to
eliminate the dependence on http. I do not however, think that it has
long term use in its own right, because ftp is being replaced with
http/webdav.
3) Asynchronous Connection Level Filters. This one needs much more
thought, but the basic goal is to allow the Event MPM to do all of the
initial HTTP parsing without a worker. (eg, reading the headers). Once
the headers are read, it would pass the request off to a worker. I
don't think trying to make the different Hooks or Handlers Asynchronous
will be that helpful, but Connection Level Filters would need a
re-design to handle this idea. I don't personally have a clear picture
how this would all work yet, and really want the input of everyone else.
I'm not quite sure what you mean here, but that is probably because I'm
new to hacking on apache, so forgive me if this is a stupid question.
As I understand it now, the MPM receives data from the socket and places
it into a bucket, attaches the bucket to the brigade, and calls the
lowest level filter, passing it the bucket. Each filter in the chain
then can modify the brigade, and can pass the bucket to the next filter,
or possibly call back down the chain to the mpm to get more data.
Eventually the brigade makes it to the handler which forms a reply and
passes it back down the chain to the mpm to send out on the socket. Is
this about correct? Where do workers fit in?
4) Configuration. I would like to look at enabling different
configuration systems. A major change would be to allow more runtime
configuration changes. Others have mentioned using XML -- Im not sold
on it, and I don't think XML should be an exclusive method, but perhaps
an alternative file format.
I don't think I can do all of these myself. If we did all of them, it
could be a '3.0'. I am not sure if the project is ready for a 3.0 yet,
and in some ways, I think after 2.2 we should pick a few key things and
target them for '2.4'. But, it doesn't matter, this is open source, not
some commercial product :)
These are the types of things I would love to talk about at the
Hackathon before ApacheCon this summer. I am seeding them now, in the
hope that other minds will start hacking on new ideas for httpd.
-Paul