= Roles and Responsibilities
Apache Incubator PMC
2002-10-16
:jbake-type: guide
:jbake-status: published
:idprefix:
:toc:
:imagesdir: ../images/

This document describes the roles (including Sponsor, Contributor, Mentor) of the parties involved in the incubation process, and provides an overview of their responsibilities.

== The Board

The link:http://www.apache.org/foundation/board/[Board Of Directors] of the link:http://www.apache.org/foundation/[Apache Software Foundation] manages the organizational affairs of the Foundation.

link:http://www.apache.org/foundation/members.html[Apache Members] elect the Board.

The Board delegates responsibility for incubation to the link:#Incubator+Project+Management+Committee+%28PMC%29[Incubator Project Management Committee (IPMC)].

Apache link:http://www.apache.org/foundation/board/[Directors] are sometimes active in the Incubator. link:http://www.apache.org/foundation/how-it-works.html#hats[Conventionally], unless indicated otherwise, individuals speak personally. So, a Director speaking without their Board hat on is not stating policy but expressing a personal opinion.

See also: link:http://www.apache.org/foundation/how-it-works.html#management[How Apache Works].

== Incubator Project Management Committee (IPMC)
The Incubator PMC [link:https://whimsy.apache.org/board/minutes/Incubator.html#minutes_2002_10_16[resolution]] is responsible for:

* acceptance and oversight of candidate projects submitted or proposed to become part of the Foundation
* providing guidance and ensuring that podlings under its purview develop products according to the Foundation's philosophy and guidelines for collaborative development
* providing a repository for storage of incubation history and information
* assisting a Podling's Mentor in discharging her/his duties
* regularly evaluating projects under its purview for the purposes of recommending to the Sponsor whether the project should:
** graduate from incubation
** continue to receive guidance and support within the Incubator
** be terminated

To enable effective management of the process of incubation, described below, is the role and responsibility of all participants throughout the incubation lifecycle.

A project going through the Incubator must report to the IPMC regularly. This helps the IPMC in its role of reviewing the status of projects under incubation.

Finally, the IPMC is the ASF body with the greatest level of expertise, knowledge and experience in the Incubation process. Mentors or a Podling can call on the IPMC as a resource during (or even after) the incubation process.

Individuals may be nominated to join the IPMC after a vote which passes. Individuals may choose to bring themselves or others to the attention of the IPMC. Additionally, any Member of the Apache Software Foundation may join the IPMC by request.

Again unless indicated otherwise, individuals speak personally.

See also: link:http://www.apache.org/foundation/how-it-works.html#management[How Apache Works].

== Chair of the Incubator PMC
The person appointed by the link:#board[Board] to have primary responsibility for oversight of the Incubator Project, its policies, and policy implementation.

== Candidate
A Candidate is a project proposed for incubation. A Candidate project needs:

* to have a link:#Champion[Champion].

A candidate project may also:

* declare an existing Apache Project as its *Sponsor* rather than the Incubator
* specify extra requirements that may be needed during incubation 
* provide a summary of relationships with existing or planned Apache projects and products

Naturally, projects need more than this in order to graduate from incubation status.

A Champion (see below) may propose their candidate project for acceptance as an incubating Podling. Approval of a project is subject to a vote of the Sponsor. Should the vote pass, the Sponsor requests that the IPMC accept the Candidate as a Podling under incubation. The Sponsor assigns several Mentors, who must be Incubator PMC members.

== Champion

A Champion is an link:http://www.apache.org/foundation/index.html[Officer] or link:http://www.apache.org/foundation/members.html[Member] of the Foundation who sponsors a candidate project as it applies for Incubation.
The Champion assists the candidate project on its initial submission. While the Apache community does not generally encourage private conversations, they are allowed at this point as the Chamption educates the Candidate about the Apache Way and prepares the project for the questions and issues the wider community may raise.

Before incubation begins, the Champion is expected to:

* help with any process/ASF related hurdles before the Candidate enters incubation
* help identify any issues that may stop the Candidate from graduation or cause difficulty in the incubation process
* help find the right people in the ASF to speak with
* help to find Mentors
* drive the process of entering the Incubator, leading to a vote to accept the proposed podling

After the Candidate's acceptance the Champion role may end, or they may continue to help the Candidate as as a Mentor. 

== Sponsor

The Sponsor is the entity within the ASF that makes the determination that a candidate would make a worthy addition to the ASF.  They agree to take on the Candidate (or in the case of the IPMC, assist it in finding a home) should it complete the incubation process.

A Sponsor will be one of:

* A TLP within the ASF. In this case, the project has agreed that the Candidate is a good fit for their project, and will take on the Candidate as a sub-project upon successful completion of incubation.
* The IPMC. In this case, the IPMC agrees that the project will make a good addition to the ASF, and should become a TLP when it successfully completes Incubation. In most cases, the IPMC is the appropriate Sponsor (Candidates should discuss this with their Champion).

[NOTE]
====
Note that a Sponsor is more than just a final resting place for a candidate that successfully completes incubation. The Sponsor is indicating that they believe the Candidate will make a worthy addition to the ASF, and takes responsibility for assisting the podling through the Incubation process. The Sponsor is therefore expected to be actively involved in the incubation process and to assist where necessary, giving the podling the best possible chance of success.

However, while we expect the Sponsor to be actively involved, it is formally represented by the Mentors. The Mentors are the individuals accountable to the IPMC for ensuring the podling follows the incubation process correctly. If Mentors are not fulfilling their responsibilities, we expect the Sponsor (in particular its Chair) to remedy the situation.

====

== Responsibilities of the Sponsor
- to provide initial approval for a Candidate to be accepted as a Podling
- to nominate Mentors for the incubation process

== Mentor
The Sponsor chooses Mentors to actively monitor the podling, guide the podling in link:http://apache.org/foundation/how-it-works.html[the Apache Way], and report its status to the Sponsor and the IPMC. All Mentors must be members of the IPMC. A Mentor has the following responsibilities toward the IPMC, the Sponsor, and the community of the assigned Podling.

=== Responsibilities toward the Podling Community
- to ensure that Incubator PMC decisions and issues are dealt with in a timely manner
- to  ensure that decisions or resolutions affecting the Podling are communicated promptly
- to represent the interests of the Podling on the Incubator PMC
- to liaise between the ASF Secretary and the Podling concerning CLA submission and acknowledgements
- to liaise between the ASF Infrastructure team and the Podling concerning infrastructure support (email lists, version control establishment, account establishment, etc.)
- to assist the Podling on issues concerning the resolution of license transfers, copyright assignments, and/or software grants where applicable
- to provide guidance on Apache policies and practices

=== Responsibilities toward the IPMC

- monitoring the Podling through the incubation process
- evaluating Podling compliance with Incubator and ASF policies and procedures
- assessing whether the Podling should continue, retire or graduate
- providing updates to the IPMC and Sponsor on the status of license grants

=== Responsibilities toward the Sponsor
- provide status reports to the Sponsor on the progress of the Podling

== Committers

All committers on podlings should be familiar with link:http://www.apache.org/dev/#committers[Developer Information for Committers].

The Candidate shall provide an initial set of committers.

With the help of its Mentors, a Podling community is largely free to get on with the stuff they want to do (code, architecture, documentation, product development, solutions, etc.) with minimal disruption related to the Incubator process.

However, they need to make sure of several things:

- Keep your Mentors informed. They are reporting to the IPMC and, generally speaking, "no news is bad news". Conducting business on the project's mailing lists is one vital way to do this.
- Actively seek and recruit committers to your project.
- Make sure your decision-making process is visible and accountable.
- Work towards operating like other Apache projects and complying with ASF policy and procedures.

These activities are not unique to projects in the Incubator. For example, the PMCs of existing Apache TLPs make regular reports to the link:#board[Board].

During Incubation, we expect committers to show how, as a group, they are upholding the ideals of the Apache community. In particular, as the Podling evolves, we expect the Podling to establish documentation for the introduction of new committers in a process consistent with established Apache practices.
