blob: 734f4095768e6d3b1d6e9a89e62c31ae6dcccabc [file] [log] [blame]
= The Apache Incubator Cookbook
Apache Incubator PMC
2019-03-26
:jbake-type: simplepage
:jbake-status: published
:idprefix:
:toc:
:imagesdir: ./images/
This cookbook, combined with our link:http://incubator.apache.org[homepage], provides the information that you need to incubate a project at the ASF.
It is *the* central point for all questions related to incubation. It provides an overview of the incubation goals and process, and links to more detailed information.
It is organized in chronological order of the steps that lead from incubating project acceptance to graduation as a Top-Level Project (TLP).
We welcome feedback about the cookbook, either through the link:++https://lists.apache.org/list.html?general@incubator.apache.org++[general@incubator.a.o] email list
or in the link:https://issues.apache.org/jira/browse/INCUBATOR-234[INCUBATOR-234] ticket. You can also submit patches to link:https://github.com/apache/incubator/tree/master/pages/cookbook[this repository].
== Does our project fit the Apache Incubator?
The Apache Software Foundation (ASF) _provides software for the public good_, as explained in our link:https://blogs.apache.org/foundation/entry/the-apache-software-foundation-2018[vision statement] from 2018.
Our projects operate according to link:http://www.apache.org/theapacheway/index.html[The Apache Way], a set of principles and best practices.
We put a strong emphasis on _Community Over Code_, _fierce independence_ from companies and organizations, and _openness_ in all aspects of our work.
Donating your project to the ASF means giving up control of it, and its trademarks if any. You'll be very welcome to participate in the project, but without a special status beyond being part of its Project Management Committee (PMC). The good news is that your project can then take a life of its own, with potentially a much broader reach, due to the ASF's independence and emphasis on project sustainability.
Assuming your project fits this mindset, we do not link acceptance of your project to what it does, as the ASF on purpose does not have a technical strategy. If it's very similar to link:https://projects.apache.org/[one of our existing projects], we will probably ask you to consider joining that project. Still, some of our projects exist for similar purposes, and that's not necessarily a problem.
To give our "podlings" (incubating projects) the best chances of success, we usually ask them to enter the Incubator with at least the start of a community built around an existing codebase.
== What are the steps to becoming an Apache Software Foundation Top-Level Project?
The goal of incubation is to become an Apache Software Foundation (ASF) Top-Level Project (TLP).
See the link:https://www.apache.org/foundation/how-it-works.html[How the ASF works] page for what this means and what the various roles (committers, PMC members etc.) mean.
To achieve this, an incoming project ("podling") goes through the following steps:
* Find a champion and incubation mentors and discuss and prepare an incubation proposal
* Decide to incubate at the ASF
* Discuss the proposal with the Incubator PMC
* If needed, refine the list of initial committers and mentors in the proposal
* if needed, refine the proposal based on Incubator PMC feedback
* Let the Incubator PMC vote on the proposal
* Set up the podling's infrastructure
* Start building a community around the podling's code
* Invite new committers and PPMC members
* Make podling releases and document and refine both the code and the release process
* When you feel ready to graduate, assess the podling's readiness with the incubation mentors
* If applicable, prepare the transfer of existing trademarks to the ASF
* Discuss graduation with the Incubator PMC
* Start the graduation vote with the Incubator PMC, leading to an ASF Board resolution to establish the TLP
Described above is the "happy case". Things might happen in a slightly different order, but it gives an overview of the typical incubation process.
Here are more details about these steps:
== Communicating with the Incubator
The Incubator PMC manages the Incubator and helps incoming projects in their journey through incubation.
To communicate with the Incubator PMC use the public link:++https://lists.apache.org/list.html?general@incubator.apache.org+ [general@incubator.a.o] mailing list. That page has links to subscribe to the list.
== Finding a champion and mentors
To enter the Incubator, your project needs a _champion_ and at least two or three _mentors_.
These people need to be part of the Incubator PMC, which ASF Members can join just by asking.
The Champion helps the incoming podling in the process of creating their proposal and acts as a liaison between the podling and the Incubator PMC for the initial steps, at least until the podling's proposal is accepted. They may stay on to act as a mentor after that.
The Mentors accompany the podling through all phases that lead to graduation as a top-level project.
The starting point is usually to find a Champion. For that you might write to the general@incubator.a.o list
with a brief description of your project, with relevant links, mentioning that you are looking for a Champion and
trying to get people interested. Or, if you know any ASF Members or Incubation Mentors, ask them directly if they
would be willing to help.
== Creating an incubation proposal
The Champion helps the podling prepare an incubation proposal that describes the incoming project for the initial discussions with the Incubator PMC.
The proposal needs to include several standard sections, see the link:https://cwiki.apache.org/confluence/display/INCUBATOR/New+Podling+Proposal[podling proposal template].
Prior proposals are kept on the link:https://cwiki.apache.org/confluence/display/INCUBATOR/Proposals[Incubator wiki]. They can be consulted as examples, keeping in mind that the proposal template mentioned above is the current reference for new proposals.
== Discussing the Incubation proposal
Once the proposal is ready, the podling representatives send it to the general@incubator.a.o list for discussion, with a subject line like
[DISCUSS] Foo Proposal
to raise the Incubator PMC's attention.
The discussion often leads to small or large changes to the proposal.
There's no set duration for this discussion phase. It usually lasts for a few days until the discussion dies down and all discussion points have been addressed.
For recent discussions threads see:
* link:https://lists.apache.org/thread.html/7ed194c45460a3941ae6713b20e742ec7af398c5414de7b17d188c3b@%3Cgeneral.incubator.apache.org%3E[Nuttx proposal] (in progress)
* link:https://lists.apache.org/thread.html/1cf79ef65888f695b4b925fd67ef8a2b845f6b0931c251a0ff1115e1@%3Cgeneral.incubator.apache.org%3E[StreamPipes proposal] (accepted)
* link:https://lists.apache.org/thread.html/ff9874f5353d319152f09aa9c1aa1a673b84acdaeb9932432d58d5ab@%3Cgeneral.incubator.apache.org%3E[Sparkr proposal] (withdrawn)
* link:https://lists.apache.org/thread.html/21c5453b40765cf1d5a06540fcf6d76c0d5b6b7df7ade5c29d31aa3e@%3Cgeneral.incubator.apache.org%3E[TubeMQ proposal] (accpeted)
* link:https://lists.apache.org/thread.html/dbdbc6bd8e238d9dbf16604d5fa13500523d6e812fcd863444f99842@%3Cgeneral.incubator.apache.org%3E[MetaObjects proposal] (on hold)
== Voting on the Incubation Proposal
Once the discussion phase is finished, the Champion or a podling representative starts a [VOTE] thread on the general@incubator.a.o list.
The vote happens according to the link:https://www.apache.org/foundation/voting[ASF voting rules]. In short, it takes place on the Incubator email list, lasts at least 72 hours, and is a majority vote by the Incubator PMC members, with others being welcome to cast votes.
TODO link to recent votes as examples
== Podling Infrastructure Setup
Once the Incubator PMC votes to establish the podling, its infrastructure can be set up.
Usually, the Champion or incubation mentors drive this process. However, it can also be driven by podling community members if they know how to proceed.
See link:https://infra.apache.org/infra-incubator.html[Infra and the Incubator] for detailed instructions.
== Publicity and Announcements
Project can _not_ issue press releases or other public statements about joining the ASF before the Incubator PMC accepts the podling.
There are also some restrictions about how podlings can advertise themselves and especially around press releases related to podlings. The link:http://incubator.apache.org/guides/branding.html[Incubator Branding Guide] and https://incubator.apache.org/guides/publicity.html[Apache Podling Publicity/Media Guidelines] have more details.
== Importing the Initial Code
A specific process exists do donate code to the ASF, which podlings also
need to follow, based on link:https://www.apache.org/licenses/software-grant.txt[Software Grants] and/or link:https://www.apache.org/licenses/cla-corporate.txt[CCLAs].
The link:http://incubator.apache.org/guides/transitioning_asf.html[Initial Code Import] guide has more details about this.
== Community building
During incubation, the podling is expected to build and expand its community, which includes voting in new committers and PPMC members.
Discussions of candidates and votes happen on the podling's private PPMC mailing list. That's one of the few uses of that list as, generally, all discussions happen in the open.
Expanding and especially renewing project communities are essential parts of the ASF's governance, as it fosters project durability.
== Podling Releases
During incubation, we expect a podling to make **several software releases** that gradually progress towards being fully conformant to the link:http://www.apache.org/legal/release-policy.html[ASF Release Policy]. Producing fully-conformant releases is a condition for graduation.
Podling releases must also include the word "incubating" in any release file names and include a DISCLAIMER or DISCLAIMER-WIP as per the
link:https://incubator.apache.org/guides/releasemanagement.html#choice_of_disclaimers[Incubator Releases Guide],
to prevent any confusion as to the project’s status. As podlings are not yet "real" ASF projects, it is important to set expectations appropriately.
Note that Apache Releases consist of source code only. However, it is common for our projects to also distribute
link:http://www.apache.org/legal/release-policy.html#compiled-packages[compiled packages] along with their releases, as a convenience to users of the application. The focus is on the actual
source code releases, and all distributed compiled packages are based on those "official" releases.
== Two-phase vote on Podling Releases
Voting on podling releases happens in two phases:
* First, the podling votes on the release on their dev mailing list. The main goal of this vote is for the podling community
to practice and learn voting on releases. The vote is successful if there are at least three +1 votes from PPMC members,
and more +1 than -1 votes from PPMC members.
* Then, if that first vote is successful, the Incubator PMC holds a vote on the Incubator general mailing list. This is required
to make the vote an Act of the Foundation, as for all ASF releases.
Report votes from the podling dev list to the Incubator PMC vote in the Incubator PMC [VOTE] message, by explicitly mentioning the podling vote result
and including a link:http://lists.apache.org[lists.apache.org] link to the podling vote tally. This
allows votes from mentors and other Incubator PMC members to be binding in the Incubator PMC vote, without people having to vote twice.
Both the podling and Incubator votes follow the standard link:https://www.apache.org/foundation/voting[ASF voting principles]: they
are majority votes that last at least 72 hours, and if people vote several times only their last vote counts.
== Podling, Top-level Project: what are the differences?
Top-level projects (TLPs) are full-blown ASF projects, each governed by their own link:http://www.apache.org/foundation/governance/pmcs[PMC] and reporting to the ASF's link:https://www.apache.org/foundation/board/[Board of Directors].
Podling are "TLPs in training". Most of what they do is the same as TLPs, especially as they progress in their incubation journey.
The main differences are:
* As opposed to PMCs, podlings cannot make formal decisions on the ASF's behalf as they are not formally part of the ASF's structure. They are not mentioned in the link:https://www.apache.org/foundation/bylaws[the ASF's bylaws] for example. This means that the Incubator PMC needs to act as a proxy for the podlings to formalize things like ASF releases and make them link:https://blogs.apache.org/foundation/entry/success-at-apache-the-apache1[Acts of the Foundation].
* As a consequence, a podling has a PPMC (Podling Project Management Committee) which operates like the PMC of a top-level project but needs to delegate a few things, like final votes on ASF Releases, to the Incubator PMC.
* The decision to elect people as committers or PPMC members, or both, is similar to what TLPs do. A podling can decide that candidates are elected to the PPMC directly, or make them committers first and wait a bit to "promote" them as PPMC members. Committers have no formal decision power, so a two-stage process is often preferred, but it's not a requirement. Read link:https://www.apache.org/foundation/how-it-works.html[How the ASF works] for more information about this.
* TLPs report to the link:https://www.apache.org/foundation/board/reporting[ASF Board of Directors], whereas podlings report to the link:https://cwiki.apache.org/confluence/display/INCUBATOR/Reports[Incubator PMC]. Both report monthly initially, then quarterly.
* Each TLP has a link:https://apache.org/dev/pmc.html[PMC Chair] who acts as a liaison between the TLP and the Board. PMC Chairs are _not_ project leaders. It's an administrative role even though they get a VP title due to the ASF's organizational structure. Podlings do not have this role: incubation mentors are volunteer community members who act as the liaison between the podling and the Incubator PMC.
* Podling releases require a two-phase vote as described elsewhere in this cookbook.
The ASF strongly encourages projects to grow and renew their roster regularly, to foster project sustainability. Both podlings and TLPs should be actively looking to elect new committers and PMC members by keeping an eye on who's active in their communities.
== Graduation Readiness Assessment
Once the podling community starts feeling ready to graduate, they should make a self-assessment of that readiness.
The link:https://community.apache.org/apache-way/apache-project-maturity-model.html[Maturity Model] maintained by the ASF's Community Development PMC is a good canvas for that and can help discover things that might have been overlooked during incubation. The Maturity Model page includes links to examples from graduate podlings.
== Graduation discussion
Once the community and its incubation mentors feel that the podling is ready to graduate, based on their readiness self-assessment, a mentor or a member of the PPMC starts a [DISCUSS] thread on the Incubator general email list, proposing graduation and asking the Incubator PMC to review the podling.
It's best to include the graduation resolution in this discussion, to be ready for the vote that follows.
== Transfering Trademarks to the ASF
If the people or organizations that donated the podling code to the ASF own trademarks that the podling needs, they must transfer the trademarks to the ASF before the podling can graduate.
TODO link to details
== Graduation vote
Once the discussion dies down on the graduation proposal, a mentor or a member of the PPMC starts a [VOTE] thread on the Incubator general mailing list, in which Incubator PMC Members cast their votes whether to recommend graduation to the ASF's Board of Directors.
This vote follows the standard link:https://www.apache.org/foundation/voting[ASF voting principles]. It's a majority vote that lasts at least 72 hours, and if people
vote several times only their last vote counts.
== ASF Board Resolution
Once the Incubator PMC votes to graduate a podling, the IPMC sends the Board Resolution that was created for the vote to the ASF's Board of Directors.
The Board currently meets every third Wednesday of the month and votes on such resolutions during a regular meeting.
The Board vote is effective immediately, although the link:https://www.apache.org/foundation/board/calendar.html[public minutes] of the Board meeting appear later, usually within a month.
== Post-graduation tasks
Once graduated, the podling needs to reflect its new status on the Incubator status pages and make a few changes to its resources and processes.
The link:http://incubator.apache.org/guides/transferring.html[Life after Graduation] guide lists the corresponding tasks.