| = 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], is meant to provide all the basic information |
| that you need to incubate a project at the ASF. |
| |
| It is meant to be *the* central point for all questions related to incubation, providing an overview of the incubation |
| goals and process, and linking 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. |
| |
| The style that we expect here is short explanations with links to the details as needed, |
| written in a friendly and helpful tone. |
| |
| Feedback about this is welcome, either on the |
| link:++https://lists.apache.org/list.html?general@incubator.apache.org++[general@incubator.a.o] mailing list |
| or in the link:https://issues.apache.org/jira/browse/INCUBATOR-234[INCUBATOR-234] ticket. Pull requests |
| to this repository are also welcome, obviously. |
| |
| == 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 The Apache Way, a set of principles and best practices that |
| are described link:http://www.apache.org/theapacheway/index.html[on the Foundation's website]. |
| |
| 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 |
| of 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 a potentially much broader reach due to the ASF's independence |
| and emphasis on project sustainability. |
| |
| Assuming your project fits this mindset, in principle the acceptance of your project is not linked to what it does, |
| as the ASF does not have a technical strategy, on purpose. If it's very similar to |
| link:https://projects.apache.org/[one of our existing projects] we will probably ask you to consider joining it, |
| but 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 an embryo of a community |
| built around some concrete code. |
| |
| == 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. |
| |
| 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. |
| |
| * Decide to incubate at the ASF |
| * Find a champion and incubation mentors and prepare an incubation proposal |
| * Discuss the proposal with the Incubator PMC |
| * If needed, refine the list of initial committers and PPMC members in the proposal |
| * Let the Incubator PMC vote on the proposal |
| * Setup the podling's infrastructure |
| * Start building a community around the podling's code |
| * Invite new committers and PPMC members |
| * Make podling releases and refine the release process |
| * When ready to graduate, assess the podling's readiness with the incubation mentors |
| * Prepare the transfer of existing trademarks to the ASF if applicable |
| * Discuss graduation with the Incubator PMC |
| * Start the graduation vote with the Incubator PMC, leading to an ASF Board resolution to establish the top-level project. |
| |
| This is the "happy case", things might happen in a slightly different order but it gives |
| an overview of the incubation process. |
| |
| These steps are described in more detail below. |
| |
| _TODO: move this section to the homepage?_ |
| |
| == 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 incubation, 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. |
| |
| The Mentors accompany the podling for all phases that lead to graduation as a top-level project. |
| |
| == 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 a number of standard sections, see the _TODO template link_. |
| |
| Prior proposals are kept on the link:https://cwiki.apache.org/confluence/display/INCUBATOR/Proposals[Incubator wiki] and |
| can be consulted as examples, keeping in mind that the proposal template mentioned above is |
| the current reference for new proposals. |
| |
| == Incubation proposal discussion |
| |
| Once the proposal is ready, the podling representatives send it to the general@incubator.a.o list |
| for discussions, 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, in general it lasts for a few days until |
| the discussion dies down once all discussion points have been addressed. |
| |
| TODO add links to recent discussions threads. |
| |
| == 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's held on the Incubator mailing list, lasts at least 72 hours and is a majority vote by the Incubator PMC |
| members, with others being welcome to cast consultative votes. |
| |
| TODO link to recent votes as examples |
| |
| == Podling Infrastructure Setup |
| |
| Once the Incubator PMC votes to establish the podling, its infrastructure can be |
| setup. |
| |
| Usually, the champion or incubation mentors drive this process, but it can also be |
| driven by podling community members if they know how to proceed. |
| |
| TODO link to detailed instructions, do we have an up-to-date JIRA template for that? |
| |
| == Publicity and Announcements |
| |
| Publicity is _not_ permitted before the podling is accepted by the Incubator PMC. |
| |
| 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 is an essential part of the ASF's |
| governance, as it fosters project durability. |
| |
| == Podling Releases |
| |
| A podling is expected to make several software releases during incubation, that gradually progress towards being |
| fully conformant to the link:http://www.apache.org/legal/release-policy.html[ASF Release Policy]. |
| |
| In addition to following that policy, podling releases must include the word "incubating" in any release file names |
| and a DISCLAIMER (TODO: link) to avoid any confusion as to the project's status. As podlings are not "real" ASF |
| projects yet, it is important to set expectations right. |
| |
| Also, voting on podling releases happens in two phases: |
| |
| * First, the podling votes on the release on their dev mailing list, with PPMC members votes being "binding" |
| and others being welcome to cast consultative votes. The main goal of this vote is for the podling community |
| to practice and learn voting on releases. |
| * Then, if that first vote is successful, an Incubator PMC vote is held on the Incubator general mailing list. |
| This is required to make the vote an Act of the Foundation, as is required for all ASF releases. |
| |
| Incubation mentors can optionally indicate that their votes in the first phase can be carried |
| on to the Incubator PMC vote. If three mentors have voted this means the "three +1 votes" requirement is |
| already fulfilled when that second vote starts, which can speed up things. |
| |
| == 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" and 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 TLPs. A podling can |
| decide that candidates are elected to the PPMC directly, or make them committers first and |
| wait a bit to "promote" the as PPMC members. In TLPs, the latter is safer as it's fairly |
| hard to remove someone from a PMC if they're causing problems. Committers, on the other hand, |
| 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 link:https://www.apache.org/foundation/board/reporting[to the ASF Board of Directors], |
| whereas podlings report link:https://cwiki.apache.org/confluence/display/INCUBATOR/Reports[to the Incubator PMC]. Both report |
| monthly initially, then quartely. |
| * 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 organization. Podlings do not have this role, incubation mentors are volunteer community |
| members act as the liaison between the podling and the Incubator PMC. |
| |
| 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 example 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 [DISCUSS] thread is started on the Incubator general mailing |
| 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 who donated the podling code to |
| the ASF own trademarks that the podling needs, they must be |
| transfered to the ASF before graduation. |
| |
| TODO link to details |
| |
| == Graduation vote |
| |
| Once the discussion dies down on the graduation proposal, a [VOTE] is started on the Incubator general |
| mailing list, in which Incubator PMC Members cast their votes to accept recommending graduation to |
| the ASF's Board of Directors. |
| |
| This follows the standard link:https://www.apache.org/foundation/voting[ASF voting principles], it's |
| a majority vote that lasts at least 72 hours. |
| |
| == ASF Board Resolution |
| |
| Once the Incubator PMC votes to graduate the podling, it 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. |
| |
| The Board vote is effective immediately, although the link:https://www.apache.org/foundation/board/calendar.html[public minutes] |
| of the Board meeting are published 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. |