wagtail-bakery icon indicating copy to clipboard operation
wagtail-bakery copied to clipboard

Implement Wagtail Python Package Maintenance Guidelines

Open Stormheg opened this issue 3 years ago • 5 comments

see https://github.com/wagtail/wagtail/wiki/Python-Package-Maintenance-Guidelines

Since wagtail-bakery is a first-party package we should aim to implement these guidelines.

I've copied the guidelines here and added tick marks for what needs to be done.

Readme

  • [x] Must be written in Markdown and named README.md
  • [x] Must be visible on PyPI and renders properly
  • [x] Must have badges linking to PyPI and license
    • [x] License
    • [x] PyPI
  • [ ] Should have a badge linking to online code coverage results
    • Note: ~badge is there, link is broken~ Removed the badge for now
  • [x] Must link to the changelog
  • [x] Must mention what versions of Python, Django and Wagtail are supported
    • Note: refers to 'current LTS, current stable' which can be quite outdated. Could be improved by including a table of supported versions.
  • [x] Must include an installation guide. This could be an abridged version of what is in the docs, but it must link to the full guide in the docs if this is the case
  • [x] Must link to full documentation (or, for small packages, documentation included directly in the readme)
    • Note: refers to examples in subdirectories of the repository. Could be improved.
  • [x] Must link to the Github discussions board that should be enabled on the repo (see Support)
  • [x] Must mention where to report security issues ([email protected])

Documentation

Note: Small packages may use their readme as documentation. These guidelines only apply when documentation separate to the readme exists.

  • Must be available on the web
  • Must be written in markdown
  • Must be linked to from readme
  • Must mention what versions of Python, Django and Wagtail are supported
  • Must have an installation guide and a usage guide
  • Should have reference or explanation, depending on the complexity of the package

Changelog

  • [x] Must have a changelog named CHANGELOG.md
  • [x] Should follow Keep a Changelog

Contributing guide

  • [ ] Must have a contributing guide which is named CONTRIBUTING.md

License

  • [x] Must have a permissive licence (such as BSD or MIT, but not GPL)
  • Should be licensed under BSD 3-clause, if possible
  • [x] Must have a license file at the top of the repo

setup.py / setup.cfg / pyproject.toml

  • [x] Dependency versions should be as wide as possible
  • [x] Support for EOL versions of Python, Django and Wagtail should be removed from the earliest minor release of the package following the moment the dependency went EOL. This does not apply if provision is made to maintain support for the EOL dependency.
  • [x] Testing and documentation requirements listed in extras
  • [x] Must have classifiers for Python, Django and Wagtail versions
  • [x] Must have classifier for license
  • [x] Must have project URLs linking to Documentation and Changelog

Development Process

Branching

  • [x] Default branch must be called main
  • [x] Each major release must have a branch prefixed with “stable”. For example stable/1.0.x. This is to allow security fixes to be backported

Releases

  • [x] Version numbers must follow PEP440
  • [x] Each release must have a git tag and a github release
  • [x] Each release must be mentioned in the changelog
  • [x] Each release must be published to PyPI

PyPI

  • [x] Package must have a PyPI page
  • [x] At least two core team members must have admin access
    • Everyone who has permission to publish an official Wagtail package must have 2FA enabled on their PyPI account. Remember to check this when adding collaborators (this is visible in the PyPI web UI)

Automated testing

Django unit tests

  • ~~Should use Django’s built-in test framework~~ We use py.test, which is acceptable
  • [ ] Must have unit test coverage of at least 85%
  • [ ] Should aim for unit test coverage of at least 90%
  • [ ] Migrations and tests must be excluded from coverage reports
  • [ ] Must have instructions on how to run unit tests

Continuous Integration

  • [x] Must have a Continuous Integration set up with Github Actions, Circle CI, or both
  • [x] Should test against Wagtail nightly and report issues to #nightly-build-failures channel
  • [x] Must be linted with flake8
  • [ ] Should be formatted with black and isort
    • Note: black is missing

Support

  • [x] Should provide support through Github Discussions

Stormheg avatar Oct 21 '22 12:10 Stormheg

I've updated the first message after merging your last PR. I also created the missing tags, releases and stable branches on GitHub.

However, I don't have the permissions to:

  1. rename the master branch to main
  2. enable GitHub discussions

Any owner on the Wagtail organization should be able to do it. Maybe @allcaps or @kaedroho? 🙏

loicteixeira avatar Oct 29 '22 10:10 loicteixeira

@Stormheg @loicteixeira master is renamed to main.

allcaps avatar Oct 29 '22 15:10 allcaps

The default branch has been renamed!
master is now named main

If you have a local clone, you can update it by running the following commands.

git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a

allcaps avatar Oct 29 '22 15:10 allcaps

Awesome thank you 🙏

loicteixeira avatar Oct 30 '22 05:10 loicteixeira

First comment updated with:

  • eaa5dcbf11126afc8de03fd17fc106041acf4858 added PyPI badges, removed coverage one (it was broken), added security policy, added link to discussions.
  • ticked At least two core team members must have admin access now that the project is within the wagtail-nest org
  • remove outdated notes (e.g. no changelog) even though we had ticked the box.

loicteixeira avatar Nov 05 '23 15:11 loicteixeira