= Incubation Policy
Apache Incubator PMC
2002-10-16
:jbake-type: policy
:jbake-status: published
:idprefix:
:toc:
:imagesdir: ../images/

In October 2002 the Board of Directors of the Apache Software Foundation passed 
a resolution to establish the Apache Incubator PMC. Quoting the 
link:https://www.apache.org/foundation/records/minutes/2002/board_minutes_2002_10_16.txt[October 16th, 2002 Board Minutes]:

[quote, ASF Board Meeting, October 16th 2002]
...establish a Project Management Committee charged with
       accepting **new products** into the Foundation, providing **guidance
       and support** to help each new product engender their own
       collaborative community, **educating new developers in the
       philosophy and guidelines** for collaborative development as
       defined by the members of the Foundation, and proposing to the
       board **the promotion of such products to independent PMC
       status** once their community has reached maturity.

See the October 2002 link:https://www.apache.org/foundation/board/calendar-1999-2004.html#2002 [Board report] for the resolution.

The Incubator has the following responsibilities:
- Welcoming new Podlings to become part of the Apache Software Foundation (ASF).
- Guiding Podlings to govern and grow their communities according to *link:https://www.apache.org/theapacheway/[the Apache Way]*, the ASF's philosophy and guidelines for collaborative development.

- Reporting monthly to the board on the progress of Podlings.
- Graduating Podlings to top level Apache Software Foundation projects.
- Retiring Podlings when needed.
- Accepting IP donations.

== About this Document

This document is the reference for the policies and procedures put in place by the Incubator PMC for the incubation process. 

The document makes use of the terms MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY and OPTIONAL. Where capitalized, these terms are used as defined in link:http://www.ietf.org/rfc/rfc2119.txt[RFC 2119].

Like many policy documents this is not the most fun thing to read. Our link:/cookbook[Cookbook] 
provides more concrete information on the incubation process.

== Scope
This document contains the minimum requirements and processes that MUST be met by Podlings undergoing incubation.

This document does not apply outside the process of incubation.

== Relationship to Other Documents
This document is the set of requirements for incubation. Where other documents say something different, this document is correct.

== Changing this Document
The Incubator PMC approves the content of this document. Any changes MUST be authorized by the Incubator PMC.

== Podling Reporting
Each Podling in Incubation MUST report to the Incubator PMC. Podlings SHALL report monthly for their first three months, after that quarterly. The Incubator PMC MAY, at their discretion, ask a Podlings to report more frequently. The PPMC with the mentor(s) help, MUST produce a report for the Incubator PMC detailing the overall progress toward graduation and any issues encountered.

== Podling Constraints
While in Incubation, Podlings are constrained in the actions they can undertake.

=== Website
There are restrictions on where Podlings sites are hosted and branding on web sites.

Please consult the link:/guides/sites.html[Podling Websites Guide] for the current policies on Podling websites.

=== Branding
There are restrictions about how Podlings can use their own and other ASF brands and names.

Please consult the link:/guides/branding.html[Podling Branding Guide] for details.

=== Publicity
There are some restrictions about how Podlings can advertise themselves, especially around press releases related to Podlings.

Please consult the link:/guides/publicity.html[Podling Publicity Guide] for details.

== Disclaimers

Podling web sites MUST include a clear disclaimer on their
website and in all documentation, releases and release announcements
stating that they are in incubation.

Podling has a choice of two disclaimers a standard disclaimer or a work in progress disclaimer.

Podlings wishing to use a different disclaimer message MUST have the
disclaimer approved by the Incubator PMC before use.

==== Standard Disclaimer

Podlings wanting to follow all ASF policy on releases SHOULD use the following 
text for all disclaimers (replace the underlined text where needed):

[quote]
____
Apache [.underline]#Podling-Name# is an effort
undergoing incubation at The Apache Software Foundation (ASF),
sponsored by the [.underline]#name of Apache TLP sponsor#. Incubation is required of all
newly accepted projects until a further review indicates that the
infrastructure, communications, and decision making process have
stabilized in a manner consistent with other successful ASF projects.
While incubation status is not necessarily a reflection of the
completeness or stability of the code, it does indicate that the
project has yet to be fully endorsed by the ASF.
____

