aboutsummaryrefslogtreecommitdiff
path: root/MAINTAIN.md
diff options
context:
space:
mode:
Diffstat (limited to 'MAINTAIN.md')
-rw-r--r--MAINTAIN.md33
1 files changed, 21 insertions, 12 deletions
diff --git a/MAINTAIN.md b/MAINTAIN.md
index ed0df76e36..55f4e7afc2 100644
--- a/MAINTAIN.md
+++ b/MAINTAIN.md
@@ -5,6 +5,15 @@ Notes on maintaining the Neovim project.
See also: https://github.com/git/git/blob/master/Documentation/howto/maintain-git.txt
+General guidelines
+------------------
+
+* Decide by cost-benefit
+* Write down what was decided
+* Constraints are good
+* Use automation to solve problems
+* Never break the API
+
Ticket Triage
-------------
@@ -19,9 +28,9 @@ The forecasting problem might be solved with an explicit priority system (like
Bram's todo.txt). Meanwhile the Neovim priority system is defined by:
- PRs nearing completion (RDY).
-- Issue labels. E.g. the +plan label increases the ticket's priority merely for
- having a plan written down: it is _closer to completion_ than tickets without
- a plan.
+- Issue labels. E.g. the `+plan` label increases the ticket's priority merely
+ for having a plan written down: it is _closer to completion_ than tickets
+ without a plan.
- Comment activity or new information.
Anything that isn't in the next milestone, and doesn't have a RDY PR ... is
@@ -32,17 +41,17 @@ full :)
Release Policy
--------------
-The goal is "early and often".
+Release "often", but not "early".
-Up to now we use only one branch, the `master` branch.
+The (unreleased) `master` branch is the "early" channel; it should not be
+released if it's not stable. Medium-risk changes may be merged to `master` if
+the next feature-release is not imminent.
-- If `master` is unstable we don't release.
-- If the last release has a major bug, we:
- 1. Fix the bug on `master`.
- 2. Disable or remove any known risks present on `master`.
- 3. Cut a release from `master`.
+For maintenance releases, create a `release-x.y` branch. If the current stable
+release has a major bug:
-This is a bit silly, but it works ok. And it keeps `master` from biting off
-more feature-creep than it can chew.
+1. Fix the bug on `master`.
+2. Cherry-pick the fix to `release-x.y`.
+3. Cut a release from `release-x.y` (run `scripts/release.sh`).
See also: https://github.com/neovim/neovim/issues/862