Release process: Difference between revisions

From FreeCAD Documentation
(Removed "Template:DownloadMacStable")
 
(43 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{VeryImportantMessage|'''<big>NOTE:
1) THIS PAGE NEEDS TO BE ADAPTED TO FREECAD <br/>
2) PLEASE DO NOT TRANSLATE THIS PAGE <br/>
3) THIS PAGE IS MISSING TECHNICAL DETAIL (git commands, bash commands etc...)</big>'''}}

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 [http://forum.freecadweb.org/viewtopic.php?f=8&t=6441 forum thread].
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 [http://forum.freecadweb.org/viewtopic.php?f=8&t=6441 forum thread].


Line 4: Line 9:


* The "target release" field of the [http://www.freecadweb.org/tracker tracker] should be used more, even on bugs that are not assigned to anybody, to mark bugs that we find important to solve before a release, or features we are working on, so others are aware of "how close" we are to release. This appears on the [http://freecadweb.org/tracker/roadmap_page.php roadmap].
* The "target release" field of the [http://www.freecadweb.org/tracker tracker] should be used more, even on bugs that are not assigned to anybody, to mark bugs that we find important to solve before a release, or features we are working on, so others are aware of "how close" we are to release. This appears on the [http://freecadweb.org/tracker/roadmap_page.php roadmap].

* We should find a way to process the list below (A "tickable" list somewhere?)
* We should find a way to process the list below (A "tickable" list somewhere?)


Line 15: Line 19:
** The documentation can be fully updated
** The documentation can be fully updated
** The release notes can be prepared/finished
** The release notes can be prepared/finished

= Release management =

Preparing FreeCAD for a release

== Release Day - 3 weeks - Feature Freeze ==

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

== Release Day - 2 weeks - String Freeze ==

# Update and commit new .ts files
# Push translation files to Crowdin, use [[Crowdin Scripts]]
# 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 ==

# 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 ==

# Finish the release notes
# Finish PR spiel for the forum and wiki/website.
# Announce to all FC translators [[{{PAGENAME}}#Release_Day_-_2_weeks|(see Release t-2 weeks)]] that the deadline for their translations is about to pass

== Release Day - 2 days ==

* Update years in source files
* Update the python API doc pages - [[User:Yorik|yorik]]

== Release Day - 1 day ==

* Commit a new splash and about screen image, and update all versions in a number of source code locations:
:* <code>README.md</code>
:* <code>appveyor.yml</code>
:* <code>CMakeLists.txt</code>
:* <code>src/Tools/offlinedoc/buildqhelp.py</code>
:* <code>src/XDGData/org.freecadweb.FreeCAD.appdata.xml</code>
:* <code>vagrant/Xenial/generate_yaml.sh</code>
:* <code>vagrant/Xenial/bin/launcher</code>
:* <code>vagrant/generate_yaml.sh</code>
:* <code>vagrant/FreeCAD.sh</code>

:* Prepare a packager's release files and alert the packagers.
* Tag the new release
:* <code>TODO: relevant git commands</code>

== Release Day ==

=== Pre Release ===

<div class="mw-collapsible mw-collapsed toccolours">
<big>'''Steps to take for Pre-Release'''</big>
<div class="mw-collapsible-content">
* Prepare signed source tarballs and upload both the tarballs and the signatures to SourceForge. X.Y.Z refers to the version being released.

<ol>
<li>Check out from git from the release tag:</li>
: <code>gelevant git command</code>

<li>Change to the Release_X.Y.Z directory:</li>
: <code>cd Release_X.Y.Z</code>

<li>Rename freecad directory to freecad-X.Y.Z:</li>
: <code>mv freecad freecad-X.Y.Z</code>

<li>Run the tar process - we need this file for all of the compression types we want so we do this first:</li>
: <code>tar -cvf freecad-X.Y.Z.tar freecad-X.Y.Z/</code>

<li>Compress the files:</li>
:XZ: <code>xz -k -e -v -z freecad-X.Y.Z.tar</code>
:7Zip: <code>7z a freecad-X.Y.Z.tar.7z freecad-X.Y.Z.tar</code>
:BZ2: <code>bzip2 -k freecad-X.Y.Z.tar.bz2</code>
:GZ: <code>gzip -c freecad-X.Y.Z.tar > freecad-X.Y.Z.tar.gz</code>

<li>GPG Sign the files:</li>
:<code>gpg --default-key <key> --sign --detach-sign --armor freecad-X.Y.Z.tar.7z</code>
:<code>gpg --default-key <key> --sign --detach-sign --armor freecad-X.Y.Z.tar.gz </code>
:<code>gpg --default-key <key> --sign --detach-sign --armor freecad-X.Y.Z.tar.xz </code>
:<code>gpg --default-key <key> --sign --detach-sign --armor freecad-X.Y.Z.tar.bz2 </code>

<li>Verify the files:</li>
:<code>gpg --verify freecad-X.Y.Z.tar.7z.asc freecad-X.Y.Z.tar.7z</code>
:<code>gpg --verify freecad-X.Y.Z.tar.bz2.asc freecad-X.Y.Z.tar.bz2</code>
:<code>gpg --verify freecad-X.Y.Z.tar.gz.asc freecad-X.Y.Z.tar.gz</code>
:<code>gpg --verify freecad-X.Y.Z.tar.xz.asc freecad-X.Y.Z.tar.xz</code>

<li>Create the new directory on Sourceforge for the X.Y.Z version. Set it to staging:</li>
:Under TODO: verify find the correct path <code>sftp://frs.sourceforge.net/home/frs/project/f/fr/freecad/freecad/X.Y.Z</code>
:OR
:TODO: verify find the correct path <code>sftp://frs.sourceforge.net/home/frs/project/f/fr/freecad-devel/freecad/X.Y.Z</code>

<li>Upload to SourceForge:</li>
:Select FreeCAD directories, then the version number:
:Eg to: TODO: verify find the correct path <code>sftp://frs.sourceforge.net/home/frs/project/f/fr/freecad/freecad/X.Y.Z</code>
:OR
:TODO: verify find the correct path <code>sftp://frs.sourceforge.net/home/frs/project/f/fr/freecad-devel/freecad/X.Y.Z</code>
</ol>

* Send a Release post to the forum.
</div>
</div>

==== Translations ====

# Pull Translations from Crowdin using the [[Crowdin Scripts]] (which will pull all Crowdin maintained languages)

=== Post Release ===

# Update and/or check the current version in the wiki:
#: <s>[[Template:Stable-Version]]</s> (Not up-to-date and no longer used)
#: <s>[[Template:Development-Version]]</s> (Not up-to-date and no longer used)
#: [[Installing_on_Windows|Installing on Windows]]
#: [[Installing_on_Linux|Installing on Linux]]
#: [[Installing_on_Mac|Installing on Mac]]
#: [[AppImage]]
#: [[Download|Download]]
#: Where else?
# Release announcement to the forum
# Unleash the translators, asking them to send their translated release announcements to local media
# Update external locations that feature FreeCAD
#*[http://freshcode.club/projects/freecad Freshcode] ([https://github.com/luzpaz/FreeCAD-dependencies/issues/5 could be automated if we set up Github correctly])
#* Check sourceforge
#* Check [https://repology.org/metapackage/freecad/badges repology] and track distros that haven't updated to the latest stable

=== After Specific releases ===

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


== Tasks ==
== Tasks ==


<big>'''NOTE: These need to be integrated in to the above'''</big>
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!


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!
* [[User:Jriegel|jriegel]] - Giving the signal to the release (3 weeks before?)
* Giving the signal to the release (3 weeks before?)
* [[User:Yorik|yorik]] - Gathering the strings to translate and uploading them on crowdin
* Gathering the strings to translate and uploading them on crowdin via [[Crowdin Scripts]] - [[User:Yorik|yorik]]
* [[User:Yorik|yorik]] - Announce on the forum and on social networks that translation is needed
* Announce on the forum and on social networks that translation is needed (this needs to be done several times) - [[User:Yorik|yorik]]
* [[User:Yorik|yorik]] - Set the splashscreen
* Set the splashscreen - [[User:Yorik|yorik]]
* Unassigned - Update years in source files
* Unassigned - Update dependencies in README
* Unassigned - Update dependencies in README
* Unassigned - Change the version number in the FreeCAD code
* Unassigned - Change the version number in the FreeCAD code
* Unassigned - Check that all workbenches pages on the wiki are up-to-date (all their commands are listed), list missing pages
* Unassigned - Check that all workbenches pages on the wiki are up-to-date (all their commands are listed), list missing pages
* Unassigned - Manage the updates of the wiki
* Unassigned - Manage the updates of the wiki
* Unassigned - Manage the release notes
* Unassigned - Manage the release notes (ex. [[Release_notes_0.xx]])
* Unassigned - Update ChangeLog.txt
* <s>Unassigned - Update ChangeLog.txt</s> (we refer people to mantisbt changelog)
* [[User:Yorik|yorik]] - Merge back the translations from crowdin
* Merge back the translations from crowdin - [[User:Yorik|yorik]]
* Unassigned - Check the german translation
* Unassigned - Check the german translation
* Unassigned - Check the french translation
* Unassigned - Check the french translation
* Unassigned - Check the other translations that have reached 100% (add them here)
* Unassigned - Check the other translations that have reached 100% (add them here)
* Unassigned - Tag the exact release commit in git
* Unassigned - Tag the exact release commit in git
* Unassigned - Make the windows 32bit build
* Unassigned - Make the Windows 32bit build
* Unassigned - Make the windows 64bit build
* Unassigned - Make the Windows 64bit build
* Unassigned - Make the mac build
* Unassigned - Make the MacOS build
* Unassigned - Make the ubuntu stable build
* Unassigned - Make the Ubuntu stable build
* Unassigned - Check the windows 32bit build
* Unassigned - Make the appImage build
* Unassigned - Check the windows 64bit build
* Unassigned - Make the flatpak build
* Unassigned - Check the mac build
* Unassigned - Make the snap build
* Unassigned - Check the ubuntu build
* Unassigned - Check the Windows 32bit build
* Unassigned - Communicate the release to package managers of linux distributions (debian, fedora)
* Unassigned - Check the Windows 64bit build
* Unassigned - Check the MacOS build
* [[User:Yorik|yorik]] - Update the release numbers on the tracker
* Unassigned - Check the Ubuntu build
* [[User:Yorik|yorik]] - Update the release numbers and download locations on the main web page for all languages
* Unassigned - Check the appImage build
* [[User:Yorik|yorik]] - Update the python API doc pages
* Unassigned - Check the flatpak build
* Unassigned - Check the snap build
* Unassigned - Communicate the release to package managers of linux distributions (debian, fedora, arch)
* Unassigned - Communicate the release to package managers of MacOS (homebrew, macports, fink)
* Unassigned - Communicate the release to package managers of Windows (chocolatey)
* Update the release numbers on the tracker - [[User:Yorik|yorik]]
* Update the release numbers and download locations on the main web page for all languages - [[User:Yorik|yorik]]
* Unassigned - Official release announcement on the FreeCAD web page
* Unassigned - Spread it around. see chapter Publicity
* Unassigned - Update the example splash for all *.appdata.xml (ex. [https://github.com/FreeCAD/FreeCAD/blob/master/package/fedora/freecad.appdata.xml FreeCAD/package/fedora/freecad.appdata.xml])
* Try to bump all 3rd party deps to the minimum version to build FreeCAD in the package ecosystem via https://github.com/luzpaz/FreeCAD-dependencies


== Publicity ==
== 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).
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.
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.
<div class="mw-collapsible mw-collapsed toccolours">
<big>'''Links for PR'''</big>
<div class="mw-collapsible-content">


=== Social networks ===
=== Social networks ===
Line 79: Line 229:
* http://cad.about.com/
* http://cad.about.com/
* http://en.wikipedia.org/wiki/FreeCAD
* http://en.wikipedia.org/wiki/FreeCAD
* http://forum.diigiit.com/


=== Spanish ===
=== Spanish ===
Line 92: Line 243:
* http://sliptonic.com/
* http://sliptonic.com/
* http://opensourcedesigntools.blogspot.de/
* http://opensourcedesigntools.blogspot.de/
* [[User:Yorik|yorik]] - http://yorik.uncreated.net
* http://yorik.uncreated.net - [[User:Yorik|yorik]]


=== French ===
=== French ===


* http://www.linuxgraphic.org/
* http://www.linuxgraphic.org/
* http://betlibre.wood3dservices.fr/
* http://www.freecad-france.com/


=== Portugese ===
=== Portugese ===
Line 121: Line 272:


* http://www.lirui.name/post/208.html
* http://www.lirui.name/post/208.html
</div>
</div>




[[Category:Roadmap]]
[[Category:Roadmap]]
[[Category:Administration]]

Latest revision as of 10:07, 5 August 2023

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

  • The "target release" field of the tracker should be used more, even on bugs that are not assigned to anybody, to mark bugs that we find important to solve before a release, or features we are working on, so others are aware of "how close" we are to release. This appears on the roadmap.
  • We should find a way to process the list below (A "tickable" list somewhere?)

Planning

  • Ideally official releases should happen each 3 to 6 months
  • A signal should be emitted (by jriegel?) before the release (3 weeks?) so:
    • No more new feature gets introduced, only bug fixes
    • The strings are collected and uploaded to crowdin for translation
    • The documentation can be fully updated
    • The release notes can be prepared/finished

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

  • Update years in source files
  • Update the python API doc pages - yorik

Release Day - 1 day

  • Commit a new splash and about screen image, and update all versions in a number of source code locations:
  • 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.
  • Tag the new release
  • 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!

  • Giving the signal to the release (3 weeks before?)
  • Gathering the strings to translate and uploading them on crowdin via Crowdin Scripts - yorik
  • Announce on the forum and on social networks that translation is needed (this needs to be done several times) - yorik
  • Set the splashscreen - yorik
  • Unassigned - Update dependencies in README
  • Unassigned - Change the version number in the FreeCAD code
  • Unassigned - Check that all workbenches pages on the wiki are up-to-date (all their commands are listed), list missing pages
  • Unassigned - Manage the updates of the wiki
  • Unassigned - Manage the release notes (ex. Release_notes_0.xx)
  • Unassigned - Update ChangeLog.txt (we refer people to mantisbt changelog)
  • Merge back the translations from crowdin - yorik
  • Unassigned - Check the german translation
  • Unassigned - Check the french translation
  • Unassigned - Check the other translations that have reached 100% (add them here)
  • Unassigned - Tag the exact release commit in git
  • Unassigned - Make the Windows 32bit build
  • Unassigned - Make the Windows 64bit build
  • Unassigned - Make the MacOS build
  • Unassigned - Make the Ubuntu stable build
  • Unassigned - Make the appImage build
  • Unassigned - Make the flatpak build
  • Unassigned - Make the snap build
  • Unassigned - Check the Windows 32bit build
  • Unassigned - Check the Windows 64bit build
  • Unassigned - Check the MacOS build
  • Unassigned - Check the Ubuntu build
  • Unassigned - Check the appImage build
  • Unassigned - Check the flatpak build
  • Unassigned - Check the snap build
  • Unassigned - Communicate the release to package managers of linux distributions (debian, fedora, arch)
  • Unassigned - Communicate the release to package managers of MacOS (homebrew, macports, fink)
  • Unassigned - Communicate the release to package managers of Windows (chocolatey)
  • Update the release numbers on the tracker - yorik
  • Update the release numbers and download locations on the main web page for all languages - yorik
  • Unassigned - Official release announcement on the FreeCAD web page
  • Unassigned - Spread it around. see chapter Publicity
  • Unassigned - Update the example splash for all *.appdata.xml (ex. FreeCAD/package/fedora/freecad.appdata.xml)
  • Try to bump all 3rd party deps to the minimum version to build FreeCAD in the package ecosystem via https://github.com/luzpaz/FreeCAD-dependencies

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.