= Frequently Asked Questions
Apache Incubator PMC
2002-10-16
:jbake-type: simplepage
:jbake-status: published
:idprefix:
:toc:
:imagesdir: /images/

== Questions

=== 1. Incubation

==== 1.1. Does the X Project really have to go in the Incubator to get to Apache?
Yes.
Code that has existed outside the ASF can *only*
enter the ASF through the Incubator. There is no other option.
The Incubator, among other things, is where the due-diligence of
making sure the licence is correct, the link:http://www.apache.org/licenses/#grants[copyright license]
is received, and all of the initial developers submit their link:http://www.apache.org/licenses/#clas[CLAs].
The Incubator is also the place where projects can familiarize
themselves with how the ASF works under the guidance of Incubator
PMC members (link:incubation/Roles_and_Responsibilities.html#Mentors[mentors]).

==== 1.2. I'm the mentor of this project, and I think that I'm able to do it by myself. The Incubator doesn't add anything, can it be skipped?

No.
Do it right, do it well, and add something in the process.
Incubation is not about handing it over to some other group and
seeing what happens. The Incubator is simply the name of the place
that governs your actions when you process a new project into
Apache.  It moves at the same rate you do, and achieves whatever
you achieve -- the only difference is that we have a permanent
record in *one* place that we can go back to if
there are later IP problems, and there is a gate that must be
passed through before the project is given the right to release
software on behalf of the ASF.
That gate will not be ignored or bypassed just because one
group or another feels they have earned the right to bypass it;
allowing that kind of exception destroys the potential to build a
tradition of effective oversight, which is the reason we created
the incubator.

==== 1.3. Project XXX makes no mention of the Incubator for accepting new projects, but the Incubator site says that all projects entering Apache must pass the Incubator. What do we need to do, to move to the Apache XXX project?

The incubation process, WRT responsibilities, is roughly as
follows:
- Any Apache PMC (project management commitee), including the
Incubator PMC itself, will approve the entrance of a project
at Apache.  They are the link:incubation/Roles_and_Responsibilities.html#Sponsor[Sponsor].  (In rare cases, the Apache Board of Directors
will approve the entrance of a project.)
- The Incubator PMC is from that moment on responsible for the
project.  The assigned link:incubation/Roles_and_Responsibilities.html#Mentors[Mentors] (an ASF member who has volunteered to help with
the incubation process) will have the primary responsibility
for overseeing the progress of the project.  Each quarter, the
project will submit an update to the entire Incubator PMC as
to the progress in Incubation.
- This will remain so until the Incubator PMC approves the
project to be "graduated".  After graduation, if another
PMC sponsored the podling, it will then be transferred to
the PMC that asked for incubation.  If the PMC was the
Incubator itself or the Board, the project must then also be
be approved by the Board to receive its own PMC.
- At this point, Incubation is complete.

So, since you would like to have a place under the XXX Project,
ask that PMC to sponsor you.  After that vote, you will
automatically be under the Incubator, and incubation will
start.

==== 1.4. Someone has proposed that their code/project be donated to project X within the ASF for continued development. What do we need to do to accept the code?
The Incubator will only accept code for incubation if a PMC
has voted to accept it. So when a proposal for the donation of
code occurs, the project in question should discuss the proposal
(usually on their public mailing lists!), leading to a decision
by that project's PMC on whether or not to sponsor the code (and
potentially the project surrounding it).
If the PMC agrees, then the incubator can be approached, and the
code accepted for incubation. The grant needs to be recorded by
following the procedure outlined at the link:/ip-clearance/[IP Clearance forms].

==== 1.5. The code came from outside the ASF, so it's ours to do as we like, right?

Wrong.
Here are some generally agreed points that you should take
into consideration:
- No codebase within the ASF is to be considered an exclusive
location for a general technology within the ASF.
- All initial codebases are just that: initial. Once the code is
here, if people feel that the code sucks or the architecture
sucks, or whatever else someone wants to complain about,
all parties understand that the future direction of the
architecture and code is, as is everything at the ASF,
subject to communal will.
- Other contributors interested in any ASF codebase, with or
without existing codebases, are free to contribute, or to
propose additional related projects.

=== 2. Participation

==== 2.1. How can I update the site?
Refer to link:guides/website.html[our guide to updating the website].
If you are not a committer on the Incubator project,
then you can still send patches for the source documents.
==== 2.2. How do I update the incubation status of a project?

See link:guides/mentor.html#Overview[notes]
about maintaining your project entry in the podlings summary file
and your project status page.


==== 2.3. Why don't we use an issue tracking system to track incubation process?

Issue trackers do not meet the long-term archival and tracking
requirements for our legal purposes and they do not authenticate
that the person entering the status information has the authority
to do so, which is what we get with our version control system.
Note that how the actual day to day tracking of the project (i.e.
bugs in code) is done is not the same as filing the legal forms -
for those issues, our normal issue trackers can be used.
Nevertheless, SVN is our only authoritative and formal tracking
system for incubation status.

==== 2.4. How do I update the site of an incubating project?
First of all, read our link:/policy/incubation.html[Incubation Policy].
Refer to the link:guides/sites.html[Website Guide].

==== 2.5 How Do I Obtain Karma For The Infrastructure Site?

All requests for karma (whether for a podling web site or for the infrastructure site itself)
should be directed to the incubator general list.

Please read the link:/guides/website.html[website guide] before editing the website.

==== 2.6 How Do I Set Up The Podling Website?

To set up the website for a podling, start by requesting link:#site-karma[karma].

==== 2.7 How Do I Grant Karma To An Existing Apache Committer?

This link:http://apache.org/dev/pmc.html#karma[document] describes how to grant karma for an
existing Apache committer.

==== 2.8 What are the various facilities that assist with Incubator management, and how are they generated and maintained?

See link:facilities.html[Facilities for Incubator management].

=== 3 Infrastructure

==== 3.1 How does our project request resources?

Co-ordinate via your project's dev list and PPMC. Often someone
there will know what is necessary.
Some notes are provided in the
link:guides/mentor.html#request-required-resources[Mentor guide] and in the link:http://www.apache.org/dev/infra-contact[Infrastructure instructions].