|
| 1 | +--- |
| 2 | +layout: default |
| 3 | +--- |
| 4 | + |
| 5 | +# Release Process |
| 6 | + |
| 7 | +This page describes a high-level overview of the release planning and management process. |
| 8 | + |
| 9 | +We recognize signficant wisdom in the philosophy to ["Release Early and Release Often"](https://en.wikipedia.org/wiki/Release_early,_release_often). However, releases can require significant coordinated work within the community. FreeCAD aspires to produce a major release every 3-6 months. In order to meet this goal, we will work to make releases more predicatable and automated. |
| 10 | + |
| 11 | +## Stages |
| 12 | + |
| 13 | +Each release goes through the following milestones and stages: |
| 14 | + |
| 15 | +### Announcement Preparation |
| 16 | + |
| 17 | +A release may be triggered for several reasons. |
| 18 | +- An event or dependency in the development roadmap may require a release. |
| 19 | +- There may be a desire to have a major release included in a major platform release like the next version of Ubuntu. |
| 20 | +- Or it may be that a significant set of features has matured to the point that they are ready for general usage. |
| 21 | + |
| 22 | +Whatever the reason, the first step in the determination by the maintainers that a release is needed. |
| 23 | + |
| 24 | +The maintainers will create a Github project to track the release. |
| 25 | +The maintainers will schedule a meeting to review outstanding Pull Requests. |
| 26 | + |
| 27 | + |
| 28 | +### Announcment milestone |
| 29 | + |
| 30 | +Next, the maintainers will make a formal announcment on the forum. The announcement will layout the expected timeline for the release and call for final submissions. The announcment should be further communicated through official and unofficial channels like Twitter and Reddit. |
| 31 | + |
| 32 | +### Final Feature Submission Stage |
| 33 | + |
| 34 | +The purpose of the announcment is to let contributors know that a feature freeze is imminent. Any work in process should be finalized and a Pull Request submitted. |
| 35 | + |
| 36 | +At this point, a PR may not be ready to merge and can be marked as _draft_. Creating the PR makes the maintainer community aware of pending changes that the contributor would like to have considered for the release. The maintainers will allow time (typically 1-2 weeks) for Pull Requests to be submitted. |
| 37 | + |
| 38 | +The announcment should include a date for the PR Review meeting. |
| 39 | + |
| 40 | +The announcment should also announce a splash-screen contest and provide a forum thread for submissions. |
| 41 | + |
| 42 | +### PR Review Milestone |
| 43 | + |
| 44 | +After the Submission Stage is closed, the maintainers will review all outstanding Pull Requests. For each one, they will determine if the feature is sufficiently mature to include in the release. Specifically they will consider: |
| 45 | + |
| 46 | +- How significant is the feature |
| 47 | +- How likely is the feature to negatively impact user workflow |
| 48 | +- How well documented is the new feature |
| 49 | +- How much additional testing and stabilization is likely required |
| 50 | + |
| 51 | +Maintainers will strive to include as many mature features as possible while minimizing the time needed to resolve bugs, complete documentation, and stabilize the release. |
| 52 | + |
| 53 | +Each PR will be tagged with the current release if it is to be included. |
| 54 | + |
| 55 | +Following the PR Review, any new feature Pull Requests will be held for a later version. Contributors should adjust their expectations about code reviews. |
| 56 | + |
| 57 | +### PR Merge Phase |
| 58 | + |
| 59 | +During this phase, development focus will turn towards merging the remaining tagged outstanding PRs. |
| 60 | +After the PR Merge phase, only bug-fix PRs will be merged. |
| 61 | + |
| 62 | +### Release Candidates |
| 63 | + |
| 64 | +After all outstanding PRs are merged and all critical bugs are resolved, a Release Candidate (RC) version will be created and a public announcment made. This is a request to the community for intentional and deliberate testing with the goal of uncovering as many bugs as possible. |
| 65 | + |
| 66 | +Translation files will be pushed to CrowdIn and a public call for translation assistance should be made. |
| 67 | + |
| 68 | +Release notes should be reviewed at this point and any ommisions corrected |
| 69 | + |
| 70 | +Numerous release candidates may be produced as critical bugs are addressed. |
| 71 | + |
| 72 | +### Final Release |
| 73 | + |
| 74 | +- The result of the splash screen contest is announced and the new splash screen is added to the source. |
| 75 | + |
| 76 | +- update all versions in a number of source code locations: |
| 77 | + - README.md |
| 78 | + - appveyor.yml |
| 79 | + - CMakeLists.txt |
| 80 | + - src/Tools/offlinedoc/buildqhelp.py |
| 81 | + - src/XDGData/org.freecadweb.FreeCAD.appdata.xml |
| 82 | + - vagrant/Xenial/generate_yaml.sh |
| 83 | + - vagrant/Xenial/bin/launcher |
| 84 | + - vagrant/generate_yaml.sh |
| 85 | + - vagrant/FreeCAD.sh |
| 86 | + |
| 87 | + - Prepare a packager's release files and alert the packagers. |
| 88 | + |
| 89 | +- Tag the new release |
| 90 | + TODO: relevant git commands |
| 91 | + |
| 92 | +### Release Announcment |
| 93 | + |
| 94 | +Todo |
0 commit comments