Stable releases policy (DRAFT)
Banshee's version has three components: x.y.z.
Development releases have an odd y, such as the 1.9.z, and 2.1.z series. Following our release schedule, we will make a stable release, marking the end of the prior unstable series, such as 1.9.z ending with the 2.0.0 release.
At this point, a git branch, named stable-x.y will be created from the tag for the new stable series. Development and bug fixes will continue as usual in the master branch, and bugfixes deemed important and stable enough will be cherry-picked into the stable-x.y branch. At unspecified intervals (usually based on the number/importance of the bugfixes), a new stable release will be made, from this branch, such as the 2.0.1 version.
Criteria for changes in the stable branch
A commit should only be cherry-picked to the stable branch if it meets the following criteria :
- It fixes a significant bug.
- It makes small, non-intrusive and well-understood changes to the code base.
- Unit tests and regression tests are always a big plus.
A commit should NOT be cherry-picked to the stable branch if it matches any of the following criteria :
- It introduces a new feature, user-visible or not.
- Exceptions are made for adding items to an existing feature, for example adding a new device to the list of recognized Android phones, or adding a file extension to the import whitelist.
- It changes the user interface beyond what is necessary for fixing a bug.
- It changes user-visible strings (the stable branch is in string freeze).
- It makes changes to the user's data : the Banshee database, media files or user preferences.
- It changes a publicly visible API, which could have an impact on a third-party extension.
Testing process for a stable release
Before a release is made from the stable branch, the following tests should be completed successfully :
- Running all the unit tests, via "make test"
- Start Banshee with no existing database, import music files and play them
- Start Banshee with a database created by the previous version, import files and play them
--- To be completed ---