2015-10-09 15:38:59 +02:00
|
|
|
|
|
|
|
Putting out a new release
|
|
|
|
-------------------------
|
|
|
|
|
2016-08-22 22:51:33 +02:00
|
|
|
Here are the steps that the maintainer should take when putting out a
|
|
|
|
new Tor release:
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2019-08-21 16:22:37 +02:00
|
|
|
### 0. Preliminaries
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-07-13 22:58:46 +02:00
|
|
|
1. Get at least two of weasel/arma/Sebastian to put the new
|
2017-09-18 20:49:06 +02:00
|
|
|
version number in their approved versions list. Give them a few
|
|
|
|
days to do this if you can.
|
|
|
|
|
|
|
|
2. If this is going to be an important security release, give the packagers
|
|
|
|
some advance warning: See this list of packagers in IV.3 below.
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-01-26 20:39:08 +01:00
|
|
|
3. Given the release date for Tor, ask the TB team about the likely release
|
|
|
|
date of a TB that contains it. See note below in "commit, upload,
|
|
|
|
announce".
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2019-08-21 16:22:37 +02:00
|
|
|
### I. Make sure it works
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2019-05-31 08:35:19 +02:00
|
|
|
1. Make sure that CI passes: have a look at Travis
|
|
|
|
(https://travis-ci.org/torproject/tor/branches), Appveyor
|
|
|
|
(https://ci.appveyor.com/project/torproject/tor/history), and
|
|
|
|
Jenkins (https://jenkins.torproject.org/view/tor/).
|
|
|
|
Make sure you're looking at the right branches.
|
2015-11-05 15:53:05 +01:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
If there are any unexplained failures, try to fix them or figure them
|
|
|
|
out.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
2. Verify that there are no big outstanding issues. You might find such
|
|
|
|
issues --
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
* On Trac
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
* On coverity scan
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
* On OSS-Fuzz
|
2017-09-18 20:49:06 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
3. Run checks that aren't covered above, including:
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
* clang scan-build. (See the script in ./scripts/test/scan_build.sh)
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
* make test-network and make test-network-all (with
|
2019-06-05 21:38:25 +02:00
|
|
|
--enable-fragile-hardening)
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
* Running Tor yourself and making sure that it actually works for you.
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2019-06-05 21:38:25 +02:00
|
|
|
* Running Tor under valgrind. (Our 'fragile hardening' doesn't cover
|
|
|
|
libevent and openssl, so using valgrind will sometimes find extra
|
|
|
|
memory leaks.)
|
|
|
|
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2019-08-21 16:22:37 +02:00
|
|
|
### II. Write a changelog
|
2016-03-28 22:07:19 +02:00
|
|
|
|
|
|
|
|
2017-09-18 20:49:06 +02:00
|
|
|
1a. (Alpha release variant)
|
|
|
|
|
|
|
|
Gather the `changes/*` files into a changelog entry, rewriting many
|
2015-11-05 15:13:53 +01:00
|
|
|
of them and reordering to focus on what users and funders would find
|
|
|
|
interesting and understandable.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
To do this, run
|
|
|
|
`./scripts/maint/sortChanges.py changes/* > changelog.in`
|
|
|
|
to combine headings and sort the entries. Copy the changelog.in file
|
|
|
|
into the ChangeLog. Run 'format_changelog.py' (see below) to clean
|
|
|
|
up the line breaks.
|
|
|
|
|
|
|
|
After that, it's time to hand-edit and fix the issues that
|
|
|
|
lintChanges can't find:
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
1. Within each section, sort by "version it's a bugfix on", else by
|
|
|
|
numerical ticket order.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
2. Clean them up:
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
Make stuff very terse
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
Describe the user-visible problem right away
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
Mention relevant config options by name. If they're rare or unusual,
|
|
|
|
remind people what they're for
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
Avoid starting lines with open-paren
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
Present and imperative tense: not past.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2018-10-29 04:49:47 +01:00
|
|
|
"Relays", not "servers" or "nodes" or "Tor relays".
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
"Onion services", not "hidden services".
|
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
"Stop FOOing", not "Fix a bug where we would FOO".
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
Try not to let any given section be longer than about a page. Break up
|
|
|
|
long sections into subsections by some sort of common subtopic. This
|
|
|
|
guideline is especially important when organizing Release Notes for
|
|
|
|
new stable releases.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
If a given changes stanza showed up in a different release (e.g.
|
|
|
|
maint-0.2.1), be sure to make the stanzas identical (so people can
|
|
|
|
distinguish if these are the same change).
|
2015-11-05 15:53:05 +01:00
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
3. Clean everything one last time.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
4. Run `./scripts/maint/format_changelog.py --inplace` to make it prettier
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2017-09-18 20:49:06 +02:00
|
|
|
1b. (old-stable release variant)
|
|
|
|
|
|
|
|
For stable releases that backport things from later, we try to compose
|
|
|
|
their releases, we try to make sure that we keep the changelog entries
|
2018-10-29 04:49:47 +01:00
|
|
|
identical to their original versions, with a "backport from 0.x.y.z"
|
2017-09-18 20:49:06 +02:00
|
|
|
note added to each section. So in this case, once you have the items
|
|
|
|
from the changes files copied together, don't use them to build a new
|
|
|
|
changelog: instead, look up the corrected versions that were merged
|
|
|
|
into ChangeLog in the master branch, and use those.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
Add "backport from X.Y.Z" in the section header for these entries.
|
|
|
|
|
2016-03-28 22:07:19 +02:00
|
|
|
2. Compose a short release blurb to highlight the user-facing
|
2015-11-05 15:13:53 +01:00
|
|
|
changes. Insert said release blurb into the ChangeLog stanza. If it's
|
|
|
|
a stable release, add it to the ReleaseNotes file too. If we're adding
|
2017-05-26 16:01:04 +02:00
|
|
|
to a release-* branch, manually commit the changelogs to the later
|
2015-11-05 15:13:53 +01:00
|
|
|
git branches too.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2017-03-26 01:09:37 +01:00
|
|
|
3. If there are changes that require or suggest operator intervention
|
|
|
|
before or during the update, mail operators (either dirauth or relays
|
|
|
|
list) with a headline that indicates that an action is required or
|
|
|
|
appreciated.
|
|
|
|
|
|
|
|
4. If you're doing the first stable release in a series, you need to
|
2015-11-05 15:46:40 +01:00
|
|
|
create a ReleaseNotes for the series as a whole. To get started
|
|
|
|
there, copy all of the Changelog entries from the series into a new
|
|
|
|
file, and run `./scripts/maint/sortChanges.py` on it. That will
|
|
|
|
group them by category. Then kill every bugfix entry for fixing
|
|
|
|
bugs that were introduced within that release series; those aren't
|
|
|
|
relevant changes since the last series. At that point, it's time
|
|
|
|
to start sorting and condensing entries. (Generally, we don't edit the
|
|
|
|
text of existing entries, though.)
|
|
|
|
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2019-08-21 16:22:37 +02:00
|
|
|
### III. Making the source release.
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
1. In `maint-0.?.x`, bump the version number in `configure.ac` and run
|
2018-11-25 02:03:48 +01:00
|
|
|
`make update-versions` to update version numbers in other
|
2017-05-26 16:01:04 +02:00
|
|
|
places, and commit. Then merge `maint-0.?.x` into `release-0.?.x`.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2018-01-26 20:39:08 +01:00
|
|
|
When you merge the maint branch forward to the next maint branch, or into
|
|
|
|
master, merge it with "-s ours" to avoid a needless version bump.
|
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
2. Make distcheck, put the tarball up in somewhere (how about your
|
2018-11-16 17:51:58 +01:00
|
|
|
homedir on your homedir on people.torproject.org?) , and tell `#tor-dev`
|
|
|
|
about it.
|
|
|
|
|
|
|
|
If you want, wait until at least one person has built it
|
|
|
|
successfully. (We used to say "wait for others to test it", but our
|
|
|
|
CI has successfully caught these kinds of errors for the last several
|
|
|
|
years.)
|
|
|
|
|
|
|
|
|
|
|
|
3. Make sure that the new version is recommended in the latest consensus.
|
|
|
|
(Otherwise, users will get confused when it complains to them
|
|
|
|
about its status.)
|
|
|
|
|
|
|
|
If it is not, you'll need to poke Roger, Weasel, and Sebastian again: see
|
|
|
|
item 0.1 at the start of this document.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2019-08-21 16:22:37 +02:00
|
|
|
### IV. Commit, upload, announce
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2016-03-28 22:07:19 +02:00
|
|
|
1. Sign the tarball, then sign and push the git tag:
|
2015-11-05 15:53:05 +01:00
|
|
|
|
2015-11-05 15:13:53 +01:00
|
|
|
gpg -ba <the_tarball>
|
2018-11-16 17:51:58 +01:00
|
|
|
git tag -s tor-0.4.x.y-<status>
|
|
|
|
git push origin tag tor-0.4.x.y-<status>
|
|
|
|
|
|
|
|
(You must do this before you update the website: the website scripts
|
|
|
|
rely on finding the version by tag.)
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
(If your default PGP key is not the one you want to sign with, then say
|
|
|
|
"-u <keyid>" instead of "-s".)
|
2018-01-26 20:39:08 +01:00
|
|
|
|
2016-03-28 22:07:19 +02:00
|
|
|
2. scp the tarball and its sig to the dist website, i.e.
|
2018-11-16 17:51:58 +01:00
|
|
|
`/srv/dist-master.torproject.org/htdocs/` on dist-master. Run
|
|
|
|
"static-update-component dist.torproject.org" on dist-master.
|
2015-11-05 15:53:05 +01:00
|
|
|
|
2019-05-03 14:51:28 +02:00
|
|
|
In the webwml.git repository, `include/versions.wmi` and `Makefile`.
|
|
|
|
In the project/web/tpo.git repository, update `databags/versions.ini`
|
2018-11-16 17:51:58 +01:00
|
|
|
to note the new version. Push these changes to master.
|
2015-10-09 15:38:59 +02:00
|
|
|
|
2016-01-27 18:37:01 +01:00
|
|
|
(NOTE: Due to #17805, there can only be one stable version listed at
|
|
|
|
once. Nonetheless, do not call your version "alpha" if it is stable,
|
|
|
|
or people will get confused.)
|
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
(NOTE: It will take a while for the website update scripts to update
|
|
|
|
the website.)
|
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
3. Email the packagers (cc'ing tor-team) that a new tarball is up.
|
2015-10-09 15:38:59 +02:00
|
|
|
The current list of packagers is:
|
2015-11-05 15:53:05 +01:00
|
|
|
|
2020-01-23 14:55:55 +01:00
|
|
|
- {weasel,sysrqb,mikeperry} at torproject dot org
|
2015-11-05 15:13:53 +01:00
|
|
|
- {blueness} at gentoo dot org
|
2017-09-05 16:43:31 +02:00
|
|
|
- {paul} at invizbox dot io
|
|
|
|
- {vincent} at invizbox dot com
|
2015-11-05 15:13:53 +01:00
|
|
|
- {lfleischer} at archlinux dot org
|
2016-08-22 22:51:33 +02:00
|
|
|
- {Nathan} at freitas dot net
|
|
|
|
- {mike} at tig dot as
|
2017-05-26 16:01:04 +02:00
|
|
|
- {tails-rm} at boum dot org
|
2017-09-07 18:35:31 +02:00
|
|
|
- {simon} at sdeziel.info
|
2017-11-11 18:47:13 +01:00
|
|
|
- {yuri} at freebsd.org
|
2017-10-26 16:07:56 +02:00
|
|
|
- {mh+tor} at scrit.ch
|
2015-11-05 15:13:53 +01:00
|
|
|
|
2018-01-26 20:39:08 +01:00
|
|
|
Also, email tor-packagers@lists.torproject.org.
|
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
Mention where to download the tarball (https://dist.torproject.org).
|
|
|
|
|
|
|
|
Include a link to the changelog.
|
|
|
|
|
|
|
|
|
2016-03-28 22:07:19 +02:00
|
|
|
4. Add the version number to Trac. To do this, go to Trac, log in,
|
2015-11-05 15:13:53 +01:00
|
|
|
select "Admin" near the top of the screen, then select "Versions" from
|
|
|
|
the menu on the left. At the right, there will be an "Add version"
|
|
|
|
box. By convention, we enter the version in the form "Tor:
|
2018-11-16 17:51:58 +01:00
|
|
|
0.4.0.1-alpha" (or whatever the version is), and we select the date as
|
2015-11-05 15:13:53 +01:00
|
|
|
the date in the ChangeLog.
|
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
5. Wait for the download page to be updated. (If you don't do this before you
|
|
|
|
announce, people will be confused.)
|
2018-01-26 20:34:25 +01:00
|
|
|
|
|
|
|
6. Mail the release blurb and ChangeLog to tor-talk (development release) or
|
2016-12-12 21:38:51 +01:00
|
|
|
tor-announce (stable).
|
2015-11-05 15:13:53 +01:00
|
|
|
|
2017-09-18 20:49:06 +02:00
|
|
|
Post the changelog on the blog as well. You can generate a
|
2018-11-16 17:51:58 +01:00
|
|
|
blog-formatted version of the changelog with
|
|
|
|
`./scripts/maint/format_changelog.py --B`
|
2016-12-12 21:38:51 +01:00
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
When you post, include an estimate of when the next TorBrowser
|
|
|
|
releases will come out that include this Tor release. This will
|
|
|
|
usually track https://wiki.mozilla.org/RapidRelease/Calendar , but it
|
|
|
|
can vary.
|
2015-11-05 15:13:53 +01:00
|
|
|
|
2018-11-16 17:51:58 +01:00
|
|
|
For templates to use when announcing, see:
|
|
|
|
https://trac.torproject.org/projects/tor/wiki/org/teams/NetworkTeam/AnnouncementTemplates
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2019-08-21 16:22:37 +02:00
|
|
|
### V. Aftermath and cleanup
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2017-05-26 16:01:04 +02:00
|
|
|
1. If it's a stable release, bump the version number in the
|
|
|
|
`maint-x.y.z` branch to "newversion-dev", and do a `merge -s ours`
|
|
|
|
merge to avoid taking that change into master.
|
2016-03-28 22:07:19 +02:00
|
|
|
|
2018-11-15 03:05:28 +01:00
|
|
|
2. If there is a new `maint-x.y.z` branch, create a Travis CI cron job that
|
|
|
|
builds the release every week. (It's ok to skip the weekly build if the
|
|
|
|
branch was updated in the last 24 hours.)
|
2019-05-31 08:35:19 +02:00
|
|
|
|
2018-11-15 03:05:28 +01:00
|
|
|
3. Forward-port the ChangeLog (and ReleaseNotes if appropriate) to the
|
2018-11-16 17:51:58 +01:00
|
|
|
master branch.
|
2019-05-31 08:35:19 +02:00
|
|
|
|
2018-11-15 03:05:28 +01:00
|
|
|
4. Keep an eye on the blog post, to moderate comments and answer questions.
|