develooper Front page | perl.perl5.porters | Postings from October 2016

Re: [perl #129917] perlpolicy does not explain what a "maintenancebranch" is before stipulating restrictions on it

Thread Previous | Thread Next
Sawyer X
October 24, 2016 18:59
Re: [perl #129917] perlpolicy does not explain what a "maintenancebranch" is before stipulating restrictions on it
Message ID:

On 10/22/2016 02:30 AM, James E Keenan via RT wrote:
> On Wed Oct 19 07:52:29 2016, wrote:
>> This is a bug report for perl from,
>> generated with the help of perlbug 1.39 running under perl 5.14.2.
>> -----------------------------------------------------------------
>> [Please describe your issue here]
>> While trying to read up something in the perlpolicy file i stumbled on
>> the heading of "MAINTENANCE BRANCHES" within which the thing i was
>> looking for was mentioned. However at no point before said heading,
>> nor directly after it, is detailed what a maintenance branch actually
>> is. It can be guessed from context, but i think explicit mention would
>> be good.
> I figured I'd suggest some language to address this concern and next figured that it would be a good idea to discuss 'maintenance branch' in relation to releases of 'major versions' of Perl.
> It turns out, however, that we use the term 'major version' in two different ways in our documentation.  (The following is not intended to be exhaustive.)
> 1. In 'pod/perlfaq1.pod', we have:
> #####
> The number after Perl (i.e. the 5 after Perl 5) is the major release of the perl interpreter as well as the version of the language. Each major version has significant differences that earlier versions cannot support.
> The current major release of Perl is Perl 5, first released in 1994.
> ...
> There are really two tracks of perl development: a maintenance version and an experimental version. The maintenance versions are stable, and have an even number as the minor release (i.e. perl5.18.x, where 18 is the minor release). The experimental versions may include features that don't make it into the stable versions, and have an odd number as the minor release (i.e. perl5.19.x, where 19 is the minor release).
> ...
> The number after Perl (i.e. the 5 after Perl 5) is the major release of the perl interpreter as well as the version of the language.
> #####
> So in the above, '5' is a major version, the '24' in '5.24.x' is a minor version.  And 'maintenance version' is any integer(s) in the 'x' position above.
> 2. In pod/perlpolicy.pod, we have:
> #####
> To the best of our ability, we will provide "critical" security patches/releases for any major version of Perl whose 5.x.0 release was within the past three years.
> #####
> In the above, 'major version' seems to mean '5.20', '5.22', '5.24' much more than simply '5'.

We have "major", "minor", and "maintenance" as part of a version number.
That makes sense in versioning context.

We also have "experimental" (or "development") and "stable", which are
branches of releases. "Maintenance releases" are a subset of stable
releases which are still supported despite not being the latest ones.

There is also the "Perl language", to which there is a major version,
"Perl 5". This relates to Perl 1 to 5 and sees 5 as the major release of
"Perl". Perl 6 doesn't come into the picture here, but Perl 5 is the
continuation of 1 to 4, as Perl 6 sees itself as a new language anyway.

So, to try and clarify this, let's look at "5.22.2". Because 22 is an
even number, it's a stable release. The version number 5.22.2 is broken
into the the major version part (5), the minor version part (2), and a
maintenance version part (2).

The only confusing part, IMHO, is that the maintenance release can be 0.
One can argue it makes sense (the first item in the array is zero,
right?) and one can argue that 5.22.1 was really the first maintenance
release of 5.22. This also makes the term "maintenance release" refer to
both the maintenance part of the version (2nd release of 5.22, making it
the 2nd maintenance release of 5.22, making it a "2" at the end of
"5.22.2"). One can also argue that zero makes it the first maintenance
release but without any *maintenance changes* to this release, which is
why it's "0" in 5.22.0. Thus, 5.22.2 is the third maintenance release of
5.22. The first one was the release itself (5.22.0) and the followed
additional maintenance releases (with maintenance changes) to indicate
the needle moved forward, so it's 5.22.1 and then 5.22.2. There's
nothing in computers that says a count can't start at zero, and there's
quite a bit of previous art.

I don't think I made it any clearer. :)

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About