devel-versioning.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sun, 27 Nov 2011 22:49:40 +0200
changeset 1097 6acae85ed54b
parent 1059 d5b0b9cc4b49
child 1098 db420d971363
permissions -rw-r--r--
small fix
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1032
4decc3e00bb6 Fix coding and contents.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1009
diff changeset
     1
.. -*- coding: utf-8 -*-
4decc3e00bb6 Fix coding and contents.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1009
diff changeset
     2
921
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
=================
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
 Version format.
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
=================
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
.. contents::
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
     8
Feature set versioning.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
     9
=======================
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    10
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    11
Feature set versioning pretend to show how serious changes made according to
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    12
feature availability and how compatible these versions.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    13
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    14
Marketing versioning.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    15
=====================
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    16
1007
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    17
Marketing versioning schema used for marketing, advertising, branding purpose.
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    18
It is usually inconsistent and can changed over the time.
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    19
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    20
Examples of marketing version schema:
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    21
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    22
 * Years.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    23
 * Ancient gods.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    24
 * Star/satellite/galactic names.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    25
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    26
Look thread for GDB:
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    27
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    28
  http://www.cygwin.com/ml/gdb/2007-07/msg00061.html
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    29
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    30
There discussed:
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    31
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    32
 * Is it essential to update major version if significant change made for
1097
6acae85ed54b small fix
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1059
diff changeset
    33
   licence? Answer: **NO**!
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    34
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    35
   GPLv3 is a big deal spread out over the whole GNU project, but not a big deal
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    36
   for GDB in particular.
1097
6acae85ed54b small fix
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1059
diff changeset
    37
 * Is it right follow date version schema regardless major changes? Answer:
6acae85ed54b small fix
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1059
diff changeset
    38
   **NO**!
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    39
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    40
   Many OS distribution encode year in versions but versions does not present
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    41
   featureset but package set instead.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    42
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    43
Year as version name.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    44
---------------------
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    45
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    46
If year used as version some people can decide that 2005 is too old and broken
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    47
if it used in 2007. So companies release product by leading year number. So in
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    48
2007 they release 2008 version.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    49
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    50
Version name components.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    51
========================
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    52
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    53
 * major
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    54
 * minor
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    55
 * patch (patchlevel), micro
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    56
 * rev (revision)
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    57
 * build
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    58
 * date
1007
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    59
 * hotfix, fix
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    60
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    61
Version components usually combined in such group::
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    62
1007
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    63
  major.minor.build
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    64
  major.minor.date
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    65
  major.minor.hotfix
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    66
  major.minor.hotfix.build
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    67
  major.minor.rev
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    68
  major.minor.rev.build
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    69
  major.current.age
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    70
1007
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    71
Its conventional to have at least a major and minor number.
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    72
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    73
Prefixing version with a "v" seems to be less common.
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    74
1057
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
    75
Versioning for libraries/modules/components.
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
    76
============================================
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
    77
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    78
Major version component.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    79
------------------------
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    80
1007
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    81
Major number change means that fundamental change made in the architecture of
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    82
the system the new version is incompatible with the old one, upgrade between
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    83
versions is non-trivial, and any dependent of the prior version will require
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    84
code changes to upgrade to the new package.
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    85
1004
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
    86
Major number rare changed (this can take a lot of year).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
    87
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    88
Minor version component.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    89
------------------------
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    90
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    91
Minor number change means that the new version is backward compatible with the
1007
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    92
previous version but has significant enhancements over the previous version
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
    93
(like new functionality or changed UI).
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
    94
1004
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
    95
Functional enhancement releases. Contain new or significantly changed
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
    96
functionality and/or layout.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
    97
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
    98
New releases are usually only published several times a year or less.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
    99
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   100
Revision, micro, bugfix version component.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   101
------------------------------------------
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   102
1007
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
   103
Revision number is updated whenever a bugfix or security patche is applied to
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
   104
the build such that it doesn't bring a compatibility change or introduce newer
f7a62b2027ea Version components usually combined in such group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1004
diff changeset
   105
features.
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   106
1004
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
   107
Patches are released frequently (sometimes daily).
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1003
diff changeset
   108
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   109
Milestone markers.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   110
------------------
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   111
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   112
 * a (alpha) means new development is complete and code checkins are frozen.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   113
   Alpha builds should work well enough to be testable.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   114
 * b (beta) means most severe bugs are fixed and end users can start trying the
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   115
   release.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   116
 * rc (release candidate) are believed to meet all of the criteria for release
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   117
   and can be installed on test instances of production systems.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   118
1057
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   119
Versioning for products.
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   120
========================
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   121
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   122
Versioning for products differ from versioning for libraries.
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   123
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   124
Product is a set of conponents fixed to some versions. Components can be
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   125
switches as written for library versioning:
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   126
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   127
 * Any fix release interchanged.
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   128
 * Any minor release interchanged starting from some minor.
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   129
 * Major release does not interchanged at all.
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   130
1058
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   131
Product update vs upgrade.
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   132
--------------------------
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   133
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   134
Product update involve:
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   135
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   136
 * Replacing product executable files, resources files.
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   137
 * Config files and user data stay unchanged.
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   138
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   139
Product update involve:
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   140
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   141
 * Replacing product executable files, resources files.
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   142
 * Config files and used data require modification and performed by upgrade
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   143
   scripts or manually by user.
cd1062303157 Product update vs upgrade.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1057
diff changeset
   144
947
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   145
Release build version data.
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   146
===========================
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   147
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   148
 * Build number.
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   149
 * Build date.
1057
8e946a8709e0 Versioning for products.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1042
diff changeset
   150
 * VCS revision.
