---
layout: post
title: What makes Apache projects different?
date: '2010-06-03T00:00:00+00:00'
categories: comdev
---
Sharing a code repository with some other programmers might seem enough to create an open source project; the Apache Software Foundation goes further and focuses on making projects sustainable in the long term, and ensuring that our code is legally clean.

This means that our projects have to follow a (small) number of rules, and a number of best practices have been established over the years.

Here's a quick description of how Apache projects are born and live on - some of the items below are derived from the ASF's bylaws (<a href="http://www.apache.org/foundation/bylaws.html">http://www.apache.org/foundation/bylaws.html</a>), while others are best practices that evolved over time.

Projects enter the ASF via the Incubator, anyone can suggest a new project as described on the Incubator website (<a href="http://incubator.apache.org">http://incubator.apache.org</a>).

A Project Management Committee (PMC) oversees each project on behalf of its users, contributors, committers and the foundation itself.

New committers and PMC members are elected by the PMC based on merit.

Committers and PMC members are not necessarily ASF members, to be members they have to be elected separately (see "roles" in <a href="http://www.apache.org/foundation/how-it-works.html">http://www.apache.org/foundation/how-it-works.html</a>).

Each project has at least one private and one public (development,"dev") mailing list which are the only official communication channels for the PMC members and committers.

Discussions and decisions about people (such as the elections mentioned above) usually happen on the project's private list, but that's not a hard rule, each PMC can decide.

All other decisions happen on the dev list, discussions on the private list are kept to a minimum.

"If it didn't happen on the dev list, it didn't happen" - which leads to:

a) Elections of committers and PMC members are published on the dev list once finalized.

b) Out-of-band discussions (IRC etc.) are summarized on the dev list as soon as they have impact on the project, code or community.

Where possible, decisions are made by consensus. The ASF has voting procedures to help reach this consensus (<a href="http://www.apache.org/foundation/voting.html">http://www.apache.org/foundation/voting.html</a>).

Releases are created according to the ASF's release rules (<a href="http://www.apache.org/dev/release.html">http://www.apache.org/dev/release.html</a>), and all released software uses the Apache License (<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a>).

A formal PMC vote is required to publish a release. By voting to accept the release, the PMC makes the release an act of the foundation, as opposed to a personal action of the the release manager. This is a very important distinction should any legal issues arise.

Each PMC reports to the ASF's board of directors, usually quarterly. The PMC's report mentions progress made and any problems encountered. Items of particular relevance to the board include community activities,
software releases, development work and compliance with the ASF's rules and best practices.

Trademarks and logos used by ASF projects belong to the ASF.

<em>Don't hesitate to ask on the community development mailing list (<a href="http://community.apache.org/">http://community.apache.org/</a>) if you have questions about this - and in the meantime, have fun at the ASF, commit early and communicate often!</em>
