                       The Apache Incubator Project
                       ============================

The Incubator project was created in October of 2002 to provide an entry path
to the Apache Software Foundation for projects and codebases wishing to become
part of the Foundation's efforts. Code donations from external organizations
and existing external projects wishing to move to Apache will enter through
the Incubator.

*** THIS MAY NOT BE THE README YOU ARE LOOKING FOR ***

The current instructions for updating the main Incubator web site are to be
found at the following URL:

http://incubator.apache.org/guides/website.html

Subproject Website Howto
========================

Do not use the "incubator/public" SVN repository for project docs (note you
do have a status file to maint there), but the module of the specific project, 
eg

  https://svn.apache.org/repos/asf/incubator/$PROJECT/

Each project can use whatever documentation system that it chooses.
Perhaps use a fancy documentation management system like Forrest or Maven,
or just use simple raw html pages. See

  http://incubator.apache.org/guides/sites.html

for more information.

If you have other questions, feel free to post them on
    general@incubator.apache.org

Site Change Policy
===================

Apache projects usually make releases, and have deliverables. The code they
put in is managed through lazy consensus and voting only when it's deemed to
be required or requested.

Incubator releases are basically Incubated Projects' release to the Sponsor
PMC. So how incubation is done is our "code".

Hence there is no need to "ratify" such rules if there seems to be consensus,
as it's much easier to manage.

Because of this, we do not have the "draft" status on our policy docs and
simply use them as our guide, that will change in need without having to go
through tedious votes when there is good consensus.
