Skip to main content
No one can whistle a symphony; it takes a whole orchestra to play it.— Halford E. Luccock
This document outlines our project management processes for REST framework. The aim is to ensure that the project has a high “bus factor”, and can continue to remain well supported for the foreseeable future. Suggestions for improvements to our process are welcome.

Maintenance Team

Participating actively in the REST framework project does not require being part of the maintenance team. Almost every important part of issue triage and project improvement can be actively worked on regardless of your collaborator status on the repository.

Composition

The composition of the maintenance team is handled by @tomchristie. Team members will be added as collaborators to the repository.

Responsibilities

Team members have the following responsibilities:

Issue Management

  • Close invalid or resolved tickets
  • Add triage labels and milestones
  • Search for un-triaged issues

Code Review

  • Merge finalized pull requests
  • Code changes via pull requests only
  • Typically not merge own pull requests

Documentation

  • Build and deploy documentation
  • Use mkdocs gh-deploy

Translations

  • Build and update translation packs

Further Notes for Maintainers

Code changes should come in the form of a pull request - do not push directly to main.
Maintainers should typically not merge their own pull requests.
Each issue/pull request should have exactly one label once triaged.
Search for un-triaged issues with: is:open no:label

Release Process

Release Manager

  • The release manager is selected by @tomchristie
  • The release manager will have the maintainer role added to PyPI package
  • The previous manager will have the maintainer role removed from PyPI package
Our PyPI releases will be handled by either the current release manager, or by @tomchristie. Every release should have an open issue tagged with the Release label and marked against the appropriate milestone.

Release Checklist

The following template should be used for the description of the release issue:
1

Create Release Notes PR

Create pull request for release notes based on the milestone.
2

Update Supported Versions

  • Update pyproject.toml python_requires list
  • Update pyproject.toml Python & Django version trove classifiers
  • Update README Python & Django versions
  • Update docs Python & Django versions
3

Increment Version

Ensure the pull request increments the version in rest_framework/__init__.py.
4

Update Release Notes

  • Start drafting a new release in GitHub
  • Select the tag for the next release and previous tag
  • Click “Generate release notes” button
  • Copy generated content to input.md
  • Run uv tool run linkify-gh-markdown input.md
  • Put generated content in release-notes.md file
5

Validate Documentation

  • Build and serve docs: mkdocs serve
  • Validate links: pylinkvalidate.py -P http://127.0.0.1:8000
6

Confirm with Maintainers

Confirm with other maintainers that the release is finalized and ready to go.
7

Include Release Date

Ensure that release date is included in pull request.
8

Merge Release PR

Merge the release pull request.
9

Tag the Release

Tag the release with git tag -a *.*.* -m 'version *.*.*'; git push --tags or in GitHub.
10

Wait for Workflow

Wait for the release workflow to run. It will build the distribution, upload to Test PyPI, PyPI, and create the GitHub release.
11

Announce Release

12

Close Milestone

Close the milestone on GitHub.
When pushing the release to PyPI ensure that your environment has been installed from our development requirement.txt, so that documentation and PyPI installs are consistently being built against a pinned set of packages.
To modify this process for future releases make a pull request to the project management documentation.

Project Ownership

The PyPI package is owned by @tomchristie. As a backup @j4mie also has ownership of the package. If @tomchristie ceases to participate in the project then @j4mie has responsibility for handing over ownership duties.

Outstanding Management & Ownership Issues

The following issues still need to be addressed:
TODO Items:
  • Ensure @j4mie has back-up access to the django-rest-framework.org domain setup and admin
  • Document ownership of the mailing list and IRC channel
  • Document ownership and management of the security mailing list

Build docs developers (and LLMs) love