= 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) and provides an overview of the responsibilities of the different parties involved in the incubation process.

== 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.

The board is elected by the link:http://www.apache.org/foundation/members.html[Apache Members].

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

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 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 the 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; or
** be terminated.

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

A project going through the Incubator will be required to report to the Incubator PMC regularly. This will help the IPMC in its role of reviewing the status of a project under incubation.

Finally, the Incubator PMC is the ASF body with the greatest level of expertise, knowledge and experience in the Incubation process. That can be called on by the Mentors or a Podling 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 optionally have:

* declare an existing Apache Project to become the *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 will need more than this in order to graduate from incubation status.

A candidate project may then be proposed by the Champion for acceptance as an incubating Podling. Approval of a project shall be subject to a vote of the Sponsor. Should the vote pass, the Sponsor will request that the Incubator PMC to accept the Candidate as a Podling under incubation. The Sponsor shall assign several Mentors, who must Incubator PMC members.

== Champion

A candidate project shall be sponsored by an link:http://www.apache.org/foundation/index.html[Officer] or link:http://www.apache.org/foundation/members.html[Member] of the Foundation.
The Champion assists the candidate project on their initial submission. While private conversations are not generally encouraged within the Apache community, this should be allowed for this in order to educate the Candidate about the Apache Way and prepare the project for the questions and issues likely to be raised by the wider community.

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 difficultly 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 Candidates acceptance the Champion role may end or they continue to help teh 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 Incubator PMC, assist it in finding a home) should it complete the incubation process.

A Sponsor will be one of:

* A Top Level Project 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 Incubator PMC. In this case, the Incubator PMC agrees that the project will make a good addition to the ASF, and should become a top level project when it successfully completes incubation. In most cases, the Incubator PMC is the correct 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 assist where necessary, giving the podling the best possible chance of success.

However, while the Sponsor is expected to be actively involved, it is formally represented by the Mentors. The Mentors are the individuals accountable to the Incubator PMC for ensuring the incubation process is correctly followed. In cases where the Mentors are not fulfilling their responsibilities, the Sponsor (in particular its Chair) will be expected 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
Mentors are chosen by the Sponsor 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 Incubator PMC. All Mentors must be members of the Incubator PMC. A Mentor has the following responsibilities toward the Incubator PMC, the Sponsor, and the community of the assigned Podling.

=== Responsibilities toward 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 (mailing 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; and
- to provide guidance on Apache policies and practices.

=== Responsibilities toward the Incubator PMC

- monitoring the Podling through the incubation process;
- evaluating the compliance of the Podling with Incubator and ASF policies and procedures;
- assessment of the Podling status on if it should continue, retire or graduate;
- to provide updates to the Incubator PMC and Sponsor on the status of license grants.

=== Responsibilities toward the Sponsor
- provide status to the Sponsor as to 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, product, 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, existing Apache Projects have regular reports made by their PMC Chair to the link:#board[Board].

During the incubation, the committers will be expected to show how, as a group, they are upholding the ideals of the Apache community. In particular, as the Podling evolves, it is anticipated that the Podling will establish documentation for the introduction of new committers in a process consistent with established Apache practices.