= The Apache Incubator
Apache Incubator PMC
2002-10-16
:jbake-type: homepage
:jbake-status: published
:idprefix:
:imagesdir: ./images/

== About The Incubator

The Apache Incubator provides services to projects which want to enter the Apache Software Foundation (ASF).

It helps those incoming projects (called "podlings") adopt the Apache link:http://apache.org/theapacheway/[style of governance and operation] and guides them to the ASF services available to our projects so they can become top-level ASF projects ("TLPs").

The Incubator delegates a few mentors for each podling to act as liaisons with the various ASF teams: link:http://incubator.apache.org/whoweare.html#the_incubator_project_management_commitee_pmc[Incubator PMC], link:https://selfserve.apache.org/[Infrastructure team], etc., and facilitate the podling's growth and operations.

=== Incubator History

The Incubator was created link:https://www.apache.org/foundation/records/minutes/2002/board_minutes_2002_10_16.txt[ in 2002].  As of November 2019 it has helped 315 podlings, of which more than 200 have graduated. More than 300 mentors have guided and supported podlings. There are around 45 or 50 podlings in incubation at any one time, and incubation typically takes 1 1/2 years.


=== Incubator Cookbook

Our link:http://incubator.apache.org/cookbook/[cookbook] helps potential podlings decide whether the ASF is a good fit for them and guides them through the steps required to become an ASF podling.

=== Incubator Talks

There have been many Incubator talks at many conferences over the years. Here are a few of them.

  * See a keynote link:https://www.youtube.com/watch?v=TQwrH0PlpZg[The Apache Way], by Rich Bowen at MesosCon Europe in 2017 for a  good background of how the ASF operates and what its values are.
  * For guidance on releases see link:https://www.youtube.com/watch?v=I0-lp1t9ee0[How to get your release through the Incubator] presented at ApacheCon North America 2017 and this link:http://training.apache.org/topics/ApacheWay/NavigatingASFIncubator/index.html[slide deck], presented at ApacheCon North America 2019.
  * A more general talk on link:https://www.youtube.com/watch?v=hpAv54KIgK8[Effective open source management] by Shane Curcuru, from ApacheCon North America 2017.
  * For how to get out of the Incubator and become a successful TLP see John D. Ament talk link:https://www.youtube.com/watch?v=yWurOHvm5WM[Navigating the Incubator Trenches] from ApacheCon North America 2017.
  * link:https://www.youtube.com/watch?v=SCDv2hUgOjU[Apache Incubator: the gateway into the Apache Way] by Roman Shaposhnik and Suresh Marru at ApacheCon North America 2014.
  * See also the link:http://www.youtube.com/watch?v=KopPbWS87fw[Life In The Apache Incubator video], in which former Incubator PMC chair Jukka Zitting presents the Incubator, from ApacheCon Europe 2012.

== About The Apache Software Foundation

The Apache Software Foundation provides organizational, legal, and financial support for a broad range of open source software projects.

The Foundation provides an established framework for intellectual property and financial contributions that simultaneously limits potential legal exposure for the contributors.

Through a collaborative and meritocratic development process known as "link:http://apache.org/theapacheway/[the Apache Way]", Apache projects deliver enterprise-grade, freely-available software products that attract large communities of users.

The pragmatic and business-friendly link:http://apache.org/licenses/LICENSE-2.0[Apache License] makes it easy for all users, commercial and individual, to deploy Apache products. link:http://www.apache.org/foundation/[Learn more about the ASF] as a whole, or engage with the link:https://community.apache.org/[Apache Community Development] project with your general questions about the ASF.
