Apache HTTP Server Trunk Documentation Status File.  Last modified: $Date$

For more information on how to contribute to the Apache Documentation
Project, please see http://httpd.apache.org/docs-project/ and
http://httpd.apache.org/docs-project/docsformat.html

              ------------------------------

To Do List
=======================

- Update the http://httpd.apache.org/docs-project/docsformat.html
  document to be useful. In particular:
    - Document the translation process.
    - Generally update it to make it reflect the current reality of how
      we work.
    -  Improving the documentation of the documentations' build system
       itself (requirements, procedures)

- Continue to enhance the FAQ, which is in the wiki:
  http://wiki.apache.org/httpd/FAQ

- Security docs are unhelpful, and assume that the reader knows nothing.
  Need something a little more advanced, which either discusses
  application-level security, or links to something that does. I'm not
  even sure what to say needs done. Can we get someone to elaborate on
  what, exactly, needs written? 
  - More content and better organisation
  - mod_dav resources are owned by the httpd. Perhaps write up the
    two-httpd dav setup covered in Rich Bowen's DAV Apachecon
    presentation.

- Performance doc "drop-in replace" misc/perf-scaling.xml
  as well as: http://wiki.apache.org/httpd/PerformanceScalingOut
  They both need review and updates to reflect the current state
  of the art.

- Windows platform docs are in desperate need of rewrites/updates for 2.x.
    - Bill Rowe is a good contact for tech questions.
    - "using apache" has been done, "compiling apache" is still open
    - hints on uninstalling apache (exit monitor, close directories,
      registry entries etc) (PR 10154)
    - FAQ: UTF-8 config and URL encoding for non-ascii characters.

- New Auth system
    - Much clean-up and enhancement of aaa howto (Can someone clarify
      exactly what needs cleaned up and enhanced?)
    - Independent note on how to upgrade to new auth system
    - Discussion of DBD auth, and, in particular, examples of how to set
      up auth using each of the supported databases.

- Expression syntax for <If>, Require expr, SetEnvIfExpr, CustomLog, ...
  Start is in expr.xml, igalic is working on this

- modules docs
    - the following modules added since 2.2 lack documentation
        - mod_serf
        - mpm_simple
      the list may be incomplete
      maybe some of the modules will not be included in 2.4
    - mod_suexec: very little documentation

- mod_substitute and reverse proxies: Add example using mod_filter
  (see: http://marc.info/?l=apache-httpd-users&m=128830729603423&w=2)

- MPM documentation
     - explain what the following command line options do
       (perhaps in the developer/debugging docs):
        -D DEBUG
        -D ONE_PROCESS -- is this the same as -X, if not, should it be?
              one-process-mode == no threads, i.e. only one
              process handling the requests in a single loop?

- Identify which documents are grossly out of date, and fix.
     - platform/ebcdic.xml - needs major rework for 2.0
     - SSL docs need serious update and enhancement
        - compat docs are wrong
        - A basic how to has been started here:
            http://wiki.apache.org/httpd/SettingUpModSSL
            but it needs some work...
        - http://blag.esotericsystems.at/2011/01/answering-trivial-and-interesting-questions-with-openssl/
          looks like a good starting point for overhauling the FAQ, and
          has been placed at our disposal by the author.

- API documentation
    - Ben Laurie has written some hooks documentation
    - authn provider API documentation could be useful

- How does <Proxy> fit into sections.html?

- Missing documentation for the support program checkgid

- New user docs: Directory Handling (mod_dir/mod_autoindex/etc)
  (draft available in wiki)

- Enhancements to the DTD/XSL:
  - New index: directives by context, including listing which directives
    are available for each AllowOverride setting.
  - New index: backout modules by type (aaa, mappers, loggers etc.)
    probably by introducing a <category> element in modulesynopsis
  - Use a tag like <var> in place of <em> for things like the
    <syntax> listing.
    - in progress
  - add letter links to glossary and quickreference,
    perhaps also a term overview (sidebar)

- Provide example solutions for the mapping of encodings, especially
  for .gz etc. (also in regard to our default configuration)

- How-To style documents for more of the daily tasks
    - Logging, log rotation, and log reporting
    - Secure mod_dav configuration

- http://httpd.apache.org/docs/trunk/developer/ is a graveyard, and a
  profound embarrassment.
    - Purge all the dead links
    - Verify links to external resources at least every year

- Update the list of translations at
  http://httpd.apache.org/docs-project/translations.html  Some of those
  are accurate, and others are way outdated.

- I'd like to expand the discussion of conditional logging, and add a
  few more useful exmaples.
  That would be a good place to document logging of cache hit/miss:
  https://issues.apache.org/bugzilla/show_bug.cgi?id=48241#c2

- Is it worth having a doc that discusses recommended (what does this
  mean?) third-party modules like mod_security, mod_php, and so on - the
  things that we all assume everyone uses, but some folks might not know
  about.

- Clarify which directives only affect requests when they're handled
  by the default handler.  (e.g. ForceType, TraceEnable, etc.)

- Add examples using expr to mod_rewrite recipes. Possibly benchmark the
  different approaches and make intelligent remarks about the
  comparative value of each.

- Fix this error message:
    Request exceeded the limit of 10 internal redirects due to probable
    configuration error. Use 'LimitInternalRecursion' to increase the limit
    if necessary. Use 'LogLevel debug' to get a backtrace.
  This error message is often returned when a RewriteRule loops, in
  which case setting LimitInternalRecursion won't do anything towards
  fixing the problem. However, the error message is already very long.
  Thoughts?

- Examples in Rewrite Flags doc for QSD, Redirect, Chain, DPI, END, NS

- Error codes
    Decide how and where to document the error codes (AH****), and then
    start on doing it.

- If someone has xslt and LaTeX skills, they could consider getting the
  xml->LaTeX->PDF build chain working again. See specifically 
  https://issues.apache.org/bugzilla/show_bug.cgi?id=45526 for details
  of what's broken. For the moment, PDF docs are no longer referenced on
  the docs site.

- Add example of using -p flag to rotatelogs to do something useful.

- Log rotation doc - http://httpd.apache.org/docs/2.4/logs.html#rotation
  needs to mention rotatelogs as well as fairly standard log rotation
  stuff, rather than encouraging people to do this by hand.

