QEMU and the stable process
===========================

QEMU stable releases
--------------------

QEMU stable releases are based upon the last released QEMU version
and marked by an additional version number, e.g. 2.10.1. Occasionally,
a four-number version is released, if a single urgent fix needs to go
on top.

Usually, stable releases are only provided for the last major QEMU
release. For example, when QEMU 2.11.0 is released, 2.11.x or 2.11.x.y
stable releases are produced only until QEMU 2.12.0 is released, at
which point the stable process moves to producing 2.12.x/2.12.x.y releases.

What should go into a stable release?
-------------------------------------

Generally, the following patches are considered stable material:

* Patches that fix severe issues, like fixes for CVEs

* Patches that fix regressions

If you think the patch would be important for users of the current release
(or for a distribution picking fixes), it is usually a good candidate
for stable.


How to get a patch into QEMU stable
-----------------------------------

There are various ways to get a patch into stable:

* Preferred: Make sure that the stable maintainers are on copy when you send
  the patch by adding

  .. code::

     Cc: qemu-stable@nongnu.org

  to the patch description. By default, this will send a copy of the patch
  to ``qemu-stable@nongnu.org`` if you use git send-email, which is where
  patches that are stable candidates are tracked by the maintainers.

* You can also reply to a patch and put ``qemu-stable@nongnu.org`` on copy
  directly in your mail client if you think a previously submitted patch
  should be considered for a stable release.

* If a maintainer judges the patch appropriate for stable later on (or you
  notify them), they will add the same line to the patch, meaning that
  the stable maintainers will be on copy on the maintainer's pull request.

* If you judge an already merged patch suitable for stable, send a mail
  (preferably as a reply to the most recent patch submission) to
  ``qemu-stable@nongnu.org`` along with ``qemu-devel@nongnu.org`` and
  appropriate other people (like the patch author or the relevant maintainer)
  on copy.

Stable release process
----------------------

When the stable maintainers prepare a new stable release, they will prepare
a git branch with a release candidate and send the patches out to
``qemu-devel@nongnu.org`` for review. If any of your patches are included,
please verify that they look fine, especially if the maintainer had to tweak
the patch as part of back-porting things across branches. You may also
nominate other patches that you think are suitable for inclusion. After
review is complete (may involve more release candidates), a new stable release
is made available.
