Update urls+verbage.
[tor/rransom.git] / doc / spec / version-spec.txt
blobdc2c901ed47f0bbe9e01cac2b0ef6fc4d1425cf3
1 $Id$
3                         HOW TOR VERSION NUMBERS WORK
5 1. The Old Way
7  Before 0.1.0, versions were of the format:
8      MAJOR.MINOR.MICRO(status(PATCHLEVEL))?(-cvs)?
9  where MAJOR, MINOR, MICRO, and PATCHLEVEL are numbers, status is one
10  of "pre" (for an alpha release), "rc" (for a release candidate), or
11  "." for a release.  As a special case, "a.b.c" was equivalent to
12  "a.b.c.0".  We compare the elements in order (major, minor, micro,
13  status, patchlevel, cvs), with "cvs" preceding non-cvs.
15  We would start each development branch with a final version in mind:
16  say, "0.0.8".  Our first pre-release would be "0.0.8pre1", followed by
17  (for example) "0.0.8pre2-cvs", "0.0.8pre2", "0.0.8pre3-cvs",
18  "0.0.8rc1", "0.0.8rc2-cvs", and "0.0.8rc2".  Finally, we'd release
19  0.0.8.  The stable CVS branch would then be versioned "0.0.8.1-cvs",
20  and any eventual bugfix release would be "0.0.8.1".
22 2. The New Way
24  After 0.1.0, versions are of the format:
25     MAJOR.MINOR.MICRO(.PATCHLEVEL)(-status_tag)
26  The stuff in parentheses is optional.  As before, MAJOR, MINOR, MICRO,
27  and PATCHLEVEL are numbers, with an absent number equivalent to 0.
28  All versions should be distinguishable purely by those four
29  numbers. The status tag is purely informational, and lets you know how
30  stable we think the release is: "alpha" is pretty unstable; "rc" is a
31  release candidate; and no tag at all means that we have a final
32  release. If the tag ends with "-cvs" or "-dev", you're looking at a
33  development snapshot that came after a given release.  If we *do*
34  encounter two versions that differ only by status tag, we compare them
35  lexically.
37  Now, we start each development branch with (say) 0.1.1.1-alpha.  The
38  patchlevel increments consistently as the status tag changes, for
39  example, as in: 0.1.1.2-alpha, 0.1.1.3-alpha, 0.1.1.4-rc 0.1.1.5-rc,
40  Eventually, we release 0.1.1.6.  The next patch release is 0.1.1.7.
42  Between these releases, CVS is versioned with a -cvs tag: after
43  0.1.1.1-alpha comes 0.1.1.1-alpha-cvs, and so on. But starting with
44  0.1.2.1-alpha-dev, we switched to SVN and started using the "-dev"
45  suffix instead of the "-cvs" suffix.