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 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 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 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 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.