What is the Commitfest app?
This is the "Commitfest app", the website where the PostgreSQL community tracks proposed changes to PostgreSQL. If you're familiar with GitHub, then this website fulfills a similar purpose to the list of Pull Requests (PRs) on GitHub repo. The most important difference is that the Commitfest app is not the "source of truth", instead the PostgreSQL mailinglists are. The "Commitfest app" is simply a tool to help the communtiy keep track of changes proposed on the mailinglist in an organized manner. Below are the most important concepts that you should know about when using the Commitfest app.
Commitfest
PostgreSQL development is organized into "Commitfests" (often abbreviated to "CF"). Each Commitfest contains a list of entries called patches (similar to PRs, see below for details). The main purpose of Commitfests are to make sure patches that people are interested in are not forgotten about, as well as running CI (aka CFBot) on these patches. Each Commitfest has a period where it is "Open", in which people can add patches to the Commitfest. This "Open" period is followed by an "In Progress" period, in which the idea is that committers and reviewers focus on reviewing and committing the patches in this "In Progress" Commitfest. At the end of the month a Commitfest gets "Closed" (and stays closed forever). Any not yet committed patches can be moved to the following "Open" Commitfest by their authors, to try again in the next cycle. Having these timebound periods has several benefits:
- It gives a regular cadence of development to people who like to have this.
- It provides a natural age-out mechanism for patches that the submitter has lost interest in.
- It provides an easy way for reviewers/committers to prioritize which patches to review.
There are 5 Commitfests per year. The first one is "In Progress" in July and starts the nine months feature development cycle of PostgreSQL. The next three are "In Progress" in September, November and January. The last Commitfest of the feature development cycle is "In Progress" in March, and ends a when the feature freeze starts. The exact date of the feature freeze depends on the year, but it's usually in early April.
Commitfest closure
When a Commitfest closes, patches that have been active recently are automatically moved to the next Commitfest. A patch is considered "active" if it has had email activity in the past 30 days and has not been failing CI for more than 21 days. Patches that are not automatically moved will stay in the closed Commitfest, where they will no longer be picked up by CI. Authors of such patches that have enabled "Notify on all where author" in their profile settings will receive an email notification asking them to either move the patch to the next Commitfest or close it with an appropriate status.
Patches
A "patch" is a bit of an overloaded term in the PostgreSQL community. Email threads on the mailing list often contain "patch files" as attachments, such a file is often referred to as a "patch". A single email can even contain multiple related "patch files", which are called a "patchset". However, in the context of a Commitfest app a "patch" usually means a "patch entry" in the Commitfest app. Such a "patch entry" is a reference to a mailinglist thread on which change to PostgreSQL has been proposed, by someone sending an email that contain one or more "patch files". The Commitfest app will automatically detect new versions of the patch files and update the "patch entry" accordingly.
There are three "Active" categories of patch status:
- Waiting on Author: The author needs to make changes based on a review that took place on the mailinglist.
- Needs Reviewer: The patch needs guidance or a review.
- Ready for Committer: The patch has been reviewed by non-committers and is considered ready to be committed by one of those reviewers. A committer might still decide that more changes are needed.
- Committed: A committer has applied the patches to the git repo.
- Withdrawn: The author has withdrawn the patch from consideration.
- Rejected: A committer has decided that either the feature is not desired, or the design of the patch has severe flaws. People should look at the emails on the email thread, for details on why the patch was rejected.
- Returned with Feedback: A committer has decided that the patch needs changes, but the author has not responded for long enough that the patch is now considered inactive. The author (or someoene else) is free to re-open again when they address the required changes.
Drafts
Appart from the regular Commitfests, there is also a "Drafts" Commitfest that is used to collect patches for new features that are not yet ready for general reviewing. There are various reasons why a patch might not be ready for general reviewing but the author still wants to track it publicly in the "Commitfest app", this is usually due to the combination of one of the following reasons:
- The author has temporarily lost interest, but expects to come back in the future.
- The author does not want to forget about it
- The author wants feedback from a specific subset of people before requesting general feedback
- The author wants to have CI run on the patch, while they are polishing it further
- The author would like to be notified when the patch is in need of a rebase
Another difference between Draft Commitfests and regular Commitfests is that Draft Commitfests don't list resolved patches.