Release process

NOTE:

1) THIS PAGE NEEDS TO BE ADAPTED TO FREECAD
2) PLEASE DO NOT TRANSLATE THIS PAGE

3) THIS PAGE IS MISSING TECHNICAL DETAIL (git commands, bash commands etc...)

The aim of this page is to gather ideas and organize things so official releases of FreeCAD require less work, and therefore can happen more often. This topic is discussed on this forum thread.

General ideas

Planning

Release management

Preparing FreeCAD for a release

Release Day - 3 weeks - Feature Freeze

  1. Forum post announcing the feature freeze and asking for testing
  2. Start changing the version number in the FreeCAD docs
  3. Announce to all Workbench maintainers on FreeCAD-Addons know to prepare
  4. Announce to all Macro creators on FreeCAD-Macros know to prepare
  5. Asking wiki editors/translators to prepare for upcoming release.

Release Day - 2 weeks - String Freeze

  1. Update and commit new .ts files
  2. Push translation files to Crowdin, use Crowdin Scripts
  3. Send a message to all FreeCAD translators about the deadline of the upcoming release -- set the deadline for delivering the translations to e.g. "Release Day -3 day"
    • To message all translators on Crowdin: Log in to Crowdin and make an announcement (TODO: add link here)

Release Day - 1 week

  1. Send the final version of the (short) release announcement to all translators, asking them to translate it into their languages -- set the deadline for delivering the translations to e.g. "Release Day -1 day"

Release Day - 3 days

  1. Finish the release notes
  2. Finish PR spiel for the forum and wiki/website.
  3. Announce to all FC translators (see Release t-2 weeks) that the deadline for their translations is about to pass

Release Day - 2 days

Release Day - 1 day

  • README.md
  • appveyor.yml
  • CMakeLists.txt
  • src/Tools/offlinedoc/buildqhelp.py
  • src/XDGData/org.freecadweb.FreeCAD.appdata.xml
  • vagrant/Xenial/generate_yaml.sh
  • vagrant/Xenial/bin/launcher
  • vagrant/generate_yaml.sh
  • vagrant/FreeCAD.sh
  • Prepare a packager's release files and alert the packagers.
  • TODO: relevant git commands

Release Day

Pre Release

Steps to take for Pre-Release

  • Prepare signed source tarballs and upload both the tarballs and the signatures to SourceForge. X.Y.Z refers to the version being released.
  1. Check out from git from the release tag:
  2. gelevant git command
  3. Change to the Release_X.Y.Z directory:
  4. cd Release_X.Y.Z
  5. Rename freecad directory to freecad-X.Y.Z:
  6. mv freecad freecad-X.Y.Z
  7. Run the tar process - we need this file for all of the compression types we want so we do this first:
  8. tar -cvf freecad-X.Y.Z.tar freecad-X.Y.Z/
  9. Compress the files:
  10. XZ: xz -k -e -v -z freecad-X.Y.Z.tar
    7Zip: 7z a freecad-X.Y.Z.tar.7z freecad-X.Y.Z.tar
    BZ2: bzip2 -k freecad-X.Y.Z.tar.bz2
    GZ: gzip -c freecad-X.Y.Z.tar > freecad-X.Y.Z.tar.gz
  11. GPG Sign the files:
  12. gpg --default-key <key> --sign --detach-sign --armor freecad-X.Y.Z.tar.7z
    gpg --default-key <key> --sign --detach-sign --armor freecad-X.Y.Z.tar.gz
    gpg --default-key <key> --sign --detach-sign --armor freecad-X.Y.Z.tar.xz
    gpg --default-key <key> --sign --detach-sign --armor freecad-X.Y.Z.tar.bz2
  13. Verify the files:
  14. gpg --verify freecad-X.Y.Z.tar.7z.asc freecad-X.Y.Z.tar.7z
    gpg --verify freecad-X.Y.Z.tar.bz2.asc freecad-X.Y.Z.tar.bz2
    gpg --verify freecad-X.Y.Z.tar.gz.asc freecad-X.Y.Z.tar.gz
    gpg --verify freecad-X.Y.Z.tar.xz.asc freecad-X.Y.Z.tar.xz
  15. Create the new directory on Sourceforge for the X.Y.Z version. Set it to staging:
  16. Under TODO: verify find the correct path sftp://frs.sourceforge.net/home/frs/project/f/fr/freecad/freecad/X.Y.Z
    OR
    TODO: verify find the correct path sftp://frs.sourceforge.net/home/frs/project/f/fr/freecad-devel/freecad/X.Y.Z
  17. Upload to SourceForge:
  18. Select FreeCAD directories, then the version number:
    Eg to: TODO: verify find the correct path sftp://frs.sourceforge.net/home/frs/project/f/fr/freecad/freecad/X.Y.Z
    OR
    TODO: verify find the correct path sftp://frs.sourceforge.net/home/frs/project/f/fr/freecad-devel/freecad/X.Y.Z
  • Send a Release post to the forum.

Translations

  1. Pull Translations from Crowdin using the Crowdin Scripts (which will pull all Crowdin maintained languages)

Post Release

  1. Update and/or check the current version in the wiki:
    Template:Stable-Version (Not up-to-date and no longer used)
    Template:Development-Version (Not up-to-date and no longer used)
    Installing on Windows
    Installing on Linux
    Installing on Mac
    AppImage
    Download
    Where else?
  2. Release announcement to the forum
  3. Unleash the translators, asking them to send their translated release announcements to local media
  4. Update external locations that feature FreeCAD

After Specific releases

  1. Things that have to be done / updated after a specific release (remove them as soon as they're done)

Tasks

NOTE: These need to be integrated in to the above

These are the tasks required for each release, with the name of the person responsible for it. Add your name if you want to take care of a task!

Publicity

This is a raw list of sites and blogs that have at some point mentioned FreeCAD. It is mostly harvested from http://forum.freecadweb.org/viewtopic.php?f=8&t=143 (until June 29th 2014). Feel free to add more pages or assign one or more pages to yourself to take care of notifying them about a new release of FreeCAD.