summaryrefslogtreecommitdiffstats
path: root/DOCS/release-policy.md
diff options
context:
space:
mode:
Diffstat (limited to 'DOCS/release-policy.md')
-rw-r--r--DOCS/release-policy.md72
1 files changed, 47 insertions, 25 deletions
diff --git a/DOCS/release-policy.md b/DOCS/release-policy.md
index 9fb6255cc6..23bc48befd 100644
--- a/DOCS/release-policy.md
+++ b/DOCS/release-policy.md
@@ -1,13 +1,15 @@
Release Policy
==============
-Once or twice a month, a new release is cut off of the master branch and is
+Once or twice a year, a new release is cut off of the master branch and is
assigned a 0.X.Y version number, where X is incremented each time a release
contains breaking changes, such as changed options or added/removed features,
and Y is incremented if a release contains only bugfixes and other minor
changes.
Releases are tagged on the master branch and will not be maintained separately.
+Patch releases may be made if the amount or severity of bugs justify it, or in
+the event of security issues.
The goal of releases is to provide Linux distributions with something to
package. If you want the newest features, just use the master branch.
@@ -24,33 +26,43 @@ While on master:
- Update the `VERSION` file.
-- Update `DOCS/client-api-changes.rst` and `DOCS/interface-changes.rst`
- (in particular, update the last version numbers if necessary)
+- Update `DOCS/client-api-changes.rst` (in particular, update the last version
+ number if necessary)
+
+- Run `TOOLS/gen-interface-changes.py` to refresh `DOCS/interface-changes.rst`,
+ edit manually as necessary.
+
+- Delete all `.txt` files in the `DOCS/interface-changes` directory except for `example.txt`.
- Create signed commit with changes.
- Create signed tag v0.X.Y.
-- Add -UNKNOWN suffix to version in `VERSION` file.
-
-- Commit changes, push release branch (`release/0.X`) and tag to GitHub.
+- Push release branch (`release/0.X`) and tag to GitHub.
- Create a new GitHub release using the content of `RELEASE_NOTES` related to
the new version.
+- Readd -UNKNOWN suffix to version in `VERSION` file.
+
If necessary (to e.g. exclude commits already on master), the release can
be done on a branch with different commit history. The release branch **must**
then be merged to master so `git describe` will pick up the tag.
+This does not apply to patch releases, which are tagged directly on the
+`release/0.X` branch. The master branch always remains at v0.X.0.
+
Release notes template
----------------------
-Here is a template that can be used for writing the `RELEASE_NOTES` file.
+Here is a template that can be used for writing the `RELEASE_NOTES` file:
```markdown
Release 0.X.Y
=============
+This release requires FFmpeg <ver> or newer.
+
Features
--------
@@ -59,20 +71,18 @@ New
- List of new features
-Removed
+
+Changed
~~~~~~~
-- List of removed features
+- List of changed features
-Deprecated
-~~~~~~~~~~
-- List of deprecated features
+Removed
+~~~~~~~
-Behavior
---------
+- List of removed features
-- List of user-visible changes in behavior
Options and Commands
--------------------
@@ -82,40 +92,52 @@ Added
- List of added options and commands
+
Changed
~~~~~~~
- List of changed options and commands
-Renamed
-~~~~~~~
-
-- List of renamed options and commands
Deprecated
~~~~~~~~~~
- List of deprecated options and commands
+
Removed
~~~~~~~
- List of removed options and commands
+
Fixes and Minor Enhancements
----------------------------
- List of fixes and minor enhancements
-This listing is not complete. There are many more bug fixes and changes. The
-complete change log can be viewed by running `git log <start>..<end>` in
-the git repository.
-```
-Note that the "Release 0.X.Y" title should be removed when creating a new GitHub
-release.
+This listing is not complete. Check DOCS/client-api-changes.rst for a history
+of changes to the client API, and DOCS/interface-changes.rst for a history
+of changes to other user-visible interfaces.
+
+A complete changelog can be seen by running `git log <start>..<end>`
+in the git repository.
+```
When creating a new point release its changes should be added on top of the
`RELEASE_NOTES` file (with the appropriate title) so that all the changes in
the current 0.X branch will be included. This way the `RELEASE_NOTES` file
can be used by distributors as changelog for point releases too.
+
+The changelog of lists all changes since the last release, including those
+that have been backported to patch releases already.
+
+Some additional advice:
+- Especially for features, try to reword the messages so that the user-visible
+ change is clear to the reader. But don't simplify too much or be too verbose.
+- It often makes sense to merge multiple related changes into one line
+- Changes that have been made and reverted within the same release must not
+ appear in the changelog
+- Limit the "Options and Commands" section to relevant changes
+- When filling in the GitHub release, remove the "Release 0.X.Y" heading