This page gives some basic background on how the Apache HTTP Server source is maintained and how changes get made.
The Apache HTTP Server source code is hosted in git at https://github.com/apache/httpd. The repository used to live in Subversion, and the old SVN tree is no longer used for new work.
There are two active branches:
To get a copy of the source:
% git clone https://github.com/apache/httpd.git
% cd httpd
This gives you trunk. To work on the stable branch instead:
% git switch 2.4.x
The developers continue to seek to maintain module compatibility between 2.4.1 and future 2.4 releases for administrators and end users.
All changes go through pull requests on GitHub, for both trunk and 2.4.x.
Fork https://github.com/apache/httpd on GitHub and clone your fork.
Create a branch for your change from the branch you are targeting:
% git switch -c my-fix trunk
Make your changes and check that they build and pass the tests. Please follow the Apache style, as described in the style guide.
Commit, push the branch to your fork, and open a pull request against trunk or 2.4.x in the httpd repository.
Keep your branch up to date with the upstream branch while the pull request is open, as reviewers may ask for changes before it can be merged.
Larger changes or new features are worth raising on the developers list before you spend a lot of time on them.
The review-then-commit and commit-then-review rules that applied under SVN still apply. The project guidelines describe them in detail.
Voting on backports in the STATUS file has been replaced by pull request reviews. To propose a backport to the stable branch, open a pull request against 2.4.x. The approvals that used to be recorded as votes in STATUS are now given as reviews on that pull request.
Committers need to link their ASF and GitHub accounts before they can push to or merge in the repository. This is done through the ASF GitBox account linking page, which also requires two-factor authentication to be enabled on your GitHub account.
A few other repositories are used by the project.
The website is hosted on GitHub at https://github.com/apache/httpd-site/.
The pages use Markdown syntax. When a change is committed to this repository, the corresponding HTML files are generated automatically and published to https://httpd.apache.org/.
The Perl test framework is hosted on GitHub at https://github.com/apache/httpd-tests.
Release scripts and other developer tools are still kept in SVN and can be checked out with:
% svn checkout https://svn.apache.org/repos/asf/httpd/dev-tools/trunk/ httpd-dev-tools
The scripts used to roll a release are in the release/ directory. The policies and procedures for rolling a release are covered in the release guidelines.
Release candidates are staged in https://dist.apache.org/repos/dist/dev/httpd/ and final releases are published from https://dist.apache.org/repos/dist/release/httpd/, which is mirrored to https://downloads.apache.org/httpd/. Both are SVN repositories, as with all ASF release areas.
The tools used to build the manual from the XML sources are still kept in SVN at https://svn.apache.org/repos/asf/httpd/docs-build/trunk.
Building the documentation from a git checkout is currently broken. This is being worked on with ASF Infrastructure in INFRA-28588. Updated instructions will be added here once it is resolved.
GitHub Actions is used for CI.
It builds httpd on different processors and operating systems, with different compiler and library versions, and with different configurations.
On a successful build, the in-tree tests and the Perl test framework are run as well.
This runs for pull requests and for each commit. The goal is to spot new build issues and regressions early.
If you want to commit something without triggering the whole process (a documentation change, for example), add the magic "[skip ci]" keyword to the commit message.
Here are the latest build results.