Release Process

Plan the Release

  1. Pick a release date.
  2. Schedule a string freeze and translation period prior. One week is fine.
  3. Announce the schedule.

String Freeze

On the day of the string freeze, update the .ts files for the translators. We are now standardized on Qt5, so make sure that is the current version of Qt.

$ QT_SELECT=qt5 scripts/make-ts 

Commit this:

$ svn commit -m "Update .ts files for xx.xx (scripts/make-ts)"

Announce the string freeze/start of the translation period.

Release Eve

On the eve of the release, send out a reminder for any last minute contributions and translations.

Pending Changes

Check email for any pending changes or requests that need to be included in this release. Make those changes as appropriate.

File Format Version

Determine whether any changes have been made to the .rg file format. If so, decide the extent of those changes and what level of file format version update is required. Update the file format version as appropriate. See comments on FILE_FORMAT_VERSION_POINT in RosegardenDocument.cpp.

Changing the point version has no effect on anything as it is ignored. Changing the minor version will cause an “incompatibilities” warning on load, but the file will be loaded. Use this when data might be lost when opening a file with an older version of rg (e.g. new fields have been added). Changing the major version will cause older versions of rg to refuse to load the file. Obviously, we should avoid this at all costs. The chances are good that we will never have to do this.

Test a Release Build

On the release date, do a Release build and a few sanity checks to make sure nothing obvious is broken.


Make a note of the svn revision of the last release. E.g. for release 14.02, the revision according to the tags was 13662. (Note that this might not match up since the tags can be made long after the release. However, with the current build script this should only be “off by one” from the actual revision.)

In a working copy, do an svn log to see the log entries from the previous release to the latest.

$ svn log -v -r 13662:HEAD | less

An alternative would be to browse the commits on sourceforge. I find it cumbersome, however.

  • Update the CHANGELOG to reflect the commits since the last release. Wrap to 72 columns for email.
  • Copy the latest version to a new page on the wiki.

Update appdata

Add release notes for the new release to the appdata file:


Validate with appdatacli:

appstreamcli validate data/appdata/rosegarden.appdata.xml

Update the README

Update copyright year as needed.

Update anything else that seems like it needs updating.

Update AboutDialog.cpp

Update copyright year as needed.

Update data.qrc

Run “scripts/rebuild-qrc-nosvn” to make sure the data.qrc file is up-to-date.

Check Code Name and Version

Check/adjust the code name/version number in CMakeLists.txt.

The code name/version number will be bumped after delivery, so this should be OK.

Commit Changes

If needed:

svn commit -m "Updates for version xx.xx"

Create tarball

Use the make-release-tarball script:

scripts/make-release-tarball RELEASE

Tagging the Release

The make-release-tarball script will tag the release from trunk. This is correct for non-point releases.

For point releases, we need to tag the release from the stable branch:

svn copy svn+ssh:// \
         svn+ssh:// \
         -m "Tag release 17.12.1"

We might upgrade make-release-tarball to accept a “POINT” option that will change the tagging behavior. Or we might be able to parse the output of svn info and use that to generate the two URLs for tagging. That should fix the 502 errors.

Tagging Errors

For some reason, I get a lot of errors during the tagging process.

Bad Gateway

An “Unexpected HTTP status 502 'Bad Gateway'” error indicates that the URL used to create the tag doesn't match the URL used to checkout the repo. Use svn info to figure out what URL type to use:

$ svn info .
URL: svn+ssh://
Relative URL: ^/branches/stable-17.12
Repository Root: svn+ssh://

From the above we know that we need to use an “svn+ssh” style URL to create a tag.

Password Prompts

It might prompt for password, you can cancel that. This might drop to the command line and prompt for a password. I usually enter it here and get a ton of errors related to trying to launch kwalletd. It still seems to work.


Any errors related to a “wallet” can safely be ignored and the wallet UI can safely be closed via the “cancel” button.

Test tarball

Sanity test the tarball. Build and run from it.


  1. Create new version directory on sf
  2. Upload the tarball to sf
  3. Upload the current version section of the CHANGELOG to sf as README.
  4. Update sourceforge to point to the new version. Use the “i” icon to the right of the file. Set “Default Download For:” to Tux. Set “Download Button:” text to “Rosegarden xx.xx”.

Update Website

Update the website to point to the new version. The website can be updated by committing changes to the website directory in svn. These are automatically uploaded to the web server. The webpages use Server Side Includes (SSI), so you'll need to set up a web server to test before uploading changes.

  • /website/subleft.html (main page on the left)
    • Add a new “newsheadline”.
  • /website/resources/authors/index.shtml
    • Add any new authors.

Test, commit, wait for the auto upload (takes a while), and test.

See for an example.

Update CMakeLists.txt

Bump the version number and codename.



  • user list
  • dev list?
  • facebook
  • twitter?
  • etc…?

Point Release Process

Discussion uses 17.12.1 as an example.

In svn a tag will move if you commit to it, so we will need to create a stable-17.12 branch from 17.12 so that we can make changes. Then we can do the usual tagging process on that branch to tag it for release.

svn copy \ \
         -m "Create stable-17.12 branch."

Checkout stable-17.12 someplace. Replace “tedfelix” with your sf userid.

svn checkout --username=tedfelix \
    svn+ssh:// \

Cherrypick the various commits you need into the stable branch. Use svn merge to cherrypick. Cherrypicking a single commit:

svn merge -c 15189 ^/trunk/rosegarden

You'll need to commit that. Since svn doesn't bring in any information from the original commits, you'll want to include a list of revisions in the commit message. Format them with square brackets to get hyperlinks in sf: [r15189].

Finally, go back through the release process with the following changes:

  1. Update the release notes with a new point release fixes section at the top. E.g. “Fixes for 17.12.1”.
  2. Version will need to be adjusted in CMakeLists.txt.
  3. No need for a new version directory on sf.
  4. No need to bump the version number after the tarball.

See also

dev/release_process.txt · Last modified: 2020/06/04 05:05 by tedfelix
Recent changes RSS feed Creative Commons License Valid XHTML 1.0 Valid CSS Driven by DokuWiki