Steps for a beta release:
  - docs:
     * update all docs with asciidoc in doc/

  - code:
     * Tcl 8.5:
       * configure with --enable-development
         make test
       * configure with --enable-memcount=yes
         make test 2>&1|cat |fgrep Overall
       * configure with --enable-development and activate valgrind in Makefile
         make test 2>&1|cat |fgrep "definitely lost"
         (8.5.11 ok, when every test returns "40 bytes in 2 blocks")
         (8.5.14 ok, when on test reurns "64 bytes in 1 blocks")
       * get rid of non-ansi-c
         make "CFLAGS_DEFAULT=-ansi -pedantic"
         (warnings are ok, errors not)
       * compile with clang
         make "CC=clang"
         make "CC=clang" test
       * run static analysis:
         make cppcheck
	 #/opt/local/bin/scan-build-mp-8.0 -enable-checker alpha make
	 /opt/local/bin/scan-build-mp-8.0 make
	 /opt/local/bin/scan-view-mp-8.0 ...
       * run Coverity (7.6.0, requires gcc 4.8):
       	 (sudo port install gcc48)
	 (download Coverity Build Tool from https://scan.coverity.com/download/)
	 make clean
	 rm -rf cov-int/
         /usr/local/cov-analysis-macosx-7.6.0/bin/cov-build --dir cov-int make CC=gcc-mp-4.8
	 tar czvf /tmp/nsf.tgz cov-int

	 curl --form token=jJ1QoqZ2Ksriz6JXtI3aHg \
	   --form email=<email> \
	   --form file=@/tmp/nsf.tgz \
	   --form version="`git describe --tags`" \
  	   --form description="maintenance checkout" \
	     https://scan.coverity.com/builds?project=Next+Scripting+Framework


       * configure without --enable-development
         make install
         make install-aol
         test with NaviServer/AOLserver (xowiki/xowf)

     * Tcl 8.6:
       * configure with --enable-development
         make test
       * configure with --enable-memcount=yes
         make test 2>&1|cat |fgrep Overall
       * configure with --enable-development and activate valgrind in Makefile
         make test 2>&1|cat |fgrep "definitely lost"
         (8.6b2 ok, when every test returns "40 bytes in 2 blocks")
         (8.6.0 or later ok, when every test returns "0 bytes in 0 blocks")
       * valgrind via vagrant:
         1. Install vagrant:  https://www.vagrantup.com/downloads
	 2. Install VirtualBox: https://www.virtualbox.org/wiki/Downloads
         3. Check out newest box version: https://app.vagrantup.com/boxes/search?utf8=%E2%9C%93&sort=created&provider=&q=by+chef+bento%2Fubuntu-*+
	 4. $ mkdir -p ~/VMs/ubuntu-21.04
	 5. Add NSF as synced folder: Vagrantfile
	    config.vm.synced_folder "/path/to/nsf", "/home/vagrant/nsf"
	    config.vm.synced_folder "/path/to/tcl", "/home/vagrant/tcl"
	 5. $ cd VMs/ubuntu-21.04
            $ vagrant init bento/ubuntu-21.04
            $ vagrant up
            $ vagrant ssh
	 6. With box:
	    vagrant@vagrant:~$ bash
            vagrant@vagrant:~$ apt update; apt upgrade
	    vagrant@vagrant:~$ apt install valgrind
	 7. Setup `apt install tcl-dev` or a custom tcl build
	 8. vagrant@vagrant:~$ cd nsf && ./configure CFLAGS=-DPURIFY --enable-development
	 9. Activate valgrind in Makefile (uncomment line with TCLSH plus valgrind)
	10. vagrant@vagrant:~$ cat valgrind.out | fgrep "definitely lost"
	11. vagrant@vagrant:~$ cat valgrind.out | fgrep "ERROR SUMMARY" (incl. invalid reads)
          
   - test tk apps under windows

   - Announcement
      * Summarize changes since the last release in doc/Announce-VERSION
        As source use e.g.
            git log --date-order --date=short|less

	    ~/scripts/git-changelog2  -- 2.3.0..HEAD --no-merges > ChangeLog-2.3.0-HEAD

	    Get:
	       https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/gitlog-to-changelog;hb=HEAD
	       curl -Lo ../git-changelog 'https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/gitlog-to-changelog;hb=HEAD'
	    Run:
	    ../git-changelog 2.3.0..HEAD --format=%s%n%b[%h] -- --no-merges > ChangeLog-2.3.0-HEAD

        Diffstats:
            git diff --stat  2.3.0..HEAD
	    
      * Run spell checker over announcement + ChangeLog
      * git add announcement 

   - rebuild documentation
       * Prerequisites:
         o dtplite (tcllib)
	 o asciidoc (port install asciidoc)
	 o Chrome
       * make doc
       * make pdfdoc (currently, it is necessary to manually edit next-tutorial.html and next-migration.html
         and replace setInterval() + next 4 lines by reinstall())
       * call "make doc" again to remove editing traces

   - build test-tar-file
       * make tar
       * check content of tar file
         tar ztvf ../nsf2.4.0.tar.gz |sort -rn -k 5,6|less

   - create branch entries for CI systems (Travis, AppVeyor)
      add 2.4 to branches/only sections
      commit that change
      (continue with tagging)

   - tag version in git and commit
       git tag -a 2.4.0 -m 2.4.0
       git push --tags
       # git push --follow-tags
       # git push commit

       In case retagging is necessary:
         git tag -d 2.4.0
         git tag -a 2.4.0 -m 2.4.0
         git push origin -f --tags

   - create branches for CI systems (Travis, AppVeyor)
     git checkout -b 2.4 2.4.0
     git push origin 2.4
     register a cron task for the new branch on Travis (website)

   - build tar
       * (make sure accurate COMMIT file is present, e.g., run ./configure once?)
       * make tar
       * check content of tar file
         tar ztvf ../nsf2.4.0.tar.gz |sort -rn -k 5,6|less


  -  put NX API and shell onto sourceforge:
      * (Make sure to have performed ./configure once, so that
        version.inc is in place!)
      * cd doc/
      * dtplite -o /tmp/doc/ -style man.css -header header.html.inc html .
      * mv /tmp/doc/toc.html /tmp/doc/index.html
      * scp -r /tmp/doc/* {gneumann|foxcruiser}@web.sourceforge.net:/home/project-web/next-scripting/htdocs/
      * check https://next-scripting.sourceforge.io/

   - update archive at sourceforge
      * create folder with version name
      * upload tar file to new folder
      * upload announce to new folder and rename it to README

   - update web site
     * Stefan, please add recommended steps here

   - prepare next release:
       rename folder containing nsf (e.g. to nsf2.4.0)
       update version number in 
         * configure.ac (NsfVersion, NSF_MAJOR_VERSION, NSF_MINOR_VERSION)
	 * library/nx/nx.tcl
         * library/nx/pkgIndex.tcl
	 * library/xotcl/library/xotcl2.tcl
         * win/pkg.vc
	 * library/serialize/serializer.tcl
	 * library/mongodb/nx-mongo.tcl
	 * library/mongodb/configure.ac
       in SRCDIR and SRCDIR/library/mongodb/
       autoconf
       ./configure ....