| @@ -547,4 +547,107 @@ why the expected result changed. | |||
| Please refer to @url{fate.html}. | |||
| @anchor{Release process} | |||
| @section Release process | |||
| Libav maintains a set of @strong{release branches}, which are the | |||
| recommended deliverable for system integrators and distributors (such as | |||
| Linux distributions, etc.). At irregular times, a @strong{release | |||
| manager} prepares, tests and publishes tarballs on the | |||
| @url{http://libav.org} website. | |||
| There are two kinds of releases: | |||
| @enumerate | |||
| @item | |||
| @strong{Major releases} always include the latest and greatest | |||
| features and functionality. | |||
| @item | |||
| @strong{Point releases} are cut from @strong{release} branches, | |||
| which are named @code{release/X}, with @code{X} being the release | |||
| version number. | |||
| @end enumerate | |||
| Note that we promise to our users that shared libraries from any Libav | |||
| release never break programs that have been @strong{compiled} against | |||
| previous versions of @strong{the same release series} in any case! | |||
| However, from time to time, we do make API changes that require adaptations | |||
| in applications. Such changes are only allowed in (new) major releases and | |||
| require further steps such as bumping library version numbers and/or | |||
| adjustments to the symbol versioning file. Please discuss such changes | |||
| on the @strong{libav-devel} mailing list in time to allow forward planning. | |||
| @anchor{Criteria for Point Releases} | |||
| @subsection Criteria for Point Releases | |||
| Changes that match the following criteria are valid candidates for | |||
| inclusion into a point release: | |||
| @enumerate | |||
| @item | |||
| Fixes a security issue, preferably identified by a @strong{CVE | |||
| number} issued by @url{http://cve.mitre.org/}. | |||
| @item | |||
| Fixes a documented bug in @url{http://bugzilla.libav.org}. | |||
| @item | |||
| Improves the included documentation. | |||
| @item | |||
| Retains both source code and binary compatibility with previous | |||
| point releases of the same release branch. | |||
| @end enumerate | |||
| The order for checking the rules is (1 OR 2 OR 3) AND 4. | |||
| All Libav developers are welcome to nominate commits that they push to | |||
| @code{master} by mailing the @strong{libav-stable} mailing list. The | |||
| easiest way to do so is to include @code{CC: libav-stable@@libav.org} in | |||
| the commit message. | |||
| @subsection Release Checklist | |||
| The release process involves the following steps: | |||
| @enumerate | |||
| @item | |||
| Ensure that the @file{RELEASE} file contains the version number for | |||
| the upcoming release. | |||
| @item | |||
| File a release tracking bug in @url{http://bugzilla.libav.org}. Make | |||
| sure that the bug has an alias named @code{ReleaseX.Y} for the | |||
| @code{X.Y} release. | |||
| @item | |||
| Announce the intent to do a release to the mailing list. | |||
| @item | |||
| Reassign unresolved blocking bugs from previous release | |||
| tracking bugs to the new bug. | |||
| @item | |||
| Review patch nominations that reach the @strong{libav-stable} | |||
| mailing list, and push patches that fulfill the stable release | |||
| criteria to the release branch. | |||
| @item | |||
| Ensure that the FATE regression suite still passes in the release | |||
| branch on at least @strong{i386} and @strong{amd64} | |||
| (cf. @ref{Regression Tests}). | |||
| @item | |||
| Prepare the release tarballs in @code{xz} and @code{gz} formats, and | |||
| supplementing files that contain @code{md5} and @code{sha1} | |||
| checksums. | |||
| @item | |||
| Publish the tarballs at @url{http://libav.org/releases}. Create and | |||
| push an annotated tag in the form @code{vX}, with @code{X} | |||
| containing the version number. | |||
| @item | |||
| Build the tarballs with the Windows binaries, and publish them at | |||
| @url{http://win32.libav.org/releases}. | |||
| @item | |||
| Propose and send a patch to the @strong{libav-devel} mailing list | |||
| with a news entry for the website. | |||
| @item | |||
| Publish the news entry. | |||
| @item | |||
| Send announcement to the mailing list. | |||
| @end enumerate | |||
| @bye | |||