Source

Apache HTTP Server / STATUS

Full commit
Apache 2.0 STATUS:
Last modified at [$Date: 2000/03/08 21:36:39 $]

Release:

    Vague plan, assuming more features aren't demanded for the 2.0 release
    2.0a1   : March 2000
    2.0     : later in 2000

ALPHA SHOWSTOPPERS:
    * New BugDB

    * Tag the tree

RELEASE SHOWSTOPPERS:
    * Fix SAFEREAD

    * Fix lingering close
        Status:

    * MPMs should have responsibility for closing sockets and
        registering the socket cleanup. Stop registering multiple
        cleanups for each socket. Move socket close code out of
        http_connection.c and into the MPMs.
	Status:

    * Reliable piped logs look broken everywhere. Each MPM includes essentially
	identical code to ap_register_other_child(), etc. Most of this code can
	be moved out of the MPMs and into some common file (http_core.c?).
	Dean says presumably you mean an os-specific file?

    * DSO hooks registered during the preflight call to ap_read_config
	are not 'unregistered' during the preflight clean-up. Thus, when 
	Apache comes up, the hook tables contain two entries for each DSO hook,
	one of which is bogus, leftover from the preflight. 

    * Pipes to CGI scripts are not being timed out
        Status: code has been added to APR to support timing out pipes.
                This needs to be used in Apache now.

    * Put back resource limit code

    * suEXEC doesn't work
        Status: Manoj has posted an patch to fix this.
        <19991103003605.A20612@samosa.mindspring.com>

    * Win32: Enable the Windows MPM to honor max_requests_per_child
        Status: Bill will fix this.

    * Win32: Fix Win9* specific code in the winnt MPM
	Status:

    * Win32: Test access logging with multiple threads. Will the 
	native file I/O calls serialize automagically like the 
	CRT calls or do we need to add region locking each time 
	we access the logs?
	Status: 

    * Win32:  Smoke test all ported modules to make sure they work 
	correctly under Windows.
	Status: 

    * Current 2.0 code is not tested on many Unix platforms. Make 2.0
      work on most, if not all the systems 1.3 did
        Status: Autoconf and APR will get us most of the way there.

    * The module API is a weird combination of the old table and the new
      hook system. Switch completely to the new hook system
        Status: Ben Laurie is working on this.

    * Modules.  Which modules do not work yet, can we get a list?

    * We need a thread-safe resolver, at least on Unix.
        Status: The best known candidate would be something from BIND
        (v8 or v9?) The only other option would be to mutex all the
        resolver calls,

RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:

    * "make distclean" leaves (at least these) turds:
	lib/.deps
	lib/apr/.deps
	lib/apr/shmem/unix/mm/config.log
	lib/apr/shmem/unix/mm/mm_conf.h
	lib/apr/shmem/unix/mm/libtool
	lib/apr/shmem/unix/mm/config.status
	lib/apr/shmem/unix/mm/Makefile
	lib/apr/shmem/unix/mm/mm-config
	main/a
	modules/.deps
	modules/mpm/.deps
	os/.deps

    * apaci permissions problem:
	cvs checkout apache-2.0
	cd apache-2.0/src
	./configure
	edit some Makefile.in
	./config.status
	now apaci is no longer executable and future makes fail

    * the top-level configure.in appears to use $USE_MAINTAINER_MODE = yes
	to set -Wall/etc. flags, and the APR configure.in appears to use
	--with-debug.  both seem like more of a hardwired pain compaired
	to the pre-2.0 method of setting EXTRA_CFLAGS.

    * Win32: Reuse accept socket after transmitfile/close
	This is not a bug, but would be nice to get this feature in 
	before ship.

    * Win32: Enable the winnt MPM to use the new scoreboard API

    * Win32: Non-blocking CGI pipes

    * Win32: Graceful restart of a service is broken (code does shutdown then start)

    * Dynamically loadable MPMs
      Enable users of the binary distributions of Apache to be able to 
      dynamically load the MPM.

      Dean says this probably isn't a good idea.  For example consider
      -lpthread, you couldn't have the same core run with pthreads,
      prefork, and gnu pth without a lot of headaches is my guess.

    * Platforms that do not support fork (primarily Win32 and AS/400)
      Consider introducing HAVE_FORK feature macro. Architect start-up code
      that avoids initializing all the modules in the parent process on
      platforms that do not support fork.

    * Clean the code.  There are a lot of places we used APR but didn't 
      remove the hacks that were required for the cross-platform code in
      1.3.  We need to make the code look like APR was supposed to be there. 

    * Go throught the Bug DB and research the bugs marked "suspended".  People
      were told these would be considered for inclusion in Apache 2.0, it 
      would be nice to actually do so.

    * Win32: Migrate the MPM over to use APR thread/process calls. This
      would eliminate some code in the Win32 branch that essentially
      duplicates what is in APR.
        Status: Bill <stoddard@raleigh.ibm.com> is working on this.

    * Move I/O layering into APR.

    * There are still a number of places in the code where we are
      loosing error status (i.e. throwing away the error returned by a
      system call and replacing it with a generic error code)

    * Win32: Implement reliable piped logs on Windows
        Status: Bill <stoddard@raleigh.ibm.com> has prototype code (not
        reliable) in 1.3.  Should be much cleaner with APR in 2.0.

    * Switch to autoconf, et al. for configuration.
        Status: Manoj has placed an initial version into the 2.0
        repository. Todos include:
          
          - "make install" should work
          - a tool to simplfy third-party module building should be
            written. Something like apxs
          - Add a lot more checks to satisfy the various platforms, e.g.
            for threading

    * Use APR to get rid of more platform dependancies.
        Status: Ryan Bloom <rbb@raleigh.ibm.com> is working on this.

    * The connection status table is not very efficient. Also, very few stats
      are exported to the connection status table (easy to fix), and mod_status
      is ugly.

Other bugs that need fixing:

    * MaxRequestsPerChild measures connections, not requests.
        Until someone has a better way, we'll probably just rename it
        "MaxConnectionsPerChild".
    
    * Regex containers don't work in an intutive way
        Status: No one has come up with an efficient way to fix this
        behavior. Dean has suggested getting rid of regex containers
        completely.

    * SIGSEGV on Linux (glibc 2.1.2) isn't caught properly by a
      sigwaiting thread. We need to work around this, perhaps unless
      there is hope soon for a fixed glibc.

Other features that need writing:

    * Finish infrastructure in core for async MPMs
        Status: post 2.0

    * TODO in source -- just do an egrep on "TODO" and see what's there

Documentation that needs writing:

    * The concept of MPMs, especially if we ship more than one MPM for a
      given platform

    * New directives in the various MPMs

    * API documentation
        Status: Ben Laurie has written some hooks documentation
        (apache-2.0/htdocs/hooks.html)

    * Changes since 1.3.9 can be more easily seen in the commitlog file
         dev.apache.org:/home/cvs/CVSROOT/commitlogs/apache-2.0
      which includes some of Roy's comments when the changes were
      committed in rough change-sets by purpose.  Note that the commitlog
      does not show the contents of new files until later.

Available Patches:

   * Mike Abbott's <mja@trudge.engr.sgi.com> patches to improve
     performance
       Status: These were written for 1.3, and are awaiting a port to
       2.0

Open issues:

   * What do we do about mod_proxy?

   * Which MPMs will be included with Apache 2.0?

   * Is conf/highperformance.conf-dist obsolete?  It looks obsolete.