= 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 commitee), 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 PMC was the
Incubator itself or the Board, the Board must also approve the project 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 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].
