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

 * 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

 * 1) Feature freeze
 * 2) Forum post announcing the feature freeze and asking for testing
 * 3) Start changing the version number in the FreeCAD docs
 * 4) Let all Workbench maintainers on FreeCAD-Addons know to prepare
 * 5) Let all Macro creators on FreeCAD-Macros know to prepare

Release Day - 2 weeks

 * 1) String freeze
 * 2) Update and commit new ts files
 * 3) Push translation files to Crowdin, use Crowdin Scripts
 * 4) 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"
 * 5) * 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 [Release_Day_-_2_weeks see Release t-2 weeks] that the deadline for their translations is about to pass

Release Day - 1 day

 * Commit a new splash and about screen image, and update all versions in a number of source code locations:


 * Prepare a packager's release files and alert the packagers.


 * Tag the new release

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.

 Check out from git from the release tag:

Change to the Release_X.Y.Z directory:

Rename freecad directory to freecad-X.Y.Z:

Run the tar process - we need this file for all of the compression types we want so we do this first:

Compress the files:
 * XZ:
 * 7Zip:
 * BZ2:
 * GZ:

GPG Sign the files:

Verify the files:

Create the new directory on Sourceforge for the X.Y.Z version. Set it to staging:</li>
 * Under TODO: verify find the correct path
 * OR
 * TODO: verify find the correct path

Upload to SourceForge:</li>
 * Select FreeCAD directories, then the version number:
 * Eg to: TODO: verify find the correct path
 * OR
 * TODO: verify find the correct path

</ol>


 * 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 the current version in the wiki
 * Download page
 * Where else?
 * 1) Release announcement to the forum
 * 2) Unleash the translators, asking them to send their translated release announcements to local media

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 years in source files
 * 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
 * Update the python API doc pages - 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. Links for PR

Social networks

 * http://plus.google.com/107660967460246172334/posts
 * yorik - http://www.facebook.com/FreeCAD (also updates http://twitter.com/FreeCADNews automatically)

News Sites

 * http://makezine.com/
 * http://www.webupd8.org/
 * http://libregraphicsworld.org/
 * http://www.techrepublic.com/
 * http://www.linuxjournal.com/
 * http://www.reddit.com/r/freecad (or http://www.reddit.com/r/cad/)
 * http://hackaday.com/contact-hack-a-day/
 * http://www.linuxformat.com/
 * http://www.inside3dp.com/
 * http://diy3dprinting.blogspot.com/

Other Sites

 * http://www.bld3r.com/
 * http://forum.lulzbot.com/viewforum.php?f=30
 * http://cad.about.com/
 * http://en.wikipedia.org/wiki/FreeCAD
 * http://forum.diigiit.com/

Spanish

 * http://www.taringa.net/

Blogs

 * http://www.junauza.com/
 * http://www.blender3darchitect.com/
 * http://linuxaideddesign.blogspot.de/
 * http://www.techdrivein.com/
 * http://sliptonic.com/
 * http://opensourcedesigntools.blogspot.de/
 * http://yorik.uncreated.net - yorik

French

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

Portugese

 * http://www.geosaber.com.br/ (not sure how appropriate/relevant)

Spanish

 * http://www.iearobotics.com/blog/

Italian

 * http://ingegnerialibera.altervista.org/blog/doku.php

Polish

 * http://www.ubucentrum.net
 * http://wkupiesila.blogspot.com
 * http://cadblog.pl
 * http://jakilinux.org/

Chinese

 * http://www.lirui.name/post/208.html