From c37c752d3693da2030b8c3bede69bf1b9d1aedc4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Feb 2023 21:21:51 -0500 Subject: [PATCH] update markdown files for revised branch structure and development workflow --- SECURITY.md | 26 +++++---- doc/github-development-workflow.md | 85 ++++++++++++++++-------------- 2 files changed, 61 insertions(+), 50 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index e9b33afdcb..1664dde169 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -32,17 +32,21 @@ for unicode characters and only all-ASCII source code is accepted. LAMMPS follows a continuous release development model. We aim to keep the development version (`develop` branch) always fully functional and -employ a variety of automatic testing procedures to detect failures -of existing functionality from adding or modifying features. Most of -those tests are run on pull requests *before* merging to the `develop` -branch. The `develop` branch is protected, so all changes *must* be -submitted as a pull request and thus cannot avoid the automated tests. +employ a variety of automatic testing procedures to detect failures of +existing functionality from adding or modifying features. Most of those +tests are run on pull requests and must be passed *before* merging to +the `develop` branch. The `develop` branch is protected, so all changes +*must* be submitted as a pull request and thus cannot avoid the +automated tests. Additional tests are run *after* merging. Before releases are made *all* tests must have cleared. Then a release tag is applied and the -`release` branch is fast-forwarded to that tag. This is often referred -to as a patch release. Bug fixes and updates are -applied first to the `develop` branch. Later, they appear in the `release` -branch when the next patch release occurs. -For stable releases, selected bug fixes, updates, and new functionality -are pushed to the `stable` branch and a new stable tag is applied. +`release` branch is fast-forwarded to that tag. This is referred to to +as a "feature release". Bug fixes and updates are applied first to the +`develop` branch. Later, they appear in the `release` branch when the +next patch release occurs. For stable releases, backported bug fixes +and infrastructure updates are first applied to the `maintenance` branch +and then merged to `stable` and published as "updates". For a new +stable release the `stable` branch is updated to the corresponding state +of the `release` branch and a new stable tag is applied in addition to +the release tag. diff --git a/doc/github-development-workflow.md b/doc/github-development-workflow.md index 1c0eddedcf..8e8ac6597b 100644 --- a/doc/github-development-workflow.md +++ b/doc/github-development-workflow.md @@ -27,42 +27,45 @@ should doing the merging itself. This is currently assignment needs to be changed, it shall be done right after a stable release. If the currently assigned developer cannot merge outstanding pull requests in a timely manner, or in other extenuating circumstances, -other core LAMMPS developers with merge rights can merge pull requests, -when necessary. +other core LAMMPS developers with merge permissons may merge pull +requests. ## Pull Requests -ALL changes to the LAMMPS code and documentation, however trivial, MUST -be submitted as a pull request to GitHub. All changes to the "develop" -branch must be made exclusively through merging pull requests. The +*ALL* changes to the LAMMPS code and documentation, however trivial, MUST +be submitted as a pull request to GitHub. All changes to the "develop" +branch must be made exclusively through merging pull requests. The "release" and "stable" branches, respectively are only to be updated -upon patch or stable releases with fast-forward merges based on the -associated tags. Pull requests may also be submitted to (long-running) -feature branches created by LAMMPS developers inside the LAMMPS project, -if needed. Those are not subject to the merge and review restrictions -discussed in this document, though, but get managed as needed on a -case-by-case basis. +upon feature or stable releases based on the associated tags. Updates to +stable release in between stable releases (e.g. backported bugfixes) +are first merged into the "maintenance" branch and then into the "stable" +branch as update releases. + +Pull requests may also be submitted to (long-running) feature branches +created by LAMMPS developers inside the LAMMPS project, if needed. Those +are not subject to the merge and review restrictions discussed in this +document, though, but get managed as needed on a case-by-case basis. ### Pull Request Assignments Pull requests can be "chaperoned" by one of the LAMMPS core developers. -This is indicated by who the pull request is assigned to. LAMMPS core +This is indicated by who the pull request is assigned to. LAMMPS core developers can self-assign or they can decide to assign a pull request to a different LAMMPS developer. Being assigned to a pull request means, that this pull request may need some work and the assignee is tasked to determine whether this might be needed or not, and may either implement -the required changes or ask the submitter of the pull request to implement -them. Even though, all LAMMPS developers may have write access to pull -requests (if enabled by the submitter, which is the default), only the -submitter or the assignee of a pull request may do so. During this -period the `work_in_progress` label may be applied to the pull -request. The assignee gets to decide what happens to the pull request -next, e.g. whether it should be assigned to a different developer for -additional checks and changes, or is recommended to be merged. Removing -the `work_in_progress` label and assigning the pull request to the -developer tasked with merging signals that a pull request is ready to be -merged. In addition, a `ready_for_merge` label may also be assigned -to signal urgency to merge this pull request quickly. +the required changes or ask the submitter of the pull request to +implement them. Even though, all LAMMPS developers may have write +access to pull requests (if enabled by the submitter, which is the +default), only the submitter or the assignee of a pull request may do +so. During this period the `work_in_progress` label may be applied to +the pull request. The assignee gets to decide what happens to the pull +request next, e.g. whether it should be assigned to a different +developer for additional checks and changes, or is recommended to be +merged. Removing the `work_in_progress` label and assigning the pull +request to the developer tasked with merging signals that a pull request +is ready to be merged. In addition, a `ready_for_merge` label may also +be assigned to signal urgency to merge this pull request quickly. ### Pull Request Reviews @@ -126,22 +129,26 @@ changes, i.e. significant effort is made - including automated pre-merge testing - that the code in the branch "develop" does not get easily broken. These tests are run after every update to a pull request. More extensive and time consuming tests (including regression testing) are -performed after code is merged to the "develop" branch. There are patch -releases of LAMMPS every 3-5 weeks at a point, when the LAMMPS -developers feel, that a sufficient amount of changes have happened, and -the post-merge testing has been successful. These patch releases are +performed after code is merged to the "develop" branch. There are feature +releases of LAMMPS made about every 4-6 weeks at a point, when the LAMMPS +developers feel, that a sufficient amount of changes have been included, +and all post-merge testing has been successful. These feature releases are marked with a `patch_` tag and the "release" branch -follows only these versions (and thus is always supposed to be of -production quality, unlike "develop", which may be temporary broken, in -the case of larger change sets or unexpected incompatibilities or side -effects. +follows only these versions with fast forward merges. While "develop" may +be temporary broken through issues only detected by the post-merge tests, +The "release" branch is always supposed to be of production quality. -About 1-2 times each year, there are going to be "stable" releases of +About once each year, there are going to be "stable" releases of LAMMPS. These have seen additional, manual testing and review of results from testing with instrumented code and static code analysis. -Also, the last 1-3 patch releases before a stable release are "release -candidate" versions which only contain bugfixes and documentation -updates. For release planning and the information of code contributors, -issues and pull requests being actively worked on are assigned a -"milestone", which corresponds to the next stable release or the stable -release after that, with a tentative release date. +Also, the last few feature releases before a stable release are "release +candidate" versions which only contain bugfixes, feature additions to +peripheral functionality, and documentation updates. In between stable +releases, bugfixes and infrastructure updates are backported from the +"develop" branch to the "maintenance" branch and occasionally merged +into "stable" and published as update releases. + +For release planning and the information of code contributors, issues +and pull requests being actively worked on are assigned a "milestone", +which corresponds to the next stable release or the stable release after +that, with a tentative release date.