947
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   151
 * Branch-tag used.
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   152
 * Overnight build (Y/N).
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   153
 * QA tested (Y/N).
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   154
 * QA test results (Pass/Fail).
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   155
 * Location of full logs.
1c8a139fc25d Release build version data.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 921
diff changeset
   156
1042
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   157
Stop your VCS hook to update version!
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   158
=====================================
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   159
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   160
Don't update version without human decision.
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   161
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   162
Why do not do this on success build:
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   163
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   164
 * You can have several build machine which may concurrently update version.
1097
6acae85ed54b small fix
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1059
diff changeset
   165
 * There does not exist tools for easy querying for status of build (as ok/fail,
1042
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   166
   build configuration, date, coverage, lint checks, etc).
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   167
 * Some part of development team may not have permission for bumping version and
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   168
   after build they must revert some automatically updated files.
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   169
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   170
Why do not do this from pre-/post-commit hooks:
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   171
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   172
 * Some changes can only partially introduce feature/bugfix.
dd197cbdaf21 Stop your VCS hook to update version!
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1032
diff changeset
   173
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   174
Version ordering formula.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   175
=========================
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   176
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   177
Strongly recommend:
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   178
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   179
 * Numbers are not decimal fractions. They are integers separated by delimiters.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   180
 * Only offically released versions of the program get version numbers.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   181
   Development snapshots don't. Nor do test releases.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   182
 * If the last component is zero, it may be omitted. Do not distinguish version
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   183
   X.Y from version X.Y.0.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   184
 * Avoid using anything other than numbers in version numbers.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   185
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   186
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   187
Debian version ordering formula.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   188
--------------------------------
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   189
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   190
TODO
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   191
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   192
Semver version ordering formula.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   193
--------------------------------
1059
d5b0b9cc4b49 Fix indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1058
diff changeset
   194
::
948
23cb71bb2b5d Versioning formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 947
diff changeset
   195
1059
d5b0b9cc4b49 Fix indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1058
diff changeset
   196
  if (A.major != B.major) return A.major > B.major;
d5b0b9cc4b49 Fix indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1058
diff changeset
   197
  if (A.minor != B.minor) return A.minor > B.minor;
d5b0b9cc4b49 Fix indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1058
diff changeset
   198
  if (A.patch != B.patch) return A.patch > B.patch;
d5b0b9cc4b49 Fix indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1058
diff changeset
   199
  if (A.special == B.special) return 0;
d5b0b9cc4b49 Fix indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1058
diff changeset
   200
  if (A.special == "") return 1;
d5b0b9cc4b49 Fix indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1058
diff changeset
   201
  if (B.special == "") return -1;
d5b0b9cc4b49 Fix indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1058
diff changeset
   202
  return A.special > B.special;
948
23cb71bb2b5d Versioning formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 947
diff changeset
   203
949
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   204
**NOTE** Accoding to this definition 1.0.1rc1 < 1.0.1rc10 < 1.0.1rc2 which is
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   205
non meaningful.
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   206
1003
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   207
Odd/even numbering.
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   208
-------------------
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   209
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   210
Who use:
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   211
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   212
  GLib GTK+ Gimp GNOME Kaffe
4b8b3daac0db Feature set versioning. Marketing versioning. Year as version name. Version name components. Version
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   213
1008
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   214
Forms of compatibility.
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   215
=======================
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   216
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   217
Runtime of binary compatibility mean that binary can be swaped with another
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   218
version without breaking.
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   219
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   220
Compile time or source compatibility mean that supplied header/interfaces allow
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   221
successful compiling/linking.
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   222
1009
be52d3742472 Protocol compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1008
diff changeset
   223
Examples:
1008
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   224
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   225
 * Change type of argument in method to more generic take source compatibility
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   226
   but break binary compatibility.
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   227
 * Adding new mothod to abstract class take binary compatibility but break
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   228
   compilation (unimplement method error).
4ddb673763e6 Forms of compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1007
diff changeset
   229
1009
be52d3742472 Protocol compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1008
diff changeset
   230
File format compatibility.
be52d3742472 Protocol compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1008
diff changeset
   231
be52d3742472 Protocol compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1008
diff changeset
   232
Protocol compatibility.
be52d3742472 Protocol compatibility.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1008
diff changeset
   233
949
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   234
Compatibility formula.
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   235
======================
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   236
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   237
Assume that app linked with new version of lib. Thus::
949
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   238
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   239
  is_compatible_with_old(old, new) {
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   240
    if (old.major != new.major) return 0;
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   241
    if (old.minor > new.minor) return 0;
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   242
    return 1;
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   243
  }
949
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   244
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   245
Assume that app linked with old version of lib. Thus::
949
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   246
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   247
  is_compatible_with_new(old, new) {
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   248
    if (old.major != new.major) return 0;
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   249
    return 1;
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 949
diff changeset
   250
  }
949
57b995de80b5 Compatibility formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 948
diff changeset
   251
921
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   252
Reference.
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   253
==========
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   254
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   255
  https://developer.mozilla.org/en/toolkit_version_format
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   256
                Toolkit version format
948
23cb71bb2b5d Versioning formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 947
diff changeset
   257
  http://apr.apache.org/versioning.html
23cb71bb2b5d Versioning formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 947
diff changeset
   258
                APR's Version Numbering
23cb71bb2b5d Versioning formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 947
diff changeset
   259
  http://semver.org/
23cb71bb2b5d Versioning formula.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 947
diff changeset
   260
                Semantic Versioning
921
c1264ffd1a37 Toolkit version format
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   261