For releases, the text SHOULD be included in a separate DISCLAIMER file
stored alongside the NOTICE and LICENSE files.

==== Work In Progress Disclaimer

Podling wishing to make releases that may not follow all ASF policy SHOULD use the
following disclaimer (replace the underlined text where needed):

____
Apache [.underline]#Podling-Name# is an effort
undergoing incubation at The Apache Software Foundation (ASF),
sponsored by the [.underline]#name of Apache TLP sponsor#. Incubation is required of all
newly accepted projects until a further review indicates that the
infrastructure, communications, and decision making process have
stabilized in a manner consistent with other successful ASF projects.
While incubation status is not necessarily a reflection of the
completeness or stability of the code, it does indicate that the
project has yet to be fully endorsed by the ASF.

Some of the incubating project's releases may not be fully compliant
with ASF policy. For example, releases may have incomplete or
un-reviewed licensing conditions. What follows is a list of known
issues the project is currently aware of (note that this list, by
definition, is likely to be incomplete): 
[.underline]#List of known issues go here#

If you are planning to incorporate this work into your
product/project, please be aware that you will need to conduct a
thorough licensing review to determine the overall implications of
including this work. For the current status of this project through the Apache
Incubator visit: 
https://incubator.apache.org/projects/[.underline]#Apache Podling-Name#.html
____

For releases, the text SHOULD be included in a separate DISCLAIMER-WIP file
stored alongside the NOTICE and LICENSE files.

== Releases

See the guidelines for link:/guides/releasemanagement.html[Podling releases] for good practices on making releases.
link:guides/releasemanagement.html#requesting_feedback_on_interim_non_asf_releases[Non ASF releases] can be made while incubating as long as the podling is moving towards making ASF releases.

Podlings are not fully accepted as official projects within the Apache Software Foundation. Podlings MUST NOT perform any ASF releases of software without the approval of the Incubator PMC. When a Podling decides it wants to make an ASF release, the Podling MUST hold a vote on their public dev list. At least three +1 votes are required (see the http://www.apache.org/foundation/voting.html[Apache Voting Process] page) and more +1 votes than -1 votes. If the vote passes the Podling MUST send a summary of that vote to the Incubator's link:/howtoparticipate.html#Mailing+lists[general] list and request that the Incubator PMC approve the release. Three +1 Incubator PMC votes are required to approve a release. Below is an example showing how an incubating project managed this process:

- link:++https://lists.apache.org/thread.html/7e9c475d07c0e12f813226aa123f54969ebb21a2277b32e9bd366d96@%3Cdev.plc4x.apache.org%3E++[Post to the Podling dev list calling the vote.]
- link:++https://lists.apache.org/thread.html/06655226ba08c16a8cb273f9b45e0b0a15ebaed0d06783fdd06a03f6@%3Cgeneral.incubator.apache.org%3E++[Post to the Incubator's general list requesting approval from the Incubator PMC.]

Should the Incubator PMC vote to approve a release, the Podling MAY make that release available to the public, only if:

- The release archive(s) MUST include the word "incubating" in the filename.
- The release archive(s) MUST contain a disclaimer (see above), which SHOULD be placed in a DISCLAIMER or DISCLAIMER-WIP file.

Releases for the *Podling* MUST be distributed through *++http://www.apache.org/dist/incubator/++_Podling_* Also the Podling MAY choose to distribute approved releases through other channels like the central Maven repository.

== Adding PPMC members
After voting someone into the PPMC on the PPMC private list, a NOTICE email MUST be sent incubator private list. The PPMC MUST wait for 72 hours before inviting the new PPMC member to join the PPMC. See link:https://incubator.apache.org/guides/ppmc.html#voting_in_a_new_ppmc_member[Voting in a new PPMC member].

== Joining the IPMC
Just like other PMC new PMC members are voted on the Incubator private list. After a vote has finished a notice email MUST be sent to the board and the IPMC wait for 72 hours before inviting them. Any ASF member can ask to be an IPMC member, without a vote, but notice to the board MUST still be given.

== Termination
The Incubator PMC SHOULD notify a podling of any policy violations. It MAY consider the termination of a Podling if violations are not corrected. 

