PostgreSQL has a very unique way to review the code submitted by developers. Most open source software uses Github pull requests to accommodate users’ code. PostgreSQL has a Github page but doesn’t manage pull requests using Github. Many years ago, PostgreSQL introduced CommitFest to manage its patches, where postgres opens for a three to four month “festival” to accept patches. The CommitFest is set up to keep track of patches’ statuses. In practice, CommitFest is mainly an admin page used to manage patches. Volunteers and community committers review the submitted code, after which committers are able commit those patches that have been approved. There have been almost 22 CommitFest events since 2014.
When a patch is submitted, a volunteer can choose to review it. A review can be done by more than one person. At any point, a patch will be in one of the following statuses:
- Moved to next CF (CommitFest)
- Needs Review
- Ready for Committer
- Returned with Feedback
- Waiting on Author
Needs review indicates that the patch is waiting for a reviewer to analyze it. Once a reviewer has confirmed that the patch in question is good to be committed, a community committer will pick up the patch, review it and commit it if all is well, otherwise, they reject it or return it with feedback.
Patches are categorized in various ways including:
- Bug Fixes
- Code Comments
- Monitoring & Control
- Procedural Languages
- Replication & Recovery
- SQL Commands
- Server Features
- System Administration
A complete history of a patch, along with a discussion on email, is maintained with each revision which makes it very simple to track the complete process from submission of a patch to its eventual conclusion.
Here are some graphs that show various stats for the past CommitFests.
Now it’s time to end the 22nd CommitFest, the first such festival for 2019. This event saw 207 patches, almost 52% of which were committed to the master branch, which is a good ratio. This master branch becomes the development branch for the next major PostgreSQL release.
Summary of outcomes from CommitFest 22:
- Patches committed: 100.
- Moved to next CommitFest: 84.
- Withdrawn: 5.
- Rejected: 3.
- Returned with Feedback: 15
As a reviewer, I worked on some of these patches this time around, and I’ll devote some more time in the next CommitFest to more reviews. If you like the idea, then I’d encourage you to come and participate in the review process – we can always use more people. Even if you are not a developer, you can help to test a patch and verify the fix on a different environment that the developer may not have.
You can read more about how a CommitFest is run at this PostgreSQL wiki page.