How does the Piwigo release system work? What is the difference between the release 2.7.4 and release 2.8.0?
A release is a snapshot of the code. Release 2.8.1 will never be modified, if needed, version 2.8.2 will be released. The snapshot is taken on a branch: release 2.8.1 is taken on branch 2.8. A branch evolves through improvements and bugs fixing.
A bit old school, but easy to embed in a wiki, so let's draw a ASCII art graph of branches and releases:
+----------------------------+ | trunk (SVN) / master (Git) | +----------------------------+ | | 1.3.0RC1 r158 2003-09-21 | 1.3.0RC1 r181 2003-10-05 | 1.3.0 r205 2003-10-12 | +-------- branch 1.3 ----------+ | | 1.3.1 r379 2004-02-28 | | 1.3.2 r448 2004-06-29 | | 1.3.3 r551 2004-10-03 | 1.4.0RC1 r683 2005-01-09 | | | 1.3.4 r713 2005-01-20 | 1.4.0RC2 r718 2005-01-21 | 1.4.0RC3 r741 2005-02-13 | 1.4.0 r750 2005-03-12 | +-------- branch 1.4 ----------+ | | 1.4.1 r790 2005-05-14 | 1.5.0RC1 r871 2005-09-21 | 1.5.0RC2 r907 2005-10-22 | +-------- branch 1.5 ----------+ | | 1.5.0 r929 2005-11-08 | | 1.5.1 r978 2005-12-10 | | 1.5.2 r989 2005-12-25 | +--------- branch 1.6 ---------+ A | | 1.6.0RC1 r1263 2006-04-24 L | | 1.6.0RC2 r1319 2006-05-23 L | | 1.6.0 r1432 2006-07-04 I | | 1.6.1 r1482 2006-07-18 G | | 1.6.2 r1599 2006-11-09 A | Alligator1 r1709 2007-01-10 T | Alligator2 r1787 2007-02-07 O | 1.7.0RC1 r1825 2007-02-15 R | 1.7.0RC2 r1938 2007-04-06 | +-------- branch 1.7 ----------+ B | | 1.7.0 r1999 2007-05-05 U | | 1.7.1 r2193 2008-01-24 T | | 1.7.2 r2457 2008-07-24 T | Butterfly1 r2492 2008-08-31 | E | Butterfly2 r2522 2008-09-12 | R | | 1.7.3 r2762 2008-09-16 F | 2.0.0RC1 r2615 2008-09-27 L | 2.0.0RC2 r2658 2008-10-04 Y | +-------- branch 2.0 ----------+ C | | 2.0.0RC3 r2732 2008-10-13 O | | 2.0.0RC4 r2866 2008-11-12 L | | 2.0.0 r3153 2009-02-15 I | | 2.0.1 r3210 2009-03-17 B | | 2.0.2 r3276 2009-05-06 R | | 2.0.3 r3526 2009-07-05 I | | 2.0.4 r3868 2009-09-19 | | 2.0.5 r4016 2009-10-11 | | 2.0.6 r4209 2009-11-05 | | 2.0.7 r4533 2009-12-19 | | 2.0.8 r4754 2010-01-26 | | 2.0.9 r5013 2010-03-01 | 2.1.0RC1 r5410 2010-03-27 | | 2.1.0RC2 r5848 2010-04-14 | | 2.1.0RC3 r6015 2010-04-30 | | | 2.0.10 r6117 2010-05-11 | +-------- branch 2.1 ----------+ | | 2.1.0 r6202 2010-05-18 | | 2.1.1 r6347 2010-05-25 | | 2.1.2 r6630 2010-06-29 | | 2.1.3 r6914 2010-09-14 | | 2.1.4 r7506 2010-10-30 | | 2.1.5 r7612 2010-11-04 | 2.2.0RC1 r8811 2011-01-20 | | | 2.1.6 r8857 2011-01-24 | 2.2.0RC2 r9116 2011-02-08 | 2.2.0RC3 r9373 2011-02-25 | 2.2.0RC4 r9618 2011-03-11 | 2.2.0 r9955 2011-04-01 | +-------- branch 2.2 ----------+ | | 2.2.1 r10437 2011-04-17 | 2.3.0beta1 r11186 2011-06-01 | | | 2.2.2 r11198 2011-06-01 | | 2.2.3 r11288 2011-06-10 | 2.3.0beta2 r11591 2011-07-01 | | | 2.2.4 r11755 2011-07-15 | 2.3.0beta3 r11847 2011-07-29 | | | 2.2.5 r12024 2011-08-31 | 2.3.0RC1 r12040 2011-09-02 | 2.3.0RC2 r12134 2011-09-12 | +-------- branch 2.3 ----------+ | | 2.3.0 r12345 2011-10-04 | | 2.3.1 r12582 2011-11-07 | | 2.3.2 r12766 2011-12-19 | 2.4.0beta1 r12829 2012-01-02 | | 2.4.0beta2 r13020 2012-02-02 | | | 2.3.3 r13160 2012-02-14 | 2.4.0RC1 r13480 2012-03-06 | | 2.4.0RC2 r13883 2012-03-06 | | | 2.3.4 r13969 2012-04-08 | 2.4.0RC3 r14584 2012-04-30 | | | 2.3.5 r15795 2012-06-16 | +-------- branch 2.4 ----------+ | | 2.4.0 r15936 2012-06-22 | | 2.4.1 r16335 2012-07-03 | | 2.4.2 r17150 2012-07-26 | | 2.4.3 r17170 2012-07-27 | | 2.4.4 r18273 2012-09-26 | | 2.4.5 r18699 2012-10-19 | 2.5.0beta1 r18732 2012-10-25 | | 2.5.0beta2 r18947 2012-11-06 | | 2.5.0beta3 r19070 2012-11-20 | | | 2.4.6 r19466 2012-10-17 | 2.5.0RC1 r20546 2013-02-04 | | | 2.4.7 r20857 2013-02-19 | 2.5.0RC2 r20986 2013-02-23 | | +-------- branch 2.5 ----------+ | | 2.5.0 r21187 2013-03-04 | | 2.5.1 r22301 2013-04-19 | 2.6.0beta1 r23485 2013-06-23 | | | 2.5.2 r23524 2013-06-24 | | 2.5.3 r25175 2013-10-26 | 2.6.0beta2 r25291 2013-11-01 | | 2.6.0RC1 r25595 2013-11-19 | | 2.6.0RC2 r25932 2013-12-12 +----------------------------+ | | +-------- branch 2.6 ----------+ | | | 2.6.0 r26828 2014-01-17 | | | 2.6.1 r26960 2014-01-24 | | | | 2.5.4 r27935 2014-03-25 | | 2.6.2 r27952 2014-03-26 | | 2.7.0beta1 r28616 2014-06-03 | | | | 2.6.3 r28676 2014-06-11 | | | | | | | | 2.7.0beta2 r28899 2014-07-01 | +----------------------------+ | 2.7.0RC1 r29261 2014-08-24 | | | 2.7.0RC2 r29555 2014-09-16 +----------------------------+ | | | | +-------- branch 2.7 ----------+ | | | | 2.7.0 r29768 2014-09-24 | | | | 2.7.1 r30015 2014-10-12 | | | | 2.7.2 r30569 2014-11-21 | 2.6.4 r30570 2014-11-21 | 2.5.5 r30571 2014-11-21 | | 2.7.3 r30868 2015-01-08 | 2.6.5 r30869 2015-01-08 | 2.5.6 r30870 2015-01-08 | | 2.7.4 r30974 2015-02-16 | | switch to Github 2015-09-05 | 2.8.0RC1 5c57d8 2016-01-14 | 2.8.0RC2 c4b797 2016-02-01 | +-------- branch 2.8 ----------+ | | 2.8.0 507c93 2016-03-08 | | 2.8.1 f0d29d 2016-05-04 | | 2.8.2 374f34 2016-07-08 | | 2.8.3 bbae78 2016-11-22 | 2.9.0beta1 5473f0 2016-12-15 | | | 2.8.4 22ba32 2016-12-27 | | 2.8.5 239cb0 2017-01-01 | | 2.8.6 3a2862 2017-01-27 | 2.9.0beta2 812892 2017-01-28
A release name is always composed of 3 numbers + optional suffix.
x
: the major release numbery
: minor release number, includes new features compared to previous minor releasez
: correction number, includes bugs fixing compared to previous correction releaseWorking with branches let us push correction releases on an old branch even if a new branch has been available. For example, if you find some major/security bugs in release 2.7.4, Piwigo team may release version 2.7.5 even if 2.8.2 has already been out for months.
When preparing a release, it has to be tested and qualified. Piwigo development team works as follows:
Example : 2.7.0beta1 » 2.7.0beta2 » 2.7.0RC1 » 2.7.0RC2 » 2.7.0