|
| 1 | +:title: Release Schedule |
| 2 | +:description: When does Deis have major, minor, and patch releases? |
| 3 | + |
| 4 | +.. _release_schedule: |
| 5 | + |
| 6 | +Release Schedule |
| 7 | +================ |
| 8 | + |
| 9 | +Some of the greatest assets of the Deis project are velocity and agility. |
| 10 | +Deis changed rapidly and with relative ease during initial development. |
| 11 | + |
| 12 | +Deis now harnesses those strengths into powering a regular, public release |
| 13 | +cadence. From v1.0.0 onward, the Deis project will release a minor version each |
| 14 | +month, with patch versions as needed. The project will use GitHub milestones to |
| 15 | +communicate the content and timing of major and minor releases. |
| 16 | + |
| 17 | +Deis releases are not feature-based, in that dates are not linked to specific |
| 18 | +features. If a feature is merged before the release date, it is included in the |
| 19 | +next minor or major release. |
| 20 | + |
| 21 | +The master ``git`` branch of Deis always works. Only changes considered ready to |
| 22 | +be released publicly are merged, and releases are made from master. |
| 23 | + |
| 24 | +Semantic Versioning |
| 25 | +------------------- |
| 26 | + |
| 27 | +Deis releases comply with `semantic versioning`_, with the "public API" broadly |
| 28 | +defined as: |
| 29 | + |
| 30 | +- the REST API for *deis-controller* |
| 31 | +- etcd keys and values that are publicly documented |
| 32 | +- ``deis`` and ``deisctl`` commands and options |
| 33 | +- essential ``Makefile`` targets |
| 34 | +- provider scripts under ``contrib/`` |
| 35 | + |
| 36 | +Users of Deis can be confident that upgrading to a patch or to a minor release |
| 37 | +will not change the behavior of these items in a backward-incompatible way. |
| 38 | + |
| 39 | + |
| 40 | +Patch Releases |
| 41 | +-------------- |
| 42 | + |
| 43 | +A patch release of Deis includes backwards-compatible bug fixes. Upgrading to |
| 44 | +this version is safe and can be done in-place. |
| 45 | + |
| 46 | +Backwards-compatible bug fixes to Deis are merged into the master branch at any |
| 47 | +time after they have :ref:`two approval comments <merge_approval>`. |
| 48 | + |
| 49 | +Patch releases are created as often as needed, based on the priority of one or |
| 50 | +more bug fixes that have been merged. If time or severity is crucial, an |
| 51 | +individual maintainer can create a patch release without consensus from others. |
| 52 | +Patch releases are created from a previous release by cherry-picking specific |
| 53 | +bug fixes from the master branch, then applying and pushing the new release tag. |
| 54 | + |
| 55 | + |
| 56 | +Minor Releases |
| 57 | +-------------- |
| 58 | + |
| 59 | +A minor release of Deis introduces functionality in a backward-compatible |
| 60 | +manner. Upgrading to this version is safe and can be done in-place. |
| 61 | + |
| 62 | +Backwards-compatible functionality changes to Deis are merged into the master |
| 63 | +branch after they have :ref:`two approval comments <merge_approval>`, and after |
| 64 | +the PR has been assigned to a milestone tracking the minor release. |
| 65 | + |
| 66 | +It is preferable to merge several backwards-compatible functionality changes for |
| 67 | +a single minor release. |
| 68 | + |
| 69 | +The Deis project will use GitHub milestones to communicate the content and |
| 70 | +timing of planned minor releases. Currently project maintainers meet each week |
| 71 | +on Thursday afternoon to assign pull requests to milestones. |
| 72 | + |
| 73 | +The Deis project will release a minor version of the platform on the first |
| 74 | +Tuesday of each month. The target day may be shifted to accomodate holidays or |
| 75 | +unusual circumstances. If project maintainers agree, an additional minor release |
| 76 | +may occur between planned releases. Code freeze and :ref:`further acceptance |
| 77 | +tests <features_to_be_tested>` begin on the Thursday before a targeted release. |
| 78 | + |
| 79 | +A minor release may be superceded by a major release. |
| 80 | + |
| 81 | + |
| 82 | +Major Releases |
| 83 | +-------------- |
| 84 | + |
| 85 | +A major release of Deis introduces incompatible API changes. Upgrading to this |
| 86 | +version may involve a backup and restore process. Custom integrations with Deis |
| 87 | +may need to be updated. |
| 88 | + |
| 89 | +Incompatible changes to Deis are merged into the master branch deliberately, by |
| 90 | +agreement among maintainers. In addition to |
| 91 | +:ref:`two approval comments <merge_approval>`, the pull request must be assigned |
| 92 | +to a planning milestone for that release, at which point it can be merged when |
| 93 | +release activities and testing begin. |
| 94 | + |
| 95 | +The Deis project will use GitHub milestones to communicate the content and |
| 96 | +timing of planned major releases. |
| 97 | + |
| 98 | + |
| 99 | +.. _`semantic versioning`: http://semver.org/spec/v2.0.0.html |
0 commit comments