The directory structure for this level is as follows:

standard/

  In this directory are the standard supported modules for 
  Apache.  Not all are compiled by default.

proxy/

  This houses the code for the proxy module for Apache.

experimental/

  In this directory we've placed some modules which we think
  provide some pretty interesting functionality, but which
  are still in the early stages of development and could
  evolve radically in the future.  This code isn't supported
  officially.

extra/

  This is the directory for third-party modules, such as mod_jserv.

test/

  This directory houses modules which test various components 
  of Apache.  You should not compile these into a production
  server.  

example/

  This directory houses example modules, to help module authors
  figure their way around the Apache API and module concept.

