]> https://gitweb.dealii.org/ - release-papers.git/commitdiff
Update release tasks
authorMatthias Maier <tamiko@43-1.org>
Mon, 19 Jun 2023 23:38:52 +0000 (18:38 -0500)
committerMatthias Maier <tamiko@43-1.org>
Mon, 19 Jun 2023 23:40:33 +0000 (18:40 -0500)
release-tasks [deleted file]
release-tasks.md [new file with mode: 0644]

diff --git a/release-tasks b/release-tasks
deleted file mode 100644 (file)
index b9c3889..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
-This file is internal information only. It lists the steps to be done when a
-new release shall be issued.
-
-***
-***
-*** Release preparation:
-***
-***
-
-
--3/ Send out notice to the mailinglist if anyone has outstanding
-    issues or patches. This should happen at least a week before the
-    release process starts. Ask for volunteer testers on Mac.
-
-Subject: Release preparations
-
-All,
-
-we would like to start the release process for deal.II 9.0.0 soon. Please
-let us know if you have any last minute things that need to be addressed
-(bugs, documentation issues, configuration problems, etc.).
-
-If you are running the current development version, please update your local
-working copy and test if everything compiles, especially if you are running a
-less common configuration (mac, old compilers, etc.).
-
-Thanks!
-
-
--2/ Check all issues and pull-request on github. Create a list to see if
-    there are things that we intended to fix before the release.
-
-
--1/ Update the list of publications. Standard text for the email:
-
-Subject: Publications based on deal.II
-
-All,
-
-as you may know, we try to list all publications based on deal.II at
-         http://dealii.org/publications.html
-We use this list to justify the effort we spend on writing this software, both
-to our universities as well as the funding agencies that support its
-development.
-
-In anticipation of the next release, we would like to update this page. If you
-have (or know of) a publication that uses deal.II for numerical results and
-that isn't already listed, please let us know so we can put it on there. For
-this purpose, publications also include MSc, Diploma or PhD theses, or
-anything else that may seem appropriate.
-
-We've made the process of submitting entries much simpler than in the past.
-Here are a number of ways you can let us know:
-
-* Open a new issue via
-  https://github.com/dealii/publication-list/issues/new and just copy-paste
-  either a bibtex entry, or just the reference information
-
-* If you want to save us a bit of work, follow the process here:
-  https://github.com/dealii/publication-list/blob/master/README.md
-
-* Or email the information directly to me or one of the other principal
-  developers.
-
-Thanks
-
-
-  Send this as BCC to
-    dealii@googlegroups.com
-    aspect-devel@geodynamics.org
-
-
--1a/ Start release paper process with email to all current (principal)
- developers:
-
-Subject: 9.0 Release Paper
-
-All,
-Timo and I have started to work on a few things necessary for the next
-release. In particular, we would like to get the release paper started.
-
-To this end:
-* Please check out https://github.com/dealii/release-papers
-* If you think that you have contributed in a way that warrants co-authorship,
-  please add yourself to the list of authors for the 9.0 paper
-* If you think that someone other than just us maintainers should be a
-  co-author, please nominate that person here
-We think that these last two points are important -- we want the list of
-co-authors to reflect who actually contributed, rather than inherited
-rights in the project, because that makes it clear to current and future
-participants in the project that they can hope for formal recognition of
-their work in terms of things they can put on their CV.
-
-As far as content of the paper is concerned: I put together a list of
-possible topics -- please take a look.
-
-As far as the material I tentatively put into the paper: if you're willing
-to write a section, can you attach your name to it somehow in the next
-couple of days?
-
-Best
-  Wolfgang & Timo
-
-
--1b/ update the authors list on the homepage authors.html by
-     cross-referencing doc/news/changes.h
-
-     Get the list using
-        egrep '[0-9]+/[0-9]+/[0-9]+' doc/news/changes/*/* | \
-           perl -p -e 's/^.*\(//g; s#, *[0-9/]+\)##g; s/, */\n/g;' | \
-           sort |uniq
-
-     Compare with the commit list:
-       git log --date=short --format="%an %aE" v8.5.0..HEAD | grep -v 'dependabot\[bot\]' | sort | uniq
-
-
-
--1c/ The list of contributors to the current release should also be copied to
-     the end of the release paper
-
-     TODO
-
-0/ Do some basic testing as always
-
-0a/ Rerun cppcheck across the source files:
-    cppcheck --force -j4 --enable=all -I./include/ ./source/*/*.cc >cppcheck-results.txt 2>&1
-
-    and look for anything that should obviously be fixed.
-
-
-0c/ Fix formatting bugs reported by:
-
-    cd include;
-    find . -name "*.h" -print | while read file;do ../contrib/utilities/wrapcomments.py $file >temp;done
-
-    [ NOTE: Do not use wrapcomments.py to actually reflow comments - the
-      script causes too much churn with little value - Timo & Matthias 2019/05/13 ]
-
-    Also check:
-    grep -l '@ref[^"]*"[^"]*$' **/*.h
-    grep -l '@ref$' **/*.h
-
-    Push the corresponding changes.
-
-
-0d/ Check that doxygen produces no errors when generating offline docs.
-    Especially check that the tutorial dot graph gets generated
-
-0e/ Run the copyright script:
-      ./contrib/utilities/update-copyright
-    and make a PR.
-    Important: commit message needs to be "Update copyright years"
-
-0f/ update Trilinos and PETSc to the latest release on the tester and update the blurb at:
-    doc/external-libs/trilinos.html
-    doc/external-libs/petsc.html
-
-0g/ Run codespell: e.g., inside emacs' compilation-mode run
-
-        codespell --disable-colors ./contrib/ ./cmake/ ./doc/ ./examples/ ./include/ ./source/
-
-    or the same (without --disable-colors) in the terminal.
-
-0h/ Run ASPECT's test suite: see also https://github.com/dealii/dealii/pull/14092
-
-*** Caveat: for a minor version x.y.Z,
-*** 1-3 must be performed on the corresponding release branch, e.g. 'dealii-9.0'
-*** AND on HEAD
-
-
-1/  Create new changes file:
-    - Also adjust the copyright dates
-    - Run the following commands from above the source dir:
-        mkdir build-doc
-        cd build-doc
-        cmake ../dealii -DDEAL_II_COMPONENT_DOCUMENTATION=ON
-        make documentation
-        cp doc/news/changes.h ../dealii/doc/news/8.5.0-vs-9.0.0.h
-        cd ../dealii
-        git checkout -b update-changes-file
-        git add  doc/news/8.5.0-vs-9.0.0.h
-        git commit -m "Update the changelog file for the release." doc/news/8.5.0-vs-9.0.0.h
-        git rm doc/news/changes/{major,minor,incompatibilities}/*
-        git commit -m "Remove now obsolete files." doc/news/changes/{major,minor,incompatibilities}
-        git push origin update-changes-file
-        hub pull-request -m "Replace individual files by one changelog for the whole release."
-    - Adjust the header of doc/news/header back so that it can
-      serve as the running header for the next release cycle.
-
-1a/ Adjust doc/users/doxygen.html to link to the to-be-created TAG file.
-    then do a pull request
-
-1b/ Review the generated changes.h file for dead links, duplicated entries,
-    obsolete entries (e.g., commit 1 adds feature A, commit 2 fixes feature A), etc.
-
-4/  If a x.y.0 release, it is now time to create a release branch:
-
-  git checkout -b dealii-9.1       # exactly 'dealii-X.Y' to remain consistent!
-
-  # Update VERSION from 9.1.0-pre to 9.1.0-rc0
-  #
-  # Note: Please do not use "9.0.0" (or "9.0.0-rc1") directly because the
-  # soname is derived from the current version number. Therefore, 9.0.0
-  # must only be used for the final, tagged and distributed code.
-
-  git commit -a -m "update VERSION"
-
-  git push origin dealii-9.0  # where origin is the remote pointing to
-                              # github.com/dealii/dealii.git
-
-  Note: Without a pull request!
-
-4a/  Check branch properties on github! Should be set automatically but
-     nevertheless: push protection + mandatory test + mandatory number of
-     reviews, best between 2 and 3
-
-5/ Update the VERSION from 9.0.0-pre to 9.1.0-pre on
-  master. (Conservatively only increment the minor version even if the
-  plan is to later release a major update -- it is always possible to
-  convert 9.4 into 10.0 later, but one can't easily back down any more.)
-
-  git checkout master
-  git commit -a -m "Update VERSION"
-
-  [ pull request for master branch ]
-
-5a/ On master, replace all occurrences of DEAL_II_DEPRECATE_EARLY by
-  DEAL_II_DEPRECATE in the library. (This needs to happen here because
-  if we forget it, we merge patches that add more
-  DEAL_II_DEPRECATE_EARLY notes and we don't know any more which of
-  these were meant to be converted for the following release.)
-
-6/ Update the official tester to test on the release branch dealii-9.3
-
-   An empty checkout in a folder 'dealii-9.3' can be obtained via
-
-   git clone --branch dealii-9.3 git://github.com/dealii/dealii.git deal-9.3
-
-6a/ On mainline, do something like this to require the current dev version
-    for the tutorials and in the documentation:
-
-    perl -pi -e 's/deal.II 9.3.0/deal.II 10.0.0/g;' examples/*/CMakeLists.txt
-
-    also check doc/users/* and tests/*:
-
-    grep "FIND_PACKAGE(deal.II" -r doc/ tests/
-
-    git commit -a -m "Require the current version of deal.II."
-    [ pull request ]
-
-
-7/ Create an AUTHORS.md file in the top-level directory of the branch that
-   contains a text-only copy of the authors.html file from the website.
-   You can start from
-   lynx -dump -nolist https://www.dealii.org/authors.html >AUTHORS
-   and format it like this:
-   https://github.com/dealii/dealii/blob/dealii-9.0/AUTHORS
-
-   Update LICENSE.md to point to the AUTHORS.md file:
-
-   "[...] refers to the people listed in the file AUTHORS.md."
-
-   git add AUTHORS.md
-   git commit -a -m "update AUTHORS.md"
-
-   git push origin dealii-9.0
-
-   Note: Without a pull request!
-
-
-7a/ Send prerelease announcement to dealii@googlegroups.com
-
-Subject: dealii-9.3.0 release candidate 1
-
-Dear all,
-
-We have tagged a first release candidate for the upcoming deal.II 9.3.0 release. 
-You can find the sources and a generated offline documentation here:
-
-  https://github.com/dealii/dealii/releases/tag/v9.3.0-rc1
-
-Alternatively, you can switch to the dealii-9.3 branch in your local git repository
-
-  git remote update
-  git checkout v9.3.0-rc1
-
-It would be great if you could test it on your machine with your typical configuration! 
-If no further regressions show up, we will release Saturday May 29. The release 
-progress is tracked in the following GitHub issue:
-
-  https://github.com/dealii/dealii/issues/12117
-
-Thanks!
-
-David, Matthias, Peter
-on behalf of the deal.II developer team
-
-
-
-8/ Remove unfinished tutorial programs.
-   For 9.0, these are steps 47, 50
-   For 9.1, these are none
-
-   a) Delete directories on the branch:
-
-     cd examples
-     git rm -r step-47 step-50
-     git commit -a -m "removed unfinished steps (release tasks step 8)."
-
-   b) These steps should also not be listed on the branch in
-      doc/doxygen/tutorial/tutorial.h.in
-
-     [ pull request ]
-
-
-   c) Make sure all images are moved to the homepage repository. See:
-      https://svnhp.dealii.org/trunk/homepage/images/steps/readme.txt
-
-
-9/  Write up a short release note and save it as release-papers/x.y/announce
-9a/ Write the release paper in the release-papers/ subdirectory
-
-10/ Test the branch thoroughly:
-
-    a) Run a full testsuite run locally,
-
-    b) Have a look at the test results on cdash
-
-    c) Configure, build and run all examples by hand (the testsuite only
-       runs a subset of it):
-
-      cd [install]/examples
-      for i in step-* ; do \
-        (cd $i ; cmake -DDEAL_II_DIR=../.. . ; make ; make run) ; done
-
-      This step will require looking at the output and checking whether
-      anything untoward is happening.
-
-10a/ Do the same for the code gallery examples: They should at the
-     very least compile. If possible, also run them to make sure they
-     don't trip up any exceptions.
-
-11/ In a clean source directory of the dealii-9.0 branch, do
-      git clone https://github.com/dealii/code-gallery.git
-      mkdir builddoc
-      cd builddoc
-      cmake -DDEAL_II_COMPONENT_DOCUMENTATION=ON -DCMAKE_INSTALL_PREFIX=$PWD/../installeddoc ../
-      make -j 10 documentation
-      cd ../installeddoc/doc
-      for i in `find . | egrep '\.html$'` ; do \
-          perl ../../doc/doxygen/scripts/validate-xrefs.pl $i ; done
-
-     If some of the deleted tutorial programs were linked to somewhere
-     else, resolve the unresolved links by adding corresponding files
-     to the doc/doxygen/headers directory. The content of such files
-     looks like shown here:
-        svn cat http://www.dealii.org/svn/dealii/branches/releases/Branch-7-0/deal.II/doc/doxygen/headers/step-32.h
-
-11a/ Check that .gitattributes is up to date. In particular do all the
-     quick tests work?
-
-[ some time with bugfixing and commits on the release branch ]
-
-
-***
-***
-*** Publish a release, or release candidate.
-***
-***
-
-
-12/ Push the button:
-
-    a) Change VERSION to 9.0.0 for a release and to 9.0.0-rc1 for a release
-       candidate and commit:
-       git commit -m "update VERSION for release"
-
-    b) (Signed) tag the commit with:
-
-      # for the final release:
-      git tag -s -m "deal.II Version 9.0.0" v9.0.0
-      # or alternatively for a release candidate:
-      git tag -s -m "deal.II Pre-Release Version 9.0.0-rc1" v9.0.0-rc1
-
-      You need a working gnupg key for this. (You should have anyway :-P)
-
-    c) Push changes to github:
-
-      # where origin is the remote pointing to github.com/dealii/dealii.git
-      git push origin dealii-9.0
-      git push origin v9.0.0
-
-
-13/ Create the tar files:
-
-    a) github automatically generates a source tarball from the current
-    repository state, see https://github.com/dealii/dealii/releases
-
-    b) Download the source tarball from github, verify that its contents is
-       what we expect, e.g.
-
-      # in a clean git repository:
-      git checkout v9.0.0 # or git checkout v9.0.0-rc1
-      rm -r *
-      tar --strip-components=1 -xvf dealii-9.0.0.tar.gz (or dealii-9.0.0-rc1.tar.gz)
-      git status
-
-       Now, the last git status will only record some deleted files but
-       must not show any modified file contents!
-
-       Cryptographically sign it (detached, armored signature):
-
-      gpg --detach-sign --armor dealii-9.0.0.tar.gz
-
-    c) Create full offline_doc tarball
-
-      * check out the code-gallery at the correct path
-
-      * install MathJax locally and export the path, for example
-
-      export MATHJAX_ROOT="/usr/share/mathjax"
-
-      * Generate and install the documentation from a clean working
-        directory containing the tagged release and configure with:
-
-      cmake -DDOCUMENTATION=ON -DDEAL_II_DOXYGEN_USE_MATHJAX=ON -DDEAL_II_DOXYGEN_USE_ONLINE_MATHJAX=OFF -DDEAL_II_COMPILE_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=<install>
-
-      * generate and install the documentation and examples
-
-      make/ninja documentation
-      make/ninja examples
-
-      * Download images:
-
-      cd <install>/doc/doxygen/deal.II
-      <source dir>/contrib/utilities/make_offline_doc.sh
-
-      * (in the same directory) copy mathjax and fix includes:
-
-      cp -r "$MATHJAX_ROOT" mathjax
-      sed -i -e "s#$MATHJAX_ROOT#mathjax#" **/*.html
-
-      * Grep the documentation for "full path leaks", for example grep for your
-        user name and the git repository location and fix up all remaining
-        locations (in particular deal.tag)
-
-    d) Create dealii-9.1.0-offline_documentation.tar.gz (or for a
-       prerelease: dealii-9.1.0-rc1-offline_documentation.tar.gz)
-
-      cd <install>
-      tar --numeric-owner --owner=0 --group=0 -cvf dealii-9.2.0-offline_documentation.tar doc examples
-      gzip dealii-9.2.0-offline_documentation.tar
-
-    e) Also sign it:
-
-      gpg --detach-sign --armor dealii-9.1.0-offline_documentation.tar.gz
-
-
-14a/ Create a pre-release on github:
-
-  https://github.com/dealii/dealii/tags
-
-  Select the just uploaded v9.0.0-rc1 tag and click on "add release notes"
-
-    Tag: v9.0.0-rc1 Existing tag
-    Release title: deal.II pre-release version 9.0.0-rc1
-
-    Description: ""
-
-    Attach dealii-9.0.0-rc1.tar.gz (yes, once again)
-    Attach dealii-9.0.0-rc1.tar.gz.asc
-    Attach dealii-9.0.0-rc1-offline_documentation.tar.gz
-    Attach dealii-9.0.0-rc1-offline_documentation.tar.gz.asc
-
-14b/ Create a release on github:
-
-  https://github.com/dealii/dealii/releases/new
-
-    Tag: dealii-9.0.0 Existing tag
-    Release title: deal.II version 9.0.0
-
-    Description:
-    [Short version of release notes as found in announce-8.2]
-    A full list of changes can be found at
-    http://www.dealii.org/developer/doxygen/deal.II/changes_between_8_2_1_and_8_3.html
-
-    Attach dealii-9.0.0.tar.gz (yes, once again)
-    Attach dealii-9.0.0.tar.gz.asc
-    Attach dealii-9.0.0-offline_documentation.tar.gz
-    Attach dealii-9.0.0-offline_documentation.tar.gz.asc
-
-
-***
-*** Caveat: Every further commit on an actual release at this point forces
-*** an increase in the patch number, i.e. 9.0.0 -> 8.2.1.
-***
-*** Go back to 12/ until a release is tagged
-***
-
-
-15/ Generate the documentation on the webserver.
-    Guido: Man nehme scripts/make_documentation.sh aus unserem privaten SVN-Repository und ersetze in der cmake-Zeile "Git ..." durch "X.Y.Z"
-
-16/ Adjust header.include on homepage:
-      change links to the documentation of the most recent version
-      change the link to the changes_after_X_Y_Z.html file
-      (possibly other items -- please update this list)
-
-
-17a/ Ask Luca for Mac packages. Those can be added as additional download
-    options to the freshly created release. Mention new naming convention
-    "dealii-9.0.0-.*" for attachments
-
-17b/ Update dealii in Spack (Denis)
-     https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/dealii/package.py
-
-17c/ Update dealii in Candi (Uwe)
-     https://github.com/dealii/candi/blob/master/candi.cfg
-
-17d/ Update dealii in the Gentoo Science overlay (Matthias)
-     https://gitweb.gentoo.org/proj/sci.git/tree/sci-libs/dealii
-
-17e/ Update dealii in Ubuntu/Debian (Matthias)
-     https://salsa.debian.org/science-team/deal.ii
-
-17f/ Update dealii in Archlinux AUR (David)
-     https://aur.archlinux.org/packages/deal-ii/
-
-17g/ Update dealii virtualbox images (Timo)
-
-18/ Finish writing the announcement
-
-
-18b/ Adjust news.html in the deal.II homepage repo: new entry for the
-     release using the link to the copied changes.h file from above; commit.
-     Rotate the news entry also in the short news blurb on the front page in
-     index.html
-
-19/ announce the release by sending an email to announce-list (file in this
-    directory) with subject:
-      Finite Element Software deal.II Version 9.0.0 released
-
-
-19a/ Send a note to the Facebook and Google+ accounts
-
-
-19b/ Update various wikipedia pages:
-   http://en.wikipedia.org/wiki/Deal.II
-   https://en.wikipedia.org/wiki/List_of_finite_element_software_packages
-
-
-19d/ Send thank-you email and list the people already referenced in step -1b above
-     Sample text:
-
-I would like to follow up on the announcement of this release by publicly
-saying again how much we appreciate the many contributions from those who
-have sent it code, bug reports, fixed grammar and typos, or have helped in
-any other way. Many thanks!
-
-The ChangeLog lists at least the following people to whom thanks are due
-(though I am certain that I am forgetting someone):
-
-
-20/ Celebrate!
diff --git a/release-tasks.md b/release-tasks.md
new file mode 100644 (file)
index 0000000..a374694
--- /dev/null
@@ -0,0 +1,141 @@
+Copy and paste the following markdown list into a deal.II Issue:
+
+## Pre-Release testing, QA and final code changes:
+
+The following is a list of ouststanding QA tests that should be checked before proceeding with a release. In order to duplicated efforts, add your a tag `@name` with your name after `assigned:` and link corresponding pull requests after `pr:`. finally, tick of the box when the task is done.
+
+ - [ ] <b>Update regression tester</b> (assigned:, pr: &mdash;)
+   Check and (if necessary) update testing infrastructure so that at least one configuration runs with the latest versions of external dependencies and compilers. 
+ - [ ] <b>Outstanding issues and pull-requests</b>
+   Check issues and pull-requests for outstanding fixes.
+   Update release milestones https://github.com/dealii/dealii/milestone/12
+ - [ ] <b>cppcheck</b> (assigned:, pr:)
+   Run `cppcheck` across all source files:
+   ```cppcheck --force -j4 --enable=all -I./include/ ./source/*/*.cc >cppcheck-results.txt 2>&1```
+   and look for anything that should obviously be fixed.
+ - [ ] <b>codespell</b> (assigned:, pr:)
+   Run `codespell` across all source files:
+   ```codespell ./contrib/ ./cmake/ ./doc/ ./examples/ ./include/ ./source/```
+   and look for typos and spelling mistakes that should be fixed.
+ - [ ] <b>clang-tidy</b> (assigned:, pr:)
+   Run clang tidy via:
+   ```mkdir build && cd build```
+   ```../contrib/utilities/run_clang_tidy.sh ../```
+   and check that no warnings are reported.
+ - [ ] <b>doxygen reflinks</b> (assigned:, pr:)
+   Check doxygen commands and reflinks:
+   ```cd include```
+   ```find . -iname "*h" -exec ../contrib/utilities/wrapcomments.py {} \; > /dev/null```
+   Also check:
+   ```grep -l '@ref[^"]*"[^"]*$' **/*.h```
+   ```grep -l '@ref$' **/*.h```
+   <b>NOTE:</b> Do not use wrapcomments.py to actually reflow comments - the script causes too much churn with little value.
+ - [ ] <b>doxygen</b> (assigned:, pr:)
+   Check that doxygen produces no errors when generating the documentation. Also check that the tutorial dot graph gets generated.
+ - [ ] <b>Copyright years</b> (assigned:, pr:)
+   Run the copyright script:
+   ```./contrib/utilities/update-copyright```
+   and make a pull request with a commit title "Update copyright years".
+ - [ ] <b>Examples</b> (assigned:, pr:)
+   Configure, build and run all examples by hand:
+   ```cd examples```
+   ```for i in step-* ; do (cd $i ; cmake -DDEAL_II_DIR=../.. . ; make ; make run) ; done```
+   This step will require looking at the output and checking whether
+   anything untoward is happening.
+ - [ ] <b>Code Gallery</b> (assigned:, pr: &mdash;)
+   Do the same for the code gallery examples: They should at the very least compile. If possible, also run them to make sure they don't trip up any exceptions.
+ - [ ] <b>Update `.gitattributes`</b> (assigned:, pr:)
+       Check that `.gitattributes` is up to date by using `git archive` and checking that the contents is meaningful. In particular, do `quicktests` still run?
+ - [ ] <b>Update authors</b> (assigned:, pr: &mdash;)
+   Update the authors list on the homepage authors.html by cross-referencing `doc/news/changes.h` and the git commit history:
+   ```egrep '[0-9]+/[0-9]+/[0-9]+' doc/news/changes/*/* | perl -p -e 's/^.*\(//g; s#, *[0-9/]+\)##g; s/, */\n/g;' | sort | uniq```
+   Compare with the git commit history between the last release and current master:
+   ```git log --date=short --format="%an %aE" v9.4.0..HEAD | grep -v 'dependabot\[bot\]' | sort | uniq```
+   The list of contributors to the current release should also be copied to the end of the release paper.
+ - [ ] <b>Changes file</b> (assigned:, pr:)
+   This step should happen immediately before branching off so that the changes file does not need to get updated again.
+   * Create a new changes files by running the following commands:
+     ```mkdir build-doc && cd build-doc```
+     ```cmake -DDOCUMENTATION=ON ../```
+     ```make documentation```
+     ```cp doc/news/changes.h ../doc/news/9.4.0-vs-9.5.0.h```
+     ```cd ../```
+   * Manually check `doc/news/9.4.0-vs-9.5.0.h` for dead links, duplicated entries, obsolete entries (e.g., commit 1 adds feature A, commit 2 fixes feature A), etc. Update `@page` title and copyright year.
+   * Then,
+     ```git checkout -b update-changes-file```
+     ```git add  doc/news/9.4.0-vs-9.5.0.h```
+     ```git commit -m "Update the changelog file for the release."```
+     ```git rm doc/news/changes/{major,minor,incompatibilities}/*
+     ```git commit -m "Remove now obsolete files."```
+     ```touch doc/news/changes/{major,minor,incompatibilities}/20230623dummy```
+     ```git add doc/news/changes/{major,minor,incompatibilities}/20230623dummy```
+     ```git commit -m "Add dummy files."```
+   * Adjust `doc/users/doxygen.html` to link to the to-be-created TAG file.
+   * Make a pull request
+
+
+## Branching off the release branch:
+
+The following steps have to be done by a single developer (with admin privileges on the https://github.com/dealii/dealii repository)
+
+ - [ ] <b>Create and push a release branch</b>
+   * Verify that the local `master` branch is up to date and create local branch:
+     ```git checkout master && git pull```
+     ```git status```
+     ```git checkout -b dealii-9.5``` (<b>Note:</b> exactly `dealii-9.5` to remain consistent!)
+   * Update `VERSION` file from `9.5.0-pre` to `9.5.0-rc0`:
+     ```echo 9.5.0-rc0 > VERSION```
+     <b>Note:</b> Please do not use `9.5.0`, or `9.5.0-rc1`, directly because the soname is derived from the current version number. Therefore, 9.5.0 chould only be used for the final, tagged and distributed code.
+     ```git commit -a -m "update VERSION"```
+     <b>Note:</b> This commit is done without a pull request! We use the `update VERSION` commits to tag releases and release candidates and therefore should be plain commits on the release branch.
+   * Push the branch to github (assuming `origin` points to github):
+     ```git push origin dealii-9.5`
+ - [ ] <b>Github: Update branch properties</b>
+       Check branch properties on github! This should be set automatically but nevertheless make sure that the following options are set: push protection + mandatory test + mandatory number of reviews, best between 2 and 3.
+ - [ ] <b>Main branch: Update version</b>
+     ```git checkout master```
+     ```git checkout -b update_version```
+   * Update the `VERSION` file from `9.5.0-pre` to `9.6.0-pre`.
+     ```echo 9.6.0-rc0 > VERSION```
+     <b>Note:</b> Conservatively only increment the minor version even if the plan is to later release a major update &mdash; it is always possible to convert 9.4 into 10.0 later, but one can't easily back down any more.
+   * ```git commit -a -m "Update VERSION"```
+   * Make a pull request against main branch (`master`).
+
+## Post-Branching tasks and cleanup:
+
+The following is a list of ouststanding tasks that have to happen on the release branch before we can tag a release (candidate). In order to duplicated efforts, add your a tag `@name` with your name after `assigned:` and link corresponding pull requests after `pr:`. finally, tick of the box when the task is done.
+
+ - [ ] <b>Update `AUTHORS.md` and `LICENSE.md`</b> (assigned:, pr:)
+   * Create an `AUTHORS.md` file in the top-level directory of the branch that contains a text-only copy of the authors.html file from the website. You can start from lynx -dump -nolist https://www.dealii.org/authors.html >AUTHORS and format it like this: https://github.com/dealii/dealii/blob/dealii-9.0/AUTHORS
+   * Update `LICENSE.md` to point to the AUTHORS.md file:
+     ```[...] refers to the people listed in the file AUTHORS.md.```
+   * ```git add AUTHORS.md LICENSE.md```
+     ```git commit -a -m "update AUTHORS.md and LICENSE.md"```
+   * Make a pull request against release branch (`dealii-9.5`).
+ - [ ] <b>Remove unfinished tutorial programs.</b> (assigned:, pr:)
+   * Delete directories on the release branch:
+     ```cd examples```
+     ```git rm -r step-... ...```
+   * These steps should also not be listed on the branch in `doc/doxygen/tutorial/tutorial.h.in`
+   * ```git commit -a -m "remove unfinished example steps"```
+   * Make a pull request against the release branch (`dealii-9.5`).
+ - [ ] <b>Update deprecations</b> (assigned:, pr:)
+   On the main branch, replace all occurrences of `DEAL_II_DEPRECATED_EARLY` by `DEAL_II_DEPRECATED` in the library.
+   <b>Note:</b> This is a time critical task so that we don't lose track what declarations have been deprecated (early) before or after this release.
+ - [ ] <b>Update version dependencies</b> (assigned:, pr:)
+   * On mainline, do something like this to require the current dev version for the tutorials and in the documentation:
+     ```perl -pi -e 's/deal.II 9.5.0/deal.II 9.6.0/g;' examples/*/CMakeLists.txt```
+   * Also check `doc/users/*` and `tests/*`:
+     ```grep "FIND_PACKAGE(deal.II" -r doc/ tests/```
+   * ```git commit -a -m "Require the current version of deal.II."```
+   * Make a pull request against main branch (`master`).
+ - [ ] <b>Documentation check</b> (assigned:, pr:)
+   Ensure once more that the documentation is generated cleanly:
+   * Ensure that the code gallery is in place:
+     ```git clone https://github.com/dealii/code-gallery.git```
+   * Generate documentation
+     ```mkdir build && cd build```
+     ```cmake -DDOCUMENTATION=ON -DDEAL_II_DOXYGEN_USE_MATHJAX=ON -DCMAKE_INSTALL_PREFIX=<install>```
+     ```make documentation```
+     ```cd <install>/doc```
+     ```for i in `find . | egrep '\.html$'` ; do perl <source>/doc/doxygen/scripts/validate-xrefs.pl $i ; done```

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.