1curl release procedure - how to do a release
2============================================
3
4in the source code repo
5-----------------------
6
7- run `./scripts/copyright.pl` and correct possible omissions
8
9- edit `RELEASE-NOTES` to be accurate
10
11- update `docs/THANKS`
12
13- make sure all relevant changes are committed on the master branch
14
15- tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the
16  tag and we use underscores instead of dots in the version number. Make sure
17  the tag is GPG signed (using -s).
18
19- run "./maketgz 7.34.0" to build the release tarballs. It is important that
20  you run this on a machine with the correct set of autotools etc installed
21  as this is what then will be shipped and used by most users on \*nix like
22  systems.
23
24- push the git commits and the new tag
25
26- gpg sign the 4 tarballs as maketgz suggests
27
28- upload the 8 resulting files to the primary download directory
29
30in the curl-www repo
31--------------------
32
33- edit `Makefile` (version number and date),
34
35- edit `_newslog.html` (announce the new release) and
36
37- edit `_changes.html` (insert changes+bugfixes from RELEASE-NOTES)
38
39- commit all local changes
40
41- tag the repo with the same name as used for the source repo.
42
43- make sure all relevant changes are committed and pushed on the master branch
44
45  (the website then updates its contents automatically)
46
47on GitHub
48---------
49
50- edit the newly made release tag so that it is listed as the latest release
51
52inform
53------
54
55- send an email to curl-users, curl-announce and curl-library. Insert the
56  RELEASE-NOTES into the mail.
57
58celebrate
59---------
60
61- suitable beverage intake is encouraged for the festivities
62
63curl release scheduling
64=======================
65
66Release Cycle
67-------------
68
69We do releases every 8 weeks on Wednesdays. If critical problems arise, we can
70insert releases outside of the schedule or we can move the release date - but
71this is rare.
72
73Each 8 week release cycle is split in two 4-week periods.
74
75- During the first 4 weeks after a release, we allow new features and changes
76  to curl and libcurl. If we accept any such changes, we bump the minor number
77  used for the next release.
78
79- During the second 4-week period we do not merge any features or changes, we
80  then only focus on fixing bugs and polishing things to make a solid coming
81  release.
82
83- After a regular procedure-following release (made on Wednesdays), the
84  feature window remains closed until the following Monday in case of special
85  actions or patch releases etc.
86
87If a future release date happens to end up on a "bad date", like in the middle
88of common public holidays or when the lead release manager is away traveling,
89the release date can be moved forwards or backwards a full week. This is then
90advertised well in advance.
91
92Coming dates
93------------
94
95Based on the description above, here are some planned release dates (at the
96time of this writing):
97
98- September 15, 2021 (7.79.0)
99- November 10, 2021
100- January 5, 2022
101- March 2, 2022
102- April 27, 2022
103- June 22, 2022
104- August 17, 2022
105- October 12, 2022
106- December 7, 2022
107- February 1, 2023
108- March 20, 2023 (8.0.0)
109
110The above (and more) curl-related dates are published in
111[iCalendar format](https://calendar.google.com/calendar/ical/c9u5d64odop9js55oltfarjk6g%40group.calendar.google.com/public/basic.ics)
112as well.
113