Skip to content
Martin McGrane edited this page Aug 8, 2019 · 1 revision

Making a release

Versioning

Before a release is made, the changelog needs to be updated. Between releases '(@VERSION@-1) UNRELEASED' is used for the current version information. This is generated automatically during the build process. For a release, this information, along with the current date and a list of changes, should be added to the changelog. After the release the auto-updateable tag should be first in the list of versions to ensure correct labelling of HEAD releases.

Github

The release process from the GitHub side is simple. As a souffle-lang admin, go to the Releases page. Draft a new release. Currently this is done by clicking on the 'Draft a new release' button. Enter the appropriate new tag in the tag section and set the release title to 'Release '. In the description section enter a list of the important changes. This list can be populated by searching through all pull requests made since the last release and adding all non-trivial fixes/changes. Be sure to document any user interface changes.

Automation

Once a release is made it will be tested on travis and distribution packages prepared. These are added to the Releases page for the new release, along with the GitHub-generated source release. The stable repositories on Bintray will also be updated with the new release package.

When to release

Major versions

Major versions are released when a breaking change is introduced to add new features/remove previously deprecated features. Bugfixes could potentially also introduce breaking changes so may also lead to a major version change.

Minor versions

Minor versions are released for major performance improvements or important new features. They may also be used before a major feature is added to encourage stability of released versions.

Really minor versions

RMVs are used for bug fixes that do not change interfaces or introduce new features.