Apache Foundation - How to Apply and Join

9 October 2024

1. Introduction

This document, written as part of the work of the Center for Open-Source Research Software Stewardship and Advancement (CORSA), describes the information that a particular software project needs to collect/have in order to apply to and then join the Apache Software Foundation (ASF). Much of the content in this document comes from ASF documents on the website, specifically including Apache’s Incubator Guide and Community Guide. The ASF provides some general background on its about page:

“The ASF was founded with a mission to provide software for the public good. For 25 years the foundation has delivered reliable software that fuels innovation and powers organizations of all sizes - from small businesses to the most advanced data-driven enterprises.”

“From the flagship Apache HTTP project to more recent projects spanning AI/ML, big data, cloud computing, financial tech, geospatial, IoT, search, and more – ASF projects serve the public good with use cases such as fueling cancer research; aiding in clean energy research; and reducing food waste.”

The Apache Software Foundation is a 501(c)(3) organization. Compared with other software foundations such as NumFOCUS or HPSF, the ASF has a stronger focus on governance aspects, particularly on community inclusivity (e.g., the Apache Way also referred to as “Community over Code”), and has a stronger sense of projects making up a software stack, but less of a focus on scientific or research software. However, when there has been s a quorum of Scientific Software projects and developers who wants to champion a research software specific events or policies, the board has been very favorable.

The Apache Software Foundation (ASF) provides software for the public good, as explained in its vision statement from 2018. ASF projects operate according to the Apache Way, a set of principles and best practices. ASF puts a strong emphasis on Community Over Code, fierce independence from companies and organizations, and openness in all aspects of its work.

Joining the ASF for a project means giving up control of it and its trademarks, if any. The project is then run by its Project Management Committee (PMC). ASF helps a project take on a life of its own, with potentially a much broader reach, due to the ASF’s independence and emphasis on project sustainability.

The ASF intentionally does not have a technical strategy; the purpose of a software project is not a factor in it joining ASF. If a project that wants to join is very similar to an existing project, the ASF will probably ask the project to consider joining/merging with that existing project.

Apache has two types of projects:

To give “podlings” (incubating projects) the best chances of success, the ASF usually ask them to enter the Incubator with at least the start of a community built around an existing codebase.

