Novacut Wiki Home > Release Process
Note: if you have a Version Zero Dmedia library (created with Novacut 13.04 or earlier), you will have to upgrade your library to Version One.
Novacut does monthly time-based releases. This forces us to keep our daily quality high, and never lets us go more than a month without delivering new code to our users.
We release on the last Thursday of the month (see the Novacut Calendar). Our monthly development involves three tiers: automatic daily builds, a week long quality iteration with the pre-stable release builds, and finally the stable release.
We currently build packages for Ubuntu 14.04 LTS.
If you're interested in using a similar approach for your product, this video shows how we do the last step of the release.
We run our unit tests during the builds, and fail the build upon any test failure. For an example of how to run your Python3 unit tests during a build, see the debian/rules file that the Dmedia FileStore uses.
If you have a checkout of any of our components from Launchpad, you can always run the unit tests from the source tree like this:
Please only use the Daily Builds PPA if you can tolerate some possibly serious bugs and want to help test things.
If you want to jump into day-to-day Novacut development, installing from the Daily Builds PPA is the first thing you should do, which you can do like this:
sudo apt-add-repository ppa:novacut/daily sudo apt-get update sudo apt-get install novacut
The pre-stable release is made (roughly) one week before the stable release is due. A branch from the release revision will be made for bug fixes if needed, but either way, development can immediately start in trunk for the next month's release. So this isn't a freeze as much as a quality proccess.
The release builds differ from the daily builds in that they're built from a source code tarball rather than directly from the bzr trunk branches on Launchpad. This week long pre-stable quality step was put in place to address 3 quality issues we had going directly from the daily builds to stable releases:
- Occasional Python packaging issues caused when a file was recently added to the branch but didn't get included in the source code release tarball
- Debian/Ubuntu packaging issues that caused problems when upgrading from the previous month's stable release
- Build lag meant API changes between the components could temporarily break the stable-releases PPA... now packages are copied from the Pre-Stable Releases PPA to Stable Releases PPA in one fell swoop, ensuring the needed versions all land at once
In general we recommend not adding the Pre-Stable Release PPA to your system because each month packages will be temporarily broken in this PPA as we stage the release. So if you add this PPA to help us test, you should then disable/remove this PPA till you help us test again the next month.
That said, this is how you add this PPA to help us test a staged release:
sudo apt-add-repository ppa:novacut/pre-stable sudo apt-get update sudo apt-get dist-upgrade
And then do this to remove this PPA after you've helped us test:
sudo rm /etc/apt/sources.list.d/novacut-pre-stable-precise.list sudo apt-get update
The Pre-Stable Releases PPA is ultimately aimed at automated testing, so please use it with caution.
Please follow these instructions to install the Novacut stable release.
The Stable Releases PPA is meant to deliver high-quality, production-ready software to our users. Of course, early in their development Novacut and Dmedia have only been interesting to developers, so the Stable Releases PPA has in reality been something of monthly developer preview release.
But as this starts to change, as Dmedia and Novacut become interesting for true production use, we need to raise the quality of what we deliver in the Stable Releases PPA. We especially need to be vigilant about any issues that could cause data-loss for our users. Having any of our apps temporarily broken because of bugs isn't something we want our users to face, but at least it's something we can fix in a timely manner. But we can't fix data loss!