Skip to content

Commit a31dad3

Browse files
committed
Draft 1 of Release Process overview
1 parent 2c01aff commit a31dad3

File tree

2 files changed

+98
-0
lines changed

2 files changed

+98
-0
lines changed

technical/ReleaseProcess.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
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

technical/index.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ Technical information of interest to Contributors.
3131
- [Create a Python Binding for C++ Class](./CreatePythonBindingForCpp.md)
3232
- [Checklist for Adding a Feature to a Workbench in C++](./ChecklistForNewFeatureC++.md)
3333

34+
## Release Management
35+
36+
- [Overview](./ReleaseProcess.md)
37+
3438
## See Also
3539

3640
- [Wiki Developer Hub](https://wiki.freecad.org/Developer_hub)

0 commit comments

Comments
 (0)