Skip to content

Contributor Workflows

David Foster edited this page Dec 18, 2023 · 10 revisions

Code Contributors

Repeat forever:

  • Work on some tasks scheduled for the next release.
    • If you are contributing for the first time, consider looking at good first issues.
    • See the Roadmap for major items in the next release.
      • Please be sure to create an issue first before working on any item to declare to other contributors that you're working on it. Link to created issue from the Roadmap.
    • Browse high-priority issues to consider slipping in one as well.
    • 🎗️ Every release generally must have at least one releaseworthy issue.
    • 🎗️ Recommend including at least one low-priority issue in each release to ensure they're not completely starved for attention.
  • If sufficient tasks have been completed to cut a release, then actually cut a release:
    • Update the version number in src/crystal/__init__.py (and other places).
      • test_version.py will verify that all copies of the version number are updated.
    • Ensure all the automated tests pass.
    • Review/revise the release notes.
    • Rebuild the Mac and Windows binary (on the earliest supported Mac/Windows versions).
    • Install/test the built binaries on a fresh Mac/Windows VM, attempting to download/serve a simple web page like https://xkcd.com/ .
    • Draft a new Release on GitHub, with the same description as in the release notes, and upload the related binaries.
    • Update the README to point to the latest binaries.
    • Tag the Git commit as v#.#.# for the version:
      • CRYSTAL_VERSION=$(python3 -c "import crystal; print(crystal.__version__)")
      • git tag v$CRYSTAL_VERSION
      • git push origin --tags
    • Publish the new Release on GitHub
    • Upload to PyPI:
      • PYPI_PASSWORD=...
      • poetry build
      • poetry publish --username __token__ --password $PYPI_API_TOKEN
    • Announce the release via blog post, Twitter, etc if desired.

Maintainers

Repeat forever:

Clone this wiki locally