The Apache Software Foundation (ASF) was formed in 1999 primarily to (see https://www.apache.org/foundation/how-it-works/):

  1. Provide a foundation for open, collaborative software development projects by supplying hardware, communication, and business infrastructure
  2. Create an independent legal entity to which companies and individuals can donate resources and be assured that those resources will be used for the public benefit
  3. Provide a means for individual volunteers to be sheltered from legal suits directed at the Foundation’s projects
  4. Protect the ‘Apache’ brand, as applied to its software products, from being abused by other organizations

The principles of the ASF are (see https://www.apache.org/foundation/):

  1. Enabling Strong Communities: The Foundation’s community practices are considered industry standards, including the widely adopted Apache License 2.0, the incubator program, and a consensus-driven decision model that enables projects to build strong communities and thrive.
  2. Creating equity: Diversity and Inclusion project is dedicated to understanding and promoting the diversity and inclusion of ASF’s open source communities. It develops tools and frameworks to foster inclusion and increase diversity in all phases of Apache projects.
  3. Institutionalizing Open Source: ASF is a U.S. 501(c)(3) charitable organization funded by individual donations and corporate sponsors, and is run almost exclusively by volunteers that provide support for hundreds of projects. Since 1999, it has provided an established framework for intellectual property and financial contributions that enables millions of people around the world to collaborate and deliver freely available software.
  4. Servant leaders: The Foundation itself is a collaborative project of the ASF, which means its leadership is elected by Members and maintains its own governance. The leadership is composed entirely of volunteers who are committed to advancing ASF’s mission of providing software for the public good.

Project benefits from joining ASF are:

Some additional benefits from joining a foundation are discussed in Section 5 of Watson, et al., 2023 and in CORSA’s documentation.

2. Application process

The Apache Incubator (see the third subsection below) provides services to projects that want to enter the ASF. Read the Incubator Cookbook to understand whether ASF is a good fit for a project and to understand the steps required to become an ASF podling.

2.1. Steps to join the Incubator

The goal of incubation is to become an Apache Software Foundation (ASF) Top-Level Project (TLP). See the 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:

Described above is the “happy case”. Things might happen in a slightly different order, but it gives an overview of the typical incubation process.

2.2. Proposal details

To submit, both a short abstract and a longer proposal are needed. The proposal must include the following (taken from the Incubator wiki). The Incubator wiki also contains past project proposals.

  1. Background. Provides context for those unfamiliar with the problem space and the history of the project. Explain terms whose meanings may be misunderstood (for example, where there is not a single widely adopted definition).
  2. Rationale. Explains why this project needs to exist and why should it be adopted by Apache. This is the right place for discursive material.
  3. Initial Goals. A complex proposal (involving multiple existing code bases, for example) may cause concerns about its practicality. A good way to address these concerns is to create a plan that demonstrates the proposal is feasible and has been carefully thought through. Many projects will not need this section.
  4. Current Status. This section (and the contained topics) describes the candidate's current status and development practices. This should be an honest assessment balancing these against Apache's principles and development ideals.
    1. Meritocracy. Apache is a meritocracy. Once a developer has submitted enough good patches, then it should be natural that they are elected to committer. It should be natural that active committers are elected to the project management committee (PMC). This process of renewal is vital to the long term health of Apache projects. This is the right place to demonstrate that this process is understood by the proposers.
    2. Community. Apache is interested only in communities. Candidates should start with a community and have the potential to grow and renew this community by attracting new users and developers.
    3. Core Developers. Apache is composed of individuals. It is useful to provide a brief introduction to the developers on the initial committers list. This is best done here (and not in that section). This section may be used to discuss the diversity of the core development team.
    4. Alignment. Describe why Apache is a good match for the proposal. An opportunity to highlight links with Apache projects and development philosophy.
  5. Known Risks. An exercise in self-knowledge. Risks don't mean that a project is unacceptable. If they are recognized and noted, then they can be addressed during incubation.
    1. Project Name. Describe what has been done to check that the name of the project is suitable and if the project has legal permission to continue using its current name. Also indicate if the wide use of the name is likely to cause confusion about who owns the project or banding issues in the future.
    2. Orphaned Products. A public commitment to future development. Recruiting a diverse development community and a strong user base takes time. Apache needs to be confident that the proposers are committed.
    3. Inexperience with Open Source. If the proposal is based on an existing open source project with a history of open development, then highlight this here. If the list of initial committers contains developers with strong open source backgrounds, then highlight this here.
    4. Length of Incubation. This section describes how long the project is expected to be in incubation before its graduation as a top level project and the reasons for that. This shows the project has thought about the steps required to graduate and that there are not any unrealistic expectations.
    5. Homogenous Developers. Healthy projects need a mix of developers. Open development requires a commitment to encouraging a diverse mixture. This includes the art of working as part of a geographically scattered group in a distributed environment. Starting with a homogenous community does not prevent a project from entering incubation. But for those projects, a commitment to creating a diverse mix of developers is useful. Those projects who already have a mix should take this chance to highlight that they do.
    6. Reliance on Salaried Developers. A project dominated by salaried developers who are interested in the code only whilst they are employed to do so risks its long term health. Apache is about people, not corporations. It hopes that developers continue to be involved with Apache no matter who their current employer happens to be. This is the right place to indicate the initial balance between salaried developers and volunteers. It's also good to talk about the level of commitment of the developers.
    7. Relationships with Other Apache Products. Apache projects should be open to collaboration with other open source projects both within Apache and without. Candidates should be willing to reach outside their own little bubbles.
    8. An Excessive Fascination with the Apache Brand. Concerns have been raised in the past that some projects appear to have been proposed just to generate positive publicity for the proposers. This is the right place to convince everyone that is not the case.
  6. Documentation. References to further reading material.
  7. Initial Source. Describes the origin of the proposed code base. If the initial code arrives from more than one source, this is the right place to outline the different histories. If there is no initial source, note that here.
  8. Source and Intellectual Property Submission Plan. Complex proposals (typically involving multiple code bases) may find it useful to draw up an initial plan for the submission of the code here. Demonstrate that the proposal is practical.
    1. External Dependencies. External dependencies for the initial source is important. Only some external dependencies are allowed by Apache policy. These restrictions are (to some extent) initially relaxed for projects under incubation. If the initial source has dependencies which would prevent graduation, then this is the right place to indicate how these issues will be resolved.
    2. Cryptography. If the proposal involves cryptographic code either directly or indirectly, Apache needs to know so that the relevant paperwork can be obtained.
  9. Required Resources
    1. Mailing lists. The minimum required lists are private@{podling}.incubator.apache.org (for confidential PPMC discussions) and dev@{podling}.incubator.apache.org.
    2. Subversion Directory. It is conventional to use all lower case, dash-separated (-) directory names. The directory should be within the incubator directory space ([http://svn.apache.org/repos/asf/incubator](http://svn.apache.org/repos/asf/incubator)).
    3. Git Repositories. It is conventional to use all lower case, dash-separated (-) repository names. The repository should be prefixed with incubator and later renamed assuming the project is promoted to a TLP.
    4. Issue Tracking. Apache runs JIRA and Bugzilla. Choose one. Indicate the name by which project should be known in the issue tracking system.
    5. Other Resources. Describe here any other special infrastructure requirements necessary for the proposal. Note that the infrastructure team usually requires a compelling argument before new services are allowed on core hardware.
  10. Initial Committers. List of committers (stating name and an email address) used to bootstrap the community. Mark each which has submitted a contributor license agreement (CLA). Existing committers should use their apache.org email address. Others should use the email address that is (or will be) on the CLA. That makes it easy to match CLAs with proposed committers to the project. It is a good idea to submit CLAs at the same time as the proposal.
  11. Sponsors. Committers at Apache are individuals and work here on their own behalf. They are judged on their merits, not their affiliations. However, in the spirit of full disclosure, it is useful for any current affiliations which may affect the perceived independence of the initial committers to be listed openly at the start. For example, those in salaried positions whose job is to work on the project should list their affiliation. Having this list helps to judge how much diversity exists in the initial list and so how much work there is to do. This is best done in a separate section away from the committers list. Only the affiliations of committers on the initial bootstrap list are relevant. These committers have not been added by the usual meritocratic process. It is strongly recommended that once a project is bootstrapped, developers are judged by their contributions and not by their background. This list should not be maintained after the bootstrap has been completed.
  12. Champion. The Champion is a person already associated with Apache who leads the proposal process. It is common - but not necessary - for the Champion to also be proposed as a Mentor. A Champion should be found while the proposal is still being formulated. Their role is to help formulate the proposal and work with you to resolve comments and questions put forth by the IPMC while reviewing the proposal.
  13. Nominated Mentors. Lists eligible (and willing) individuals nominated as Mentors [definition] for the candidate. Three Mentors gives a quorum and allows a Podling more autonomy from the Incubator PMC, so the current consensus is that three Mentors is a good number. Any experienced Apache community member can provide informal mentorship anyway, what's important is to make sure the podling has enough regularly available mentors to progress smoothly. There is no restriction on the number of mentors, formal or informal, that a Podling may have.
  14. Sponsoring Entity. The Sponsor is the organizational unit within Apache taking responsibility for this proposal. The sponsoring entity can be:
    • The Apache Board
    • The Incubator
    • Another Apache project The PMC for the appropriate project will decide whether to sponsor (by a vote). Unless there are strong links to an existing Apache project, it is recommended that the proposal asks that the Incubator for sponsorship.
    Note that the final destination within the Apache organizational structure will be decided upon graduation.

2.3. Role of the Incubator

Since the meritocratic rules operate across the ASF from bottom to top, it is vital for the long-term stability of this form of government that a project’s initial set of committers has to understand very well the dynamics of such a system, and to share the same philosophical attitude toward collaboration and openness that the ASF expects from its projects.

The incubator is responsible for:

The incubator (like the board) does not perform filtering on the basis of technical issues. The foundation respects and supports a variety of technical approaches. It doesn’t fear innovation or even internal confrontation between projects which overlap in functionality.

The incubator filters projects on the basis of the likelihood of projects becoming successful meritocratic communities. The basic requirements for incubation are:

The incubation period normally serves to estimate whether the project is able to increase the diversity of its committer base and play within the meritocratic rules of the foundation.

It might seem rather easy to achieve, but, in a volunteer and highly selective environment, attracting new committers is not automatic.

Diversity of committership is important for two main reasons:

3. The project as part of the ASF

The following entities govern the Apache Software Foundation (see https://www.apache.org/foundation/governance/):

For all the details, read ASF’s Governance overview.