Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: Adopt a release & PHP / dependency version support policy #173

Open
wants to merge 1 commit into
base: v3.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion _themes/borg/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
href="https://github.com/search?o=desc&q=behat+extension+in%3Aname%2Cdescription&ref=searchresults&s=stars&type=Repositories&utf8=%E2%9C%93">
Extensions
</a>
<a class="section" href="https://github.com/Behat/Behat/blob/master/CHANGELOG.md#change-log">
<a class="section {% if pagename == 'releases' %}active{% endif %}"
href="{{ pathto('releases') }}">
Releases
</a>
<div class="section search" role="search">
Expand Down
22 changes: 22 additions & 0 deletions _themes/borg/static/css/documentation.css
Original file line number Diff line number Diff line change
Expand Up @@ -493,3 +493,25 @@ body > section {
.text .next dt, .text .next dd {
text-align: right;
}

table.docutils {
width: 100%;
border-collapse: collapse;
}

table.docutils th {
font-weight: 600;
}

table.docutils th, table.docutils td {
padding: 6px 13px;
border: 1px solid #d1d9e0;
}

table.docutils tr:nth-child(2n) {
background-color: #f6f8fa;
}

table.docutils td > p, table.docutils th > p {
margin-bottom: 0;
}
1 change: 1 addition & 0 deletions guides.rst
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ and the same.
quick_start
user_guide
cookbooks
releases
useful_resources
community

Expand Down
73 changes: 73 additions & 0 deletions releases.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
Releases & version support
==========================

Behat follows `Semantic Versioning`_ - breaking changes will only be made in a major release.

======= ========== ============ ============ =====================================================================
Major Released Bugfix EOL Security EOL
======= ========== ============ ============ =====================================================================
`v2.x`_ July 2011 June 2015 June 2015 `Changelog <https://github.com/Behat/Behat/blob/2.5/CHANGES.md>`__
`v3.x`_ April 2014 *>12 months* *>24 months* `Changelog <https://github.com/Behat/Behat/blob/master/CHANGES.md>`__
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may be a bit confusing, some users may read this as "bugfixes ended 12 months after April 2014 and security fixes ended 24 months after April 2014"? Maybe adopt what other tools do which to show which versions are maintained, which are security fixes only, which are end of life and even show future unreleased versions. So we could list version 2.x as end of life for bugs and security, 3.x as maintained and 4.x as unreleased. What do you think?

======= ========== ============ ============ =====================================================================

Support and release timescales
------------------------------

Major versions
~~~~~~~~~~~~~~

Each time a new major version is released, the Behat maintainers will set End-of-Life dates for the previous version
series. This will be based on the scale of the breaking changes, the complexity of supporting the older version, and the
likely effort required for users and third-party extensions to upgrade.

As a minimum, a major version series will receive:

* Bugfixes for 12 months after the release of the next major.
* Security fixes for 24 months after the release of the next major.

There is no fixed schedule for releasing new major versions - but we will try to keep them to a frequency that is
manageable for users.

Minor versions
~~~~~~~~~~~~~~

Minor & patch versions will be released whenever there is something to release. These releases do not come with any
specific support timescale, and we expect that users will upgrade to the next minor when it becomes available.

Bugfixes will usually only be applied to the most recent minor of each supported major version, unless they are
particularly severe or have security implications. This will impact support for End-of-Life PHP & symfony versions -
see below for more details.

Please bear in mind that this is free software, maintained by volunteers as a gift to users, and the license
specifically explains that it is provided without warranty of any kind.


Support for PHP and dependency versions
---------------------------------------

Behat only supports current versions of PHP and third-party dependency packages (e.g. symfony components).

By "current", we mean:

* PHP versions that are listed as receiving active support or security fixes on the `official php.net version support page`_.
* Symfony versions that are listed as maintained or receiving security fixes on the `official symfony releases page`_.

Once a PHP or symfony version reaches End of Life we will remove it from our composer.json and CI flows.

.. note::
When we drop support for a PHP / dependency version we will highlight this in the CHANGELOG, but we will treat
it as a minor release. Composer will automatically protect users from upgrading to a version that does not support
their environment. Users running Behat as a `.phar` should review the release notes before downloading a new version.

We will not ship bugfix releases for unsupported PHP / dependency versions, unless:

* It fixes a security vulnerability within the security support period for a Behat major version.
* An external contributor wishes to take on the work of backporting, including any changes required
to get a green build in CI.


.. _`Semantic Versioning`: http://semver.org/
.. _`official php.net version support page`: https://www.php.net/supported-versions.php
.. _`official symfony releases page`: https://symfony.com/releases
.. _`v2.x`: https://github.com/Behat/Behat/releases?q=v2
.. _`v3.x`: https://github.com/Behat/Behat/releases?q=v3