= 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, as "on the ground" agents to act as liaisons with the various ASF teams: link:http://incubator.apache.org[Incubator PMC], link:https://selfserve.apache.org/[Infrastructure team], etc., and facilitates the podling's growth and operations.

=== Incubator History

The Incubator was created way back in 2002.  Since then (as of Novemeber 2019) has been involved in helping 315 podlings, of which more than 200 have graduated. They have been guided and supported by more than 300 mentors. There are around 45 to 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's a selection of 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 what it's 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], where former Incubator PMC chair Jukka Zitting presents the Incubator, at 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 the 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.