Skip to main content
`Ctrl`+`K`

# Making releases

## Our goals

Our release policy describes how we decide when to make a new public release of the theme so that other projects may use new features and improvements. It tries to balance these goals:

- Release relatively frequently, so that we provide a continuous stream of improvement to projects that use the theme, and minimize the effort needed to upgrade.

- Do not surprise people (especially with negative surprises) and provide time for projects to provide feedback about upcoming features.

- Minimize the toil and complexity associated with releases, and reduce information silos and bottlenecks associated with them.

## When to make a release

Anybody is encouraged to make a new release if:

- It has been more than a month since the last release.

- OR a significant change has been made to our code that warrants a release.

- AND there are no open issues with a impact: block-release label.

### Release candidates

If a release includes complex or many changes (especially in JavaScript), make a `release candidate` and ask for feedback from users. This is important because we do not test much of the CSS and JavaScript-based functionality in our testing infrastructure. After a week or so, if there are no blocking issues that have been opened since the Release Candidate, we can make a full release.

## Process for making a release

This theme uses GitHub tags and releases to automatically push new releases to PyPI. Follow these steps to make a release:

- (optionally) Create a GitHub milestones to organize the issues that should be resolved as part of a new release.

- Decide if it’s time to make a release be reading When to make a release and decide if it is time for a release.

- Copy the release checklist into a new issue.

- Complete the checklist. That’s it!

## Choosing a version increment

We use semantic versioning to decide whether it’s a major, minor, or patch bump. Before we have released `1.0`, treat minor versions as breaking releases, and patch versions as feature / patch releases. If this is a release candidate, tag it like `0.1rc1`.