= 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, that we have received the link:http://www.apache.org/licenses/#grants[copyright license], and that all of the initial developers submit their link:http://www.apache.org/licenses/#clas[CLAs] takes place.
The Incubator is also where projects can familiarize
themselves with how the ASF works under the guidance of Incubator
PMC (IPMC) 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, so can we skip it?

No.
Do it right, do it well, and add something in the process.
Incubation is not about handing a project 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 the project must
pass through before it gains the right to release
software on behalf of the ASF.
The ASF will not let a project ignore or bypass that gate just because one
group or another feels they have earned the right to bypass it. Allowing that kind of exception would destroy 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 committee), including the IPMC
(Incubator PMC) itself, can 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 IPMC is from that moment on responsible for the
project. The assigned link:incubation/Roles_and_Responsibilities.html#Mentors[Mentors] (ASF members who have 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 IPMC about its progress in Incubation.
- This will continue until the IPMC 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 IPMC or the Board sponsored the podling, the Board must also approve the project to have 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 donating their code/project 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, it should approach the Incubator, and the Incubator can accept the
code for incubation. Record the grant by
following the procedure outlined in the link:/ip-clearance/[IP Clearance forms].

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

Wrong.
Here are some generally-agreed points that you should take
into consideration:
- No codebase within the ASF is 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 with everything at the ASF,
subject to communal will.
- Other contributors interested in any ASF codebase, with or
without existing codebases, are free to contribute code, 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,
you can still submit 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 on your project's 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 a project does its actual day-to-day tracking (i.e.
bugs in code) is not the same as filing the legal forms -
for those issues, so you can use our normal issue trackers to record bug resolution and development of features.
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 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?

Direct all requests for karma (whether for a podling web site or for the infrastructure site itself)
to the Incubator general email 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 to an
existing Apache committer.

==== 2.8 What facilities 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 in the
link:guides/mentor.html#request-required-resources[Mentor guide] and in the link:https://infra.apache.org/contact.html[Infrastructure instructions].
