No one can whistle a symphony; it takes a whole orchestra to play it.— Halford E. Luccock
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
Code Changes
Code changes should come in the form of a pull request - do not push directly to main.
Pull Requests
Pull Requests
Maintainers should typically not merge their own pull requests.
Issue Labels
Issue Labels
Each issue/pull request should have exactly one label once triaged.
Finding Un-triaged Issues
Finding Un-triaged Issues
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
@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:Update Supported Versions
- Update
pyproject.tomlpython_requireslist - Update
pyproject.tomlPython & Django version trove classifiers - Update
READMEPython & Django versions - Update
docsPython & Django versions
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.mdfile
Validate Documentation
- Build and serve docs:
mkdocs serve - Validate links:
pylinkvalidate.py -P http://127.0.0.1:8000
Confirm with Maintainers
Confirm with other maintainers that the release is finalized and ready to go.
Tag the Release
Tag the release with
git tag -a *.*.* -m 'version *.*.*'; git push --tags or in GitHub.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.
Announce Release
- Make announcement on discussion group
- Make announcement on social media (Mastodon, etc.)
- Post on Django forum
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.
