Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-21 Thread Stefano Lattarini
On 02/17/2013 03:57 PM, Stefano Lattarini wrote:
 On 02/13/2013 07:39 PM, Stefano Lattarini wrote:

 Reference:
 http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13578

 OK, so far I've seen only positive feedback about this proposal.  There
 are still some unresolved issues about how to handle beta releases; but
 the related proposals can be seen as a refinement of my scheme, not as
 something incompatible or in competition with it.  So I see no reason
 to hold back the implementation of my proposal on their account: we can
 implement those refinements later, once some consensus is reached and
 the details are worked out.

 So, if I see no further objections, I'm going ahead with my proposal in
 a few days.

 Not yet; we first need a preparatory patch adjusting NEWS and HACKING (as
 well as few miscellaneous comments in tests and scripts).  Then we can
 finally proceed with the re-shuffling of the Git repository -- which I
 guess will also have to be announced in autotools-announce at least, as
 well as reported as a news on Savannah.
 
 So here is my attempt; OK to push to branch-1.13.2?  I will proceed in a
 couple of days if there is no objection.
 
Pushed now.

Regards,
  Stefano



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-21 Thread Stefano Lattarini
On 02/21/2013 03:32 PM, Stefano Lattarini wrote:
 Not yet; we first need a preparatory patch adjusting NEWS and HACKING (as
 well as few miscellaneous comments in tests and scripts).  Then we can
 finally proceed with the re-shuffling of the Git repository -- which I
 guess will also have to be announced in autotools-announce at least, as
 well as reported as a news on Savannah.

 So here is my attempt; OK to push to branch-1.13.2?  I will proceed in a
 couple of days if there is no objection.

 Pushed now.
 
And here is the follow-up to fix some left-over references to the older
versioning scheme in 'maint' (they were not present in 'branch-1.13.2').
Already pushed to 'maint'.

In a couple of days, I will proceed with this branch moving:

   * branch-1.13.2 - maint
   * maint - master
   * master - next

Regards,
  Stefano

 8  8  8  8  8  8  8  8  8 

From d5f83b89cc4d2da9078669018877b3bac5c2fadc Mon Sep 17 00:00:00 2001
Message-Id: 
d5f83b89cc4d2da9078669018877b3bac5c2fadc.1361458350.git.stefano.lattar...@gmail.com
From: Stefano Lattarini stefano.lattar...@gmail.com
Date: Thu, 21 Feb 2013 15:52:22 +0100
Subject: [PATCH] maint: more adjustments to the new versioning scheme

This is a follow-up to commit 'v1.13.1b-11-g97aaf12'.

* automake.in: Adjust a comment.
* PLANS: Adjust several files in here.

Signed-off-by: Stefano Lattarini stefano.lattar...@gmail.com
---
 PLANS/obsolete-removed/am-prog-mkdir-p.txt |  8 +++-
 PLANS/obsolete-removed/configure.in.txt| 10 +-
 PLANS/rm-f-without-args.txt| 10 +-
 PLANS/subdir-objects.txt   | 10 +-
 PLANS/texi/drop-split-info-files.txt   |  6 +++---
 automake.in|  2 +-
 6 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/PLANS/obsolete-removed/am-prog-mkdir-p.txt 
b/PLANS/obsolete-removed/am-prog-mkdir-p.txt
index d5b7695..20d5cf5 100644
--- a/PLANS/obsolete-removed/am-prog-mkdir-p.txt
+++ b/PLANS/obsolete-removed/am-prog-mkdir-p.txt
@@ -1,6 +1,4 @@
-The macro AM_PROG_MKDIR_P is no longer going to be removed in Automake 1.14
-(and in fact, any plan to remove it evenatually has been dropped as well).
-
+The macro AM_PROG_MKDIR_P is no longer going to be removed from Automake.
 Let's see a bit of history to understand why.

 I had already scheduled the removal of the long-deprecated AM_PROG_MKDR_P
@@ -46,14 +44,14 @@ out, and we lose.  That already happened in practice:
 http://lists.gnu.org/archive/html/bug-grep/2013-01/msg3.html

 Moreover, while I might see it as not unreasonable to ask a developer
-using Automake 1.14 to also update Gettext to 1.18.2, that would not
+using Automake 2.0 to also update Gettext to 1.18.2, that would not
 be enough; in order for gettext to use the correct data files, that
 developer would have to update his configure.ac to read:

 AM_GNU_GETTEXT_VERSION([0.18.2])

 thus requiring *all* of his co-developers to install Gettext 1.18.2,
-even if they are still using, say, Automake 1.13.  Bad.
+even if they are still using, say, Automake 1.13 or 1.14.  Bad.

 So I decided to re-instate this macro as a simple alias for AC_PROG_MKDIR_P
 (plus a non-fatal runtime warning in the 'obsolete' category), and drop
diff --git a/PLANS/obsolete-removed/configure.in.txt 
b/PLANS/obsolete-removed/configure.in.txt
index baed853..180f92c 100644
--- a/PLANS/obsolete-removed/configure.in.txt
+++ b/PLANS/obsolete-removed/configure.in.txt
@@ -13,16 +13,16 @@ present in the development version of autoconf so far 
(scheduled to
 become Autoconf 2.70).  So ...


-For Automake 1.14
--
+For Automake 2.0
+

 ... we have decided to wait until 2.70 is out before really removing
 'configure.in' support.  Since we plan to require Autoconf 2.70 in
-Automake 1.14 (so that we can remove the hacky code emulating
+Automake 2.0 (so that we can remove the hacky code emulating
 AC_CONFIG_MACRO_DIRS for older autoconf versions), we are quite sure
 that Autoconf will actually have started deprecating 'configure.in'
-by the time Automake 1.14 is released.
+by the time Automake 2.0 is released.

 Note that the removal of 'configure.in' has already been implemented
-in our master branch (from where the 1.14 release will be finally
+in our 'next' branch (from where the 2.0 release will be finally
 cut); see commits 'v1.13-17-gbff57c8' and 'v1.13-21-g7626e63'.
diff --git a/PLANS/rm-f-without-args.txt b/PLANS/rm-f-without-args.txt
index 5362f98..918e049 100644
--- a/PLANS/rm-f-without-args.txt
+++ b/PLANS/rm-f-without-args.txt
@@ -21,20 +21,20 @@ the no-args rm -f usage is supported on the system 
configure is
 being run on; complain loudly if this is not the case, and tell the
 user to report the situation to us.

-For Automake 1.14
--
+For Automake 2.0
+

 Make any failure in the configure-time probe check introduced by the
 previous point fatal; and in case 

Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-17 Thread Stefano Lattarini
On 02/13/2013 07:39 PM, Stefano Lattarini wrote:

 Reference:
 http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13578

 OK, so far I've seen only positive feedback about this proposal.  There
 are still some unresolved issues about how to handle beta releases; but
 the related proposals can be seen as a refinement of my scheme, not as
 something incompatible or in competition with it.  So I see no reason
 to hold back the implementation of my proposal on their account: we can
 implement those refinements later, once some consensus is reached and
 the details are worked out.
 
 So, if I see no further objections, I'm going ahead with my proposal in
 a few days.
 
Not yet; we first need a preparatory patch adjusting NEWS and HACKING (as
well as few miscellaneous comments in tests and scripts).  Then we can
finally proceed with the re-shuffling of the Git repository -- which I
guess will also have to be announced in autotools-announce at least, as
well as reported as a news on Savannah.

So here is my attempt; OK to push to branch-1.13.2?  I will proceed in a
couple of days if there is no objection.

Thanks,
  Stefano

 8  8  8  8  8  8  8  8 


From 97aaf121e92767dc06385d020dd30cdfaa86126f Mon Sep 17 00:00:00 2001
Message-Id: 
97aaf121e92767dc06385d020dd30cdfaa86126f.136789.git.stefano.lattar...@gmail.com
From: Stefano Lattarini stefano.lattar...@gmail.com
Date: Sun, 17 Feb 2013 10:25:29 +0100
Subject: [PATCH] describe new versioning and branching scheme, and adjust to it

See discussion about automake bug#13578 for more details and background.

Basically, for the versioning scheme:

  - micro versions only for bug and regression fixing;
  - minor versions for new backward-compatible features, and new
non-fatal deprecations;
  - major versions for backward-incompatibilities, complex new
features, and major refactoring.

And for the git branching scheme:

  + branch 'next' is for the upcoming major version;
  + branch 'master' is now for the upcoming minor version;
  + branch 'maint' is for the upcoming micro (bug-fixing) version;
  + the merging hierarchy is: 'maint' - 'master' - 'next'.

* HACKING (Automake versioning and compatibility scheme): New.
(Working with git): Adjust.
* NEWS: Update and fix.
* aclocal.in: Adjust some FIXME messages.
* automake.in: Likewise.
* m4/mkdirp.m4: Likewise.
* t/aclocal-acdir.sh: Likewise.
* t/aclocal-macrodir.tap: Likewise.
* t/aclocal-macrodirs.tap: Likewise.
* lib/Automake/Options.pm: Likewise.
* m4/internal/ac-config-macro-dirs.m4: Likewise.

Signed-off-by: Stefano Lattarini stefano.lattar...@gmail.com
---
 HACKING | 100 +---
 NEWS|  59 +
 aclocal.in  |   8 +--
 automake.in |  12 +++--
 lib/Automake/Options.pm |   4 +-
 m4/internal/ac-config-macro-dirs.m4 |   2 +-
 m4/mkdirp.m4|   3 +-
 t/aclocal-acdir.sh  |   2 +-
 t/aclocal-macrodir.tap  |   2 +-
 t/aclocal-macrodirs.tap |   2 +-
 10 files changed, 150 insertions(+), 44 deletions(-)

diff --git a/HACKING b/HACKING
index c70143e..604bf67 100644
--- a/HACKING
+++ b/HACKING
@@ -93,6 +93,48 @@
   code without.

 
+= Automake versioning and compatibility scheme
+
+* There are three kinds of automake releases:
+
+- new major releases (e.g., 2.0, 5.0)
+- new minor releases (e.g., 1.14, 2.1)
+- micro a.k.a. bug-fixing releases (e.g., 1.13.2, 2.0.1, 3.5.17).
+
+  A new major release should have the major version number bumped, and
+  the minor and micro version numbers reset to zero.  A new minor release
+  should have the major version number unchanged, the minor version number
+  bumped, and the micro version number reset to zero.  Finally, a new
+  micro version should have the major and minor version numbers unchanged,
+  and the micro version number bumped.
+
+  For example, the first minor version after 1.13.2 will be 1.14; the
+  first bug-fixing version after 1.14 that will be 1.14.1; the first
+  new major version after all such releases will be 2.0; the first
+  bug-fixing version after 2.0 will be 2.0.1; and a further bug-fixing
+  version after 2.0.1 will be 2.0.2.
+
+* Micro releases should be just bug-fixing releases; no new features
+  should be added, and ideally, only trivial bugs, recent regressions,
+  or documentation issues should be addressed by them.
+
+* Minor releases can introduce new safe features, do non-trivial
+  but mostly safe code clean-ups, and even add new runtime warnings
+  (rigorously non-fatal); but they shouldn't include any backward
+  incompatible change, nor contain any potentially destabilizing
+  refactoring or sweeping change, nor introduce new features whose
+  implementation might be liable to cause bugs or 

Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-13 Thread Stefano Lattarini
Hi Diego.

On 02/12/2013 06:50 PM, Diego Elio Pettenò wrote:
 On 12/02/2013 17:44, Stefano Lattarini wrote:
 Ah, ok, so in the end you already agree that this is a documentation
 issue rather than a versioning one.  Please correct me if I'm wrong!
 
 I guess it's a matter of perception.
 
 I honestly don't see the point of beta software if nobody's using it, as
 it would just actually be an alpha for the beta (.0/.1 releases) which
 then becomes stable (.2+ — sometimes).
 
 If we go with a new major version we could have:
 
 2.0.x - new major, testing branch (let's not call it beta!), all fine
 but it throws a huge warning at runtime that the branch is not finalized
 yet and thus that it should not be used for distributed software
 
 2.1.x - new major, stable branch, micro versions for bugfix only
 
 2.2.x - new major, new features branch, introduces deprecation warnings
 for features leaving in 3.0, possibly some opt-in versions of features
 becoming standard in 3.0.
 
 _If needed_ only:
 
 2.90.x - experimental branch for the upcoming 3.0 testing branch
 
The scheme you are proposing seems sensible to me.  Anyway, it is an
*extension* to my new proposed versioning/branching scheme, so we
don't have to decide on its adoption right away -- we can switch to
my proposed scheme first, and then refine/enhance it with your
proposal, if nobody objects.  OK?

Thanks,
  Stefano



bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Stefano Lattarini
Hi Miles.

On 02/12/2013 12:50 AM, Miles Bader wrote:
 Stefano Lattarini stefano.lattar...@gmail.com writes:
 But what if we want to have multiple betas for, say, Automake 1.14?  Today,
 we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the scheme
 you are proposing?
 
 There's always 1.14.0.1, ...

Yuck; the new versioning scheme is done exactly to avoid that kind
of overly long version numbers -- otherwise, we could just have
1.13.1.1 as bug-fixing release, 1.13.2 as new minor release, and
1.14 as new major release.  But if that leading 1 is going to
remain unchanged anyway, what is the point of keeping it?  It's
just visual noise IMO.

(In addition, the current version-checking code in Automake only
grasps version numbers with at most three numbers).

 Or the widely used in FOSS 1.13.99...
 [sometimes they start at 90, to leave room for updates,

This might work.  But see below.

 but I suppose you could always just use .99.1, .99.2, ...]

(No, because, as said above, I don't want to have version numbers
with four or more components)

Anyway, before changing the current naming scheme for beta versions,
we'd need some numbers about which the most widespread naming
schemes are, and weight their advantages and disadvantages w.r.t.
our workflow; we don't want to trade the current naming scheme
for another that is only marginally more popular, or for a one that
will give use a new and bigger set of problems down the road.

Thanks,
  Stefano





bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Miles Bader
2013/2/12 Stefano Lattarini stefano.lattar...@gmail.com:
 Mostly fair points; but the biggest issue with this proposal (not
 sure why I didn't think of it before, sorry) is that it is not at
 all clear that a version like 1.13.0.1 is supposed to be a beta
 release.  People will easily mistake it for a stable release.

How about this:  pick whatever scheme you like for other reasons, and
then add -beta to those version numbers.  In other words, a purely
informational suffix, which is not actually necessary for version
sorting...

(note that the a, b, etc, suffixes have the same issue)

-miles

-- 
Cat is power.  Cat is peace.





Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Stefano Lattarini
Hi Miles.

On 02/12/2013 12:50 AM, Miles Bader wrote:
 Stefano Lattarini stefano.lattar...@gmail.com writes:
 But what if we want to have multiple betas for, say, Automake 1.14?  Today,
 we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the scheme
 you are proposing?
 
 There's always 1.14.0.1, ...

Yuck; the new versioning scheme is done exactly to avoid that kind
of overly long version numbers -- otherwise, we could just have
1.13.1.1 as bug-fixing release, 1.13.2 as new minor release, and
1.14 as new major release.  But if that leading 1 is going to
remain unchanged anyway, what is the point of keeping it?  It's
just visual noise IMO.

(In addition, the current version-checking code in Automake only
grasps version numbers with at most three numbers).

 Or the widely used in FOSS 1.13.99...
 [sometimes they start at 90, to leave room for updates,

This might work.  But see below.

 but I suppose you could always just use .99.1, .99.2, ...]

(No, because, as said above, I don't want to have version numbers
with four or more components)

Anyway, before changing the current naming scheme for beta versions,
we'd need some numbers about which the most widespread naming
schemes are, and weight their advantages and disadvantages w.r.t.
our workflow; we don't want to trade the current naming scheme
for another that is only marginally more popular, or for a one that
will give use a new and bigger set of problems down the road.

Thanks,
  Stefano



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Stefano Lattarini
On 02/11/2013 04:00 PM, Diego Elio Pettenò wrote:
 On 11/02/2013 15:54, Stefano Lattarini wrote:
 But what if we want to have multiple betas for, say, Automake 1.14?  Today,
 we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the scheme
 you are proposing?
 
 Given that 1.12.0 was not really final release,

Why not?

 and 1.13.0 _and_ .1 were not really final releases,

This is true, but is only due to the fact that I released them with
too much haste, without giving time for proper testing.  IOW, this
debacle has been a fault of mine, not of the naming scheme.

 I would suggest calling the first beta as 1.14.0 with the big fat
 warning,

I don't see any need for this; everyone knows that a new major release
is more likely to contain bugs and rough edges.  (OTOH, this is not
excuse to be sloppy and hastily in the release process as I've been
for 1.13; but avoiding repeating the mistake in the future will only
require more care and attention from the maintainer, and not a change
of policy).

 then everybody's satisfied (no missing features, for instance),
 it rolls as 1.14.4 (say) really final release.

 This should be more or less equivalent to Apache's versioning,

Any link about this?  The info I found on Google doesn't seem very
helpful nor relevant.

 and leads to decency, I'd say.
 

Thanks,
  Stefano



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Miles Bader
2013/2/12 Stefano Lattarini stefano.lattar...@gmail.com:
 But what if we want to have multiple betas for, say, Automake 1.14?  Today,
 we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the scheme
 you are proposing?

 There's always 1.14.0.1, ...

 Yuck; the new versioning scheme is done exactly to avoid that kind
 of overly long version numbers

Well, I agree in general that too many components is yucky, but keep
in mind that these _aren't releases_, so assigning them awkward
version numbers doesn't really seem all that annoying.  These really
aren't part of the historical record.  The existing naming scheme for
betas does the same thing (uses weird version numbers), but is
problematic because it's not mechanically consistent with ordinary
version numbers (and so screws up cases such as packaging software).

I do agree that removing the leading 1. might be a good idea if it's
meaningless in practice.  Linux's similar action was good.

-miles

--
Cat is power.  Cat is peace.



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Stefano Lattarini
On 02/12/2013 09:25 AM, Miles Bader wrote:
 2013/2/12 Stefano Lattarini stefano.lattar...@gmail.com:
 But what if we want to have multiple betas for, say, Automake 1.14?  Today,
 we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the scheme
 you are proposing?

 There's always 1.14.0.1, ...

 Yuck; the new versioning scheme is done exactly to avoid that kind
 of overly long version numbers
 
 Well, I agree in general that too many components is yucky, but keep
 in mind that these _aren't releases_, so assigning them awkward
 version numbers doesn't really seem all that annoying.  These really
 aren't part of the historical record.  The existing naming scheme for
 betas does the same thing (uses weird version numbers), but is
 problematic because it's not mechanically consistent with ordinary
 version numbers (and so screws up cases such as packaging software).

Mostly fair points; but the biggest issue with this proposal (not
sure why I didn't think of it before, sorry) is that it is not at
all clear that a version like 1.13.0.1 is supposed to be a beta
release.  People will easily mistake it for a stable release.  OK,
we can add warnings and info and whatnot in the manual and homepage
of automake about our unusual versioning scheme, but how many people
will read them?  And in the end, even those who do will likely be
just annoyed by the fact that we are trying to be clever and invent
a new versioining scheme incompatible with every other existing one.

No, if we want to change the versioning scheme for beta and rc
versions, we want the new scheme to be already used and well known.

 I do agree that removing the leading 1. might be a good idea if it's
 meaningless in practice.  Linux's similar action was good.
 
 -miles
 
 --
 Cat is power.  Cat is peace.

Thanks,
  Stefano



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Miles Bader
2013/2/12 Stefano Lattarini stefano.lattar...@gmail.com:
 Mostly fair points; but the biggest issue with this proposal (not
 sure why I didn't think of it before, sorry) is that it is not at
 all clear that a version like 1.13.0.1 is supposed to be a beta
 release.  People will easily mistake it for a stable release.

How about this:  pick whatever scheme you like for other reasons, and
then add -beta to those version numbers.  In other words, a purely
informational suffix, which is not actually necessary for version
sorting...

(note that the a, b, etc, suffixes have the same issue)

-miles

-- 
Cat is power.  Cat is peace.



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Vincent Torri
On Tue, Feb 12, 2013 at 9:38 AM, Stefano Lattarini
stefano.lattar...@gmail.com wrote:
 On 02/12/2013 09:25 AM, Miles Bader wrote:
 2013/2/12 Stefano Lattarini stefano.lattar...@gmail.com:
 But what if we want to have multiple betas for, say, Automake 1.14?  
 Today,
 we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the 
 scheme
 you are proposing?

 There's always 1.14.0.1, ...

 Yuck; the new versioning scheme is done exactly to avoid that kind
 of overly long version numbers

 Well, I agree in general that too many components is yucky, but keep
 in mind that these _aren't releases_, so assigning them awkward
 version numbers doesn't really seem all that annoying.  These really
 aren't part of the historical record.  The existing naming scheme for
 betas does the same thing (uses weird version numbers), but is
 problematic because it's not mechanically consistent with ordinary
 version numbers (and so screws up cases such as packaging software).

 Mostly fair points; but the biggest issue with this proposal (not
 sure why I didn't think of it before, sorry) is that it is not at
 all clear that a version like 1.13.0.1 is supposed to be a beta
 release.  People will easily mistake it for a stable release.  OK,
 we can add warnings and info and whatnot in the manual and homepage
 of automake about our unusual versioning scheme, but how many people
 will read them?  And in the end, even those who do will likely be
 just annoyed by the fact that we are trying to be clever and invent
 a new versioining scheme incompatible with every other existing one.

 No, if we want to change the versioning scheme for beta and rc
 versions, we want the new scheme to be already used and well known.

in our project, we append _beta and _rc (or _rc1, _rc2 etc...) for
beta and release candidate. It's sufficiently explicit. For example,
1.14.0_beta

Vincent Torri



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Nate Bargmann
* On 2013 12 Feb 03:08 -0600, Vincent Torri wrote:
 in our project, we append _beta and _rc (or _rc1, _rc2 etc...) for
 beta and release candidate. It's sufficiently explicit. For example,
 1.14.0_beta

I was advised by a Debian maintainer to use tilde '~' as the separator
as any text following it will be considered older.  For example, in
our project 'Hamlib-3.0~git' is older than 'Hamlib-3.0' will be once
released.  A hyphen or underscore trips this logic up, as I understand
it, for both .deb and .rpm formats.  While this is good practice from a
package mainter's POV, it has not been a problem as we ask that such
code not be packaged by distributions.  The extra text is a human
convenience add-on.

Also, the practice of using the prior released version number as the
base for the next version's beta is a bit confusing to me.  The Linux
kernel model of the *next* planned release tagged with an additional
rc1, beta, git, what-have-you always seemed more logical to me, at
least.  Our project adopted this approach of versioning of base +1
(always arbitrary) for the next planned released so that beta testers
and developers are well aware of the next planned version and that
additional characters following a '~' means a yet to be released version.

In other words, 1.14~git, 1.14~beta, 1.14~rc1, make more sense to me for
the forthcoming 1.14 release than using 1.13+whatever which magically
is promoted to 1.14 upon release.  JMHO.

- Nate

-- 

The optimist proclaims that we live in the best of all
possible worlds.  The pessimist fears this is true.

Ham radio, Linux, bikes, and more: http://www.n0nb.us



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Diego Elio Pettenò
On 12/02/2013 09:26, Stefano Lattarini wrote:
 Given that 1.12.0 was not really final release,

 Why not?

AM_PROG_MKDIR_P.

 This is true, but is only due to the fact that I released them with
 too much haste, without giving time for proper testing.  IOW, this
 debacle has been a fault of mine, not of the naming scheme.

True, but it shows a pattern: most people (even developers who get
involved in the process, such as Paolo) do not even look at the beta
versions..

 I don't see any need for this; everyone knows that a new major release
 is more likely to contain bugs and rough edges.  (OTOH, this is not
 excuse to be sloppy and hastily in the release process as I've been
 for 1.13; but avoiding repeating the mistake in the future will only
 require more care and attention from the maintainer, and not a change
 of policy).

True, but a new beta also is also more likely to contain bugs and rough
edges... so it's basically the same thing, thus why I'm saying that it
should just be the same. Put out the new major at not stable yet, try
it out all around, then make a release to call it stable.

 Any link about this?  The info I found on Google doesn't seem very
 helpful nor relevant.

I'm afraid I don't have anything that Google wouldn't have. But at least
for 2.2, it was declared stable much later than .0 if I'm not
mistaken. Basically, it would be like making policy that the new major
branch is not stable until we say it is.. which is really what we need.

-- 
Diego Elio Pettenò — Flameeyes
flamee...@flameeyes.eu — http://blog.flameeyes.eu/



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Miles Bader
Nate Bargmann n...@n0nb.us writes:
 I was advised by a Debian maintainer to use tilde '~' as the
 separator as any text following it will be considered older.  For
 example, in our project 'Hamlib-3.0~git' is older than
 'Hamlib-3.0' will be once released.  A hyphen or underscore trips
 this logic up, as I understand it, for both .deb and .rpm formats.

This is a Debian-specific syntax, for use in Debian package version
numbers.  It's a handy way for the Debian maintainer to directly
represent various existing package version naming schemes with only
mechanical changes (typical, replacing a _ or - with ~), but I
don't think there's any intent that upstreams should adopt this syntax
directly (though I suppose it doesn't particularly hurt if they
do...).

-miles

-- 
Abstainer, n. A weak person who yields to the temptation of denying himself a
pleasure. A total abstainer is one who abstains from everything but
abstention, and especially from inactivity in the affairs of others.



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Daniel Herring
I like the -alpha/-beta/-rcN markings.  As someone who often tracks 
cutting-edge stuff, it is nice to have a clear indicator of how stable the 
author things something is.  This info helps the user do a quick 
cost/benefit estimate when deciding what version to use today.


- Daniel



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Stefano Lattarini
On 02/12/2013 04:15 PM, Diego Elio Pettenò wrote:
 On 12/02/2013 09:26, Stefano Lattarini wrote:
 Given that 1.12.0 was not really final release,

 Why not?
 
 AM_PROG_MKDIR_P.

Ah, right.  I had forgot about that (selective memory? A dangerous
thing).

 This is true, but is only due to the fact that I released them with
 too much haste, without giving time for proper testing.  IOW, this
 debacle has been a fault of mine, not of the naming scheme.
 
 True, but it shows a pattern: most people (even developers who get
 involved in the process, such as Paolo) do not even look at the beta
 versions..

That is not something automake can do anything about.  Releasing
beta versions whose version numbers suggests they are actually
stable versions is a solution worse than the problem.  But you might
correctly point out that, due to lack of proper testing, this is
already what we are doing right now (albeit not by choice); so the
issue becomes at this point a documentation issue (that is, we should
find a way to inform the users that early stable versions of new major
releases might turn out to be lamentably unstable in practice, if
nobody has given the betas proper testing).  See again below.

 I don't see any need for this; everyone knows that a new major release
 is more likely to contain bugs and rough edges.  (OTOH, this is not
 excuse to be sloppy and hastily in the release process as I've been
 for 1.13; but avoiding repeating the mistake in the future will only
 require more care and attention from the maintainer, and not a change
 of policy).
 
 True, but a new beta also is also more likely to contain bugs and rough
 edges... so it's basically the same thing, thus why I'm saying that it
 should just be the same. Put out the new major at not stable yet, try
 it out all around, then make a release to call it stable.

This sounds sensible, but I think it should be done in addition to the
usual release of classic beta versions (with the hope that someone
will get to testing them eventually).  And if we agree on this approach,
the only required change would be a new section about this versioning
and stability issues in the Automake manual (and/or in the Autotools
Mythbuster guide).  As usual, patches are welcome (this is not really
my itch).

 Any link about this?  The info I found on Google doesn't seem very
 helpful nor relevant.
 
 I'm afraid I don't have anything that Google wouldn't have. But at least
 for 2.2, it was declared stable much later than .0 if I'm not
 mistaken.

That happened with Python as well, and I guess with many other softwares
who did a major version bump with non-trivial backward incompatibilities.

 Basically, it would be like making policy that the new major
 branch is not stable until we say it is.. which is really what we need.
 
Ah, ok, so in the end you already agree that this is a documentation
issue rather than a versioning one.  Please correct me if I'm wrong!

Thanks,
  Stefano



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-12 Thread Diego Elio Pettenò
On 12/02/2013 17:44, Stefano Lattarini wrote:
 Ah, ok, so in the end you already agree that this is a documentation
 issue rather than a versioning one.  Please correct me if I'm wrong!

I guess it's a matter of perception.

I honestly don't see the point of beta software if nobody's using it, as
it would just actually be an alpha for the beta (.0/.1 releases) which
then becomes stable (.2+ — sometimes).

If we go with a new major version we could have:

2.0.x - new major, testing branch (let's not call it beta!), all fine
but it throws a huge warning at runtime that the branch is not finalized
yet and thus that it should not be used for distributed software

2.1.x - new major, stable branch, micro versions for bugfix only

2.2.x - new major, new features branch, introduces deprecation warnings
for features leaving in 3.0, possibly some opt-in versions of features
becoming standard in 3.0.

_If needed_ only:

2.90.x - experimental branch for the upcoming 3.0 testing branch

-- 
Diego Elio Pettenò — Flameeyes
flamee...@flameeyes.eu — http://blog.flameeyes.eu/



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-11 Thread Stefano Lattarini
Hi Diego, Jack, sorry for the late reply.

On 02/01/2013 06:47 AM, Jack Kelly wrote:
 Diego Elio Pettenò flamee...@flameeyes.eu writes:
 On 31/01/2013 20:58, Jack Kelly wrote:
 IMHO, that seems like a great way to cause trouble for unsuspecting
 users. (Anyone remember KDE4.0?) Can you expand on why you think it's a
 good plan?

 Because unlike KDE, automake can put a big fat warning in the generated
 configure that says You're using a version unsuitable for production,
 and then people would understand it much better.
 
 Or at automake invocation time?
 
 KDE 4.0 was a screwup because there was no big fat warning, and users
 insisted to have it. No user _asks_ for automake.

 Is there a system like X.beta1, X.beta2, ..., X.0 that is going to fit
 the ordering system for most package managers? Bonus points if it works
 in asciibetical order, too.

 Good luck finding one. Gentoo would be fine with X.Y_betaZ — but I
 honestly dislike X.Yb because that kind of stuff is usually _after_ X.Y
 for almost everything but autotools..
 
 Fair points. +1 to calling the betas X.0.
 
But what if we want to have multiple betas for, say, Automake 1.14?  Today,
we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the scheme
you are proposing?

As for the naming scheme for alpha/beta versions in Automake: I agree it is
suboptimal and a little confusing, its roots being likely based in the messy
1.4 - 1.6 transition.  So far, it hasn't yet grated on me enough to motivate
me to try to improve it [1]; but if anyone wants to take a shot at that, be
my guest! (that will probably require some mail archive digging and git blame
invocations to see who introduced what for which reason).

  [1] In a way that is enough backward compatible, I mean.

Regards,
  Stefano





Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-11 Thread Diego Elio Pettenò
On 11/02/2013 15:54, Stefano Lattarini wrote:
 But what if we want to have multiple betas for, say, Automake 1.14?  Today,
 we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the scheme
 you are proposing?

Given that 1.12.0 was not really final release, and 1.13.0 _and_ .1
were not really final releases, I would suggest calling the first beta
as 1.14.0 with the big fat warning, then everybody's satisfied (no
missing features, for instance), it rolls as 1.14.4 (say) really final
release.

This should be more or less equivalent to Apache's versioning, and leads
to decency, I'd say.

-- 
Diego Elio Pettenò — Flameeyes
flamee...@flameeyes.eu — http://blog.flameeyes.eu/



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-02-11 Thread Miles Bader
Stefano Lattarini stefano.lattar...@gmail.com writes:
 But what if we want to have multiple betas for, say, Automake 1.14?  Today,
 we can just have 1.13b, 1.13d, 1.13f, ...; how can we do so with the scheme
 you are proposing?

There's always 1.14.0.1, ...

Or the widely used in FOSS 1.13.99...
[sometimes they start at 90, to leave room for updates, but I suppose
you could always just use .99.1, .99.2, ...]

-miles

-- 
We are all lying in the gutter, but some of us are looking at the stars.
-Oscar Wilde



bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Diego Elio Pettenò
On 31/01/2013 13:47, Stefano Lattarini wrote:
 But there is already such a discussion going on; see:
 
   http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13578
 
 Or did you mean something else?

I would expect a more ... visible discussion. Honestly bugs are all nice
and shiny but I don't expect most of the automake consumers out there to
even know where to find them (debbugs is handy with the email interface,
but it's not exactly the nicest way to find and follow bugs, IMHO).

I'll probably write a blog post myself about it to get some attention to it.

 I think that, with the new freedom the minor versions would give us to
 implement new features and do code optimization and refactoring, we could
 aim to have a new major version every 18 or 24 months (this too should be
 registered in HACKING).

Okay that sounds reasonable. I would be more toward 24 than 18 — maybe
going for 18 to the next beta-quality automake, 24 to the final
release. Speaking of which I would suggest that we call X.0 the betas,
and suggest general usage only when X.1 is out...

 Since the scripts, the data directories and the manual pages are already
 versioned (with both major and minor version), adding support for versioned
 info pages might be enough to solve this issue.

To a point. While it allows the multiple installation it does not help
to solve the difference in multiple-automake changing between
distributions. My hope would be for something like that to get rid of
most of the try-to-find-automake-version-X logic in autogen.sh scripts
(the moment when autogen.sh scripts can finally DIAF, I'll rejoice).

 Then, we might even add a
 new option to Automake's configure to ensure only versioned stuff is
 installed (that is, no 'bin/automake' link to 'bin/automake-1.13', no
 'man1/automake.1' manapge containing .so man1/automake-1.13.1, etc),
 if that can make packagers' life even simpler.

Sounds like a good idea...

 Isn't it too late to check for that at configure runtime?  You probably
 want some m4 macro that let you discriminate between different versions
 at automake/autoconf runtime, right?  (Your further elaboration below
 seem to imply that the answer to this question is yes).

Sorry I wasn't clear enough, I don't expect it to be found at
./configure time, but rather at autoconf time. So that one can decide
whether they want to use silent-rules, dist-xz, serial-tests and so on..

Don't assume that it's easy to install a newer automake on older systems
to work during development, because as I noted above, every distribution
has its way to wrap automake, and none that I know allows you a decent
way to integrate an user-provided version.

-- 
Diego Elio Pettenò — Flameeyes
flamee...@flameeyes.eu — http://blog.flameeyes.eu/





bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Diego Elio Pettenò
On 28/01/2013 20:48, Stefano Lattarini wrote:
 Feedback, opinions, objections?

First of all, I would like to hope that this is not going to be rushed
through — it's an important and big change and I think having discussion
about it with others might be a better idea.

One thing that worries me at first thought is how often do you expect a
new major version to be out; once an year? twice an year? once every two
years? That rate is going to be the one thing that makes or breaks it
from an automake consumer prospective I think.

Another thing that I think is important, that ties into the versioning
scheme even though it's not really part of it would be to make two
things cleaner:

 - what in Gentoo we call slotting: i.e. the ability to install
multiple automake versions in parallel; we have our own wrapper scripts
maintained by Mike Frysinger, I think they were originally imported from
Mandriva; I'm pretty sure other distributions have other similar
wrappers... if instead of everybody having our own, we had a single
maintained tool for the job, that would probably be a nice thing; while
adding a suffix to the build solves most of the collisions between
automake versions, info manuals for instance do not get renamed;

 - ability for a configure script to check for automake version; yes I
know it's not the usually-proposed method to deal with it, but most
projects would like to have something like that at this point. Otherwise
we end up with m4_ifdef hacks that are just that: hacks.
Especially if moving in the direction of multiple major versions, there
are packages that would like to have their build system re-buildable on
RHEL5 as well the latest Debian or Gentoo, and then they'll end up with
nasty hacks, or requiring an older automake version and hope it doesn't
cause other issues. Having a way to test whether we're running automake
X.Y or later would be nice (and not just export the version value or
people will mess up the test for 2.1, I've seen that happen too often
for GCC or BerkDB).

-- 
Diego Elio Pettenò — Flameeyes
flamee...@flameeyes.eu — http://blog.flameeyes.eu/





bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Jack Kelly
Diego Elio Pettenò flamee...@flameeyes.eu writes:
 On 31/01/2013 20:58, Jack Kelly wrote:
 IMHO, that seems like a great way to cause trouble for unsuspecting
 users. (Anyone remember KDE4.0?) Can you expand on why you think it's a
 good plan?

 Because unlike KDE, automake can put a big fat warning in the generated
 configure that says You're using a version unsuitable for production,
 and then people would understand it much better.

Or at automake invocation time?

 KDE 4.0 was a screwup because there was no big fat warning, and users
 insisted to have it. No user _asks_ for automake.

 Is there a system like X.beta1, X.beta2, ..., X.0 that is going to fit
 the ordering system for most package managers? Bonus points if it works
 in asciibetical order, too.

 Good luck finding one. Gentoo would be fine with X.Y_betaZ — but I
 honestly dislike X.Yb because that kind of stuff is usually _after_ X.Y
 for almost everything but autotools..

Fair points. +1 to calling the betas X.0.

-- Jack





Re: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Stefano Lattarini
On 01/30/2013 10:07 PM, Eric Dorland wrote:

 [SNIP PROPOSAL for new versioning scheme]

 I like it.

Glad to hear that :-)

 I think it would mean that Debian could carry less
 simultaneous automake packages at the same time, ie it would have a
 separate package per major release and just upgrade that to highest
 release within that major (eg package automake-2 @ version 2.1.3,
 automake-3 @ version 3.0.4).
 
 [SNIP PROPOSAL for new branching scheme]

 If you agree with my proposal, I think the new schemes could be
 implemented right after the 1.13.2 release; so that the planned
 Automake 1.13.3 will be released as 1.14, and the planned Automake
 1.14 will be released as Automake 2.0.
 
 I think it would be better to start with the planned 1.14 (aka 2.0)
 rather than with 1.13.3.

While this move would have its merits, I think we should go ahead and
implement the new scheme right after the 1.13.2 release [1].  That is
because the current code in maint [2] already have some new features
and new warnings implemented, and that is exactly the situation where
a new minor version would be warranted according to the new proposed
scheme.

 [1] But not before we have reached a consensus on the proposal, of
course; as Diego pointed out, this is not something to be rushed.

 [2] That would have become 1.13.3 with the old versioning scheme,
 and should become 1.14 with the new one.

 It makes it a cleaner break for people (aka Debian to some degree)
 who were relying on the old versioning scheme.


Thanks,
  Stefano



Re: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Stefano Lattarini
Hi Diego.

On 01/31/2013 12:46 PM, Diego Elio Pettenò wrote:
 On 28/01/2013 20:48, Stefano Lattarini wrote:
 Feedback, opinions, objections?
 
 First of all, I would like to hope that this is not going to be rushed
 through — it's an important and big change

Agreed.

 and I think having discussion about it with others might be a better
 idea.

But there is already such a discussion going on; see:

  http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13578

Or did you mean something else?

 One thing that worries me at first thought is how often do you expect a
 new major version to be out; once an year? twice an year? once every two
 years?

I think that, with the new freedom the minor versions would give us to
implement new features and do code optimization and refactoring, we could
aim to have a new major version every 18 or 24 months (this too should be
registered in HACKING).

 That rate is going to be the one thing that makes or breaks it
 from an automake consumer prospective I think.

Good point.

 Another thing that I think is important, that ties into the versioning
 scheme even though it's not really part of it would be to make two
 things cleaner:
 
  - what in Gentoo we call slotting: i.e. the ability to install
 multiple automake versions in parallel; we have our own wrapper scripts
 maintained by Mike Frysinger, I think they were originally imported from
 Mandriva; I'm pretty sure other distributions have other similar
 wrappers... if instead of everybody having our own, we had a single
 maintained tool for the job, that would probably be a nice thing; while
 adding a suffix to the build solves most of the collisions between
 automake versions, info manuals for instance do not get renamed;

Since the scripts, the data directories and the manual pages are already
versioned (with both major and minor version), adding support for versioned
info pages might be enough to solve this issue.  Then, we might even add a
new option to Automake's configure to ensure only versioned stuff is
installed (that is, no 'bin/automake' link to 'bin/automake-1.13', no
'man1/automake.1' manapge containing .so man1/automake-1.13.1, etc),
if that can make packagers' life even simpler.  Patches in these direction
would be welcome (I don't know when and if I'm going to write them myself,
sorry).

  - ability for a configure script to check for automake version;

Isn't it too late to check for that at configure runtime?  You probably
want some m4 macro that let you discriminate between different versions
at automake/autoconf runtime, right?  (Your further elaboration below
seem to imply that the answer to this question is yes).

 yes I know it's not the usually-proposed method to deal with it, but most
 projects would like to have something like that at this point. Otherwise
 we end up with m4_ifdef hacks that are just that: hacks.
 Especially if moving in the direction of multiple major versions, there
 are packages that would like to have their build system re-buildable on
 RHEL5 as well the latest Debian or Gentoo, and then they'll end up with
 nasty hacks, or requiring an older automake version and hope it doesn't
 cause other issues. Having a way to test whether we're running automake
 X.Y or later would be nice (and not just export the version value or
 people will mess up the test for 2.1, I've seen that happen too often
 for GCC or BerkDB).
 
This might be a useful enhancement.  Does Autoconf offer enough pre-canned
macros to compare version numbers at runtime?  It seems it does [1], so it
might be enough to add a new automake-provided macro, modelled on the
autoconf-provided 'AC_AUTOCONF_VERSION' [2], that defines the current
Automake version.  AM_AUTOMAKE_VERSION sounds like the natural name...
But see below.

 [1] 
http://www.gnu.org/software/autoconf/manual/autoconf.html#m4_005fversion_005fcompare
 [2] http://www.gnu.org/software/autoconf/manual/autoconf.html#Versioning

Unfortunately, the 'AM_AUTOMAKE_VERSION' name is already taken for another
macro:

  $ cd src/automake
  $ cat m4/amversion.m4
  ...
  # AM_AUTOMAKE_VERSION(VERSION)
  # 
  # Automake X.Y traces this macro to ensure aclocal.m4 has been
  # generated from the m4 files accompanying Automake X.Y.
  # (This private macro should not be called outside this file.)
  AC_DEFUN([AM_AUTOMAKE_VERSION],
  [am__api_version='1.13a'
  dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
  dnl require some minimum version.  Point them to the right macro.
  m4_if([$1], [1.13a], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
  ])

However, that macro is private and only used internally (and cause a
fatal error if a user mistakenly tries to use it), so we might safely
rename it to something more appropriate, and free the name for the
new proposed usage.  Again, patches in this direction would be welcome.

Thanks,
  Stefano



Re: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Diego Elio Pettenò
On 28/01/2013 20:48, Stefano Lattarini wrote:
 Feedback, opinions, objections?

First of all, I would like to hope that this is not going to be rushed
through — it's an important and big change and I think having discussion
about it with others might be a better idea.

One thing that worries me at first thought is how often do you expect a
new major version to be out; once an year? twice an year? once every two
years? That rate is going to be the one thing that makes or breaks it
from an automake consumer prospective I think.

Another thing that I think is important, that ties into the versioning
scheme even though it's not really part of it would be to make two
things cleaner:

 - what in Gentoo we call slotting: i.e. the ability to install
multiple automake versions in parallel; we have our own wrapper scripts
maintained by Mike Frysinger, I think they were originally imported from
Mandriva; I'm pretty sure other distributions have other similar
wrappers... if instead of everybody having our own, we had a single
maintained tool for the job, that would probably be a nice thing; while
adding a suffix to the build solves most of the collisions between
automake versions, info manuals for instance do not get renamed;

 - ability for a configure script to check for automake version; yes I
know it's not the usually-proposed method to deal with it, but most
projects would like to have something like that at this point. Otherwise
we end up with m4_ifdef hacks that are just that: hacks.
Especially if moving in the direction of multiple major versions, there
are packages that would like to have their build system re-buildable on
RHEL5 as well the latest Debian or Gentoo, and then they'll end up with
nasty hacks, or requiring an older automake version and hope it doesn't
cause other issues. Having a way to test whether we're running automake
X.Y or later would be nice (and not just export the version value or
people will mess up the test for 2.1, I've seen that happen too often
for GCC or BerkDB).

-- 
Diego Elio Pettenò — Flameeyes
flamee...@flameeyes.eu — http://blog.flameeyes.eu/



bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Stefano Lattarini
On 01/30/2013 04:30 AM, Daniel Herring wrote:
 On Mon, 28 Jan 2013, Stefano Lattarini wrote:
 
 Feedback, opinions, objections?
 
 There was a lot to read, and I confess to not giving it full justice.
 
 Others have already extolled the virtues of backwards compatibility.
 
 
 Regarding some why questions, here's the manual entry on how versioning
 is used today.
 
 http://www.gnu.org/software/automake/manual/html_node/API-Versioning.html

And this is a good and valid policy, but one I have unfortunately broken
in practice during the last year or so.  This proposal should address that
breakage, restoring sane versioning semantics.

 
 As far as I can tell, the current proposal boils down to bump the major
 version more often.

The real issue is that the major version in currently being bumped already
in practice (big new features, backward-compatibility broken in some
respects), without this being reflected in the true version number
(hey, why have you broken backward-compatibility from 1.12 to 1.13?
What is wrong with you?).  And while this is mostly my fault, fixing
it will benefit everyone (in addition to healing my ego, of course :-)

 That can work, but I'm not quite sold on it.  I like when a major bump
 means wake up and reread the docs before upgrading and minor bumps
 mean upgrade casually.

This is a good user-level approach that the new versioning scheme would
automatically encourage.

  (and aggregate changes to minimize major bumps and make them more
 worthwhile)
 
And similarly, this is a good developer-level approach that the new
versioning scheme would automatically encourage.

 Here are a couple standards for versioning.
 
 http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
 http://semver.org/
 
This last resource seems nice, but alas, adding support for VERSION+BUILD
development versions might prove a little more problematic than I'd like (of
course, parched are very very welcome).

 The general principle being A.B.C decodes to something easy like
 A = new API, breaking changes requiring human intervention
 B = same API, maybe with added options, mostly just recompile
 C = just bugfixes, documentation tweaks, packaging, etc.
 
 For example, a deprecation warning bumps B, but actually removing
 the deprecated functionality bumps A.

Indeed.  Something that I have guiltily failed to do in the recent
Automake developement process.

 As for branching, if every release is tagged, and you want to
 apply a bugfix to release A.B.C, why not just create a maint-A.B
 branch or the like?

For older versions, that is indeed the sanest approach.  But I think
we should also accept the fact that the last-released minor version
is going to need mostly-frequent fixes (most of the will probably be
suggested by the work on the next minor release), so that having a
branch already and explicitly devoted to the purpose of implementing
such fixes is the best and simplest setup.

 Delay creating branches until they are needed.  I wasn't seeing the
 need for the complex branching details.

I don't think my new branching scheme is actually complex.  May I
ask what makes you label it as such?

 
 I agree its nearing time for a 2.0 release; there has been talk
 of removing several now-deprecated functions and making other
 major changes (e.g. parallel testing).

Making the parallel harness a default has already been implemented
in 1.13; something I now quite regret not having delayed to a new
major version.

 Would it be possible to start collecting these into a preview/beta
 release and leave the 1.0 series with its current API and
 behaviors?  Just a thought.

Ideally, yes; but the time for a 2.0 will only come in a year or so
(as we want to give the existing non-fatal deprecation enough time
to brew, and there are also plans for several new minor versions in
the meantime).  So there is no need to hurry with previews etc.

 I've done the build system for several projects I'm no longer
 associated with.  It would be nice if the people who inherited
 them don't have to rework them for a few more years.  A major
 version change (again, small numbers) might motivate distributions
 to keep both around for a while.

Indeed; I hadn't thought about that explicitly when writing my
proposal, but you making a good point (and also offering a good
between-the-line suggestion: don't release new major versions
too often).

 
 Hope that helps,
 Daniel

Thanks,
  Stefano





Re: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Diego Elio Pettenò
On 31/01/2013 13:47, Stefano Lattarini wrote:
 But there is already such a discussion going on; see:
 
   http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13578
 
 Or did you mean something else?

I would expect a more ... visible discussion. Honestly bugs are all nice
and shiny but I don't expect most of the automake consumers out there to
even know where to find them (debbugs is handy with the email interface,
but it's not exactly the nicest way to find and follow bugs, IMHO).

I'll probably write a blog post myself about it to get some attention to it.

 I think that, with the new freedom the minor versions would give us to
 implement new features and do code optimization and refactoring, we could
 aim to have a new major version every 18 or 24 months (this too should be
 registered in HACKING).

Okay that sounds reasonable. I would be more toward 24 than 18 — maybe
going for 18 to the next beta-quality automake, 24 to the final
release. Speaking of which I would suggest that we call X.0 the betas,
and suggest general usage only when X.1 is out...

 Since the scripts, the data directories and the manual pages are already
 versioned (with both major and minor version), adding support for versioned
 info pages might be enough to solve this issue.

To a point. While it allows the multiple installation it does not help
to solve the difference in multiple-automake changing between
distributions. My hope would be for something like that to get rid of
most of the try-to-find-automake-version-X logic in autogen.sh scripts
(the moment when autogen.sh scripts can finally DIAF, I'll rejoice).

 Then, we might even add a
 new option to Automake's configure to ensure only versioned stuff is
 installed (that is, no 'bin/automake' link to 'bin/automake-1.13', no
 'man1/automake.1' manapge containing .so man1/automake-1.13.1, etc),
 if that can make packagers' life even simpler.

Sounds like a good idea...

 Isn't it too late to check for that at configure runtime?  You probably
 want some m4 macro that let you discriminate between different versions
 at automake/autoconf runtime, right?  (Your further elaboration below
 seem to imply that the answer to this question is yes).

Sorry I wasn't clear enough, I don't expect it to be found at
./configure time, but rather at autoconf time. So that one can decide
whether they want to use silent-rules, dist-xz, serial-tests and so on..

Don't assume that it's easy to install a newer automake on older systems
to work during development, because as I noted above, every distribution
has its way to wrap automake, and none that I know allows you a decent
way to integrate an user-provided version.

-- 
Diego Elio Pettenò — Flameeyes
flamee...@flameeyes.eu — http://blog.flameeyes.eu/



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Jack Kelly
Diego Elio Pettenò flamee...@flameeyes.eu writes:
 Okay that sounds reasonable. I would be more toward 24 than 18 — maybe
 going for 18 to the next beta-quality automake, 24 to the final
 release. Speaking of which I would suggest that we call X.0 the betas,
 and suggest general usage only when X.1 is out...

IMHO, that seems like a great way to cause trouble for unsuspecting
users. (Anyone remember KDE4.0?) Can you expand on why you think it's a
good plan?

Is there a system like X.beta1, X.beta2, ..., X.0 that is going to fit
the ordering system for most package managers? Bonus points if it works
in asciibetical order, too.

-- Jack



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Diego Elio Pettenò
On 31/01/2013 20:58, Jack Kelly wrote:
 IMHO, that seems like a great way to cause trouble for unsuspecting
 users. (Anyone remember KDE4.0?) Can you expand on why you think it's a
 good plan?

Because unlike KDE, automake can put a big fat warning in the generated
configure that says You're using a version unsuitable for production,
and then people would understand it much better.

KDE 4.0 was a screwup because there was no big fat warning, and users
insisted to have it. No user _asks_ for automake.

 Is there a system like X.beta1, X.beta2, ..., X.0 that is going to fit
 the ordering system for most package managers? Bonus points if it works
 in asciibetical order, too.

Good luck finding one. Gentoo would be fine with X.Y_betaZ — but I
honestly dislike X.Yb because that kind of stuff is usually _after_ X.Y
for almost everything but autotools..

-- 
Diego Elio Pettenò — Flameeyes
flamee...@flameeyes.eu — http://blog.flameeyes.eu/



Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-31 Thread Jack Kelly
Diego Elio Pettenò flamee...@flameeyes.eu writes:
 On 31/01/2013 20:58, Jack Kelly wrote:
 IMHO, that seems like a great way to cause trouble for unsuspecting
 users. (Anyone remember KDE4.0?) Can you expand on why you think it's a
 good plan?

 Because unlike KDE, automake can put a big fat warning in the generated
 configure that says You're using a version unsuitable for production,
 and then people would understand it much better.

Or at automake invocation time?

 KDE 4.0 was a screwup because there was no big fat warning, and users
 insisted to have it. No user _asks_ for automake.

 Is there a system like X.beta1, X.beta2, ..., X.0 that is going to fit
 the ordering system for most package managers? Bonus points if it works
 in asciibetical order, too.

 Good luck finding one. Gentoo would be fine with X.Y_betaZ — but I
 honestly dislike X.Yb because that kind of stuff is usually _after_ X.Y
 for almost everything but autotools..

Fair points. +1 to calling the betas X.0.

-- Jack



Re: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-30 Thread Eric Dorland
* Stefano Lattarini (stefano.lattar...@gmail.com) wrote:
 Severity: wishlist
 
 Recently, the need of a quick bug-fixing release 1.13.2 has shown some
 issues with the current branching and versioning scheme of Automake.
 
 Let's first see some background, to better understand the situation.
 
 Given the typically long time between a major release 1.N and the next
 one 1.(N+1) (say, 1.11 and 1.12), I had begun, in the last year or so,
 to introduce some (mostly) safe and backward-compatible but non-trivial
 changes and enhancements between a minor release 1.N.M and the next one
 1.N.(M+1) (say, 1.12.1 and 1.12.2).
 
 As an example of such changes, in the NEWS entry for 1.12.2 we have:
 
   - Recursive cleaning rules descends into the $(SUBDIRS) in the natural
 order (as done by the other recursive rules), rather than in the
 inverse order.  They used to do that in order to work a round a
 limitation in an older implementation of the automatic dependency
 tracking support, but that limitation had been lifted years ago
 already, when the automatic dependency tracking based on side-effects
 of compilation had been introduced.
 
 And in the NEWS entry for 1.11.3 we have:
 
   - For programs and libraries, automake now detects EXTRA_foo_DEPENDENCIES
 and adds them to the normal list of dependencies, but without
 overwriting the foo_DEPENDENCIES variable, which is normally computed
 by automake.
 
   - make dist can now create lzip-compressed tarballs.
 
 This approach has however shown several drawbacks since its introduction:
 
   * Such changes might be not trivial, and their correct implementation
 and testing can leave the maint branch in a non-safely-releasable
 state, thus complicating the cut of a urgent bug-fixing release.
 
   * Given the current maint/master branching scheme, the sudden need
 of such a release forces us to mess with the planned version numbers
 and the branching setup, since we might not be able to cut such
 a release from maint (as that might already contain some changes we
 consider inappropriate for a mere bug-fixing release).
 
   * Some bug-fixes (especially for for old bugs) or code clean-ups and
 refactorings (especially for old or complex code) might cause
 backward-incompatible changes in the semantics of some corner-case
 behaviours; that can unpleasantly surprise users who are thinking
 they are getting only basic bug-fixes, and get instead bitten by an
 unexpected behavioural change.  Such users might rightfully complain
 that, while they approve the change and are well ready to adapt
 their packages to it, they don't expect to be forced to do so when
 upgrading to a mere minor release.  See for example:
 http://lists.gnu.org/archive/html/bug-automake/2012-07/msg00107.html
 
 So I propose the following change in the Automake versioning scheme:
 
   * Major releases should actually have the major version number bumped.
 That is, the next major Automake version will be 2.0, rather than
 1.14; and the major version after that will be 3.0; and so on.
 After all, there is no shortage of integer numbers to use :-)
 Such major releases can introduce backward-incompatibilities (albeit
 such incompatibilities should be announced well in advance, and a
 smooth transition plan prepared for them), and try more risking
 and daring refactorings.
 
   * Minor releases have the minor version number bumped (1.13 - 1.14
 - 1.15 ...), can introduce new safe features, do non-trivial
 but mostly safe code clean-ups, and even add new runtime warnings
 (rigorously non-fatal); but they shouldn't include any backward
 incompatible change, nor contain any potentially destabilizing
 refactoring or sweeping change, nor introduce new features whose
 implementation might be liable to cause bugs or regressions in
 existing code.
 
   * Micro releases (1.14.1, 1.14.2, ...) should be just bug-fixing
 releases; no new features should be added, and ideally, only
 trivial bugs, recent regressions, or documentation issues should
 be addressed here.

I like it. I think it would mean that Debian could carry less
simultaneous automake packages at the same time, ie it would have a
separate package per major release and just upgrade that to highest
release within that major (eg package automake-2 @ version 2.1.3,
automake-3 @ version 3.0.4).

 Another plus of this new versioning scheme is that it will allow
 different minor releases, even with the same major version, to
 co-exist on the same system (that's because the $(APIVERSION)
 variable will get bumped with each minor version now).
 
 I also propose the following change to the branching scheme currently
 implemented in the Automake Git repository:
 
   * The 'maint' branch will be reserved to cut of the next micro
 release; so it will just see fixes for regressions, trivial
 bugs, or 

bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-29 Thread Daniel Herring

On Mon, 28 Jan 2013, Stefano Lattarini wrote:


Feedback, opinions, objections?


There was a lot to read, and I confess to not giving it full justice.

Others have already extolled the virtues of backwards compatibility.


Regarding some why questions, here's the manual entry on how versioning 
is used today.


http://www.gnu.org/software/automake/manual/html_node/API-Versioning.html


As far as I can tell, the current proposal boils down to bump the major 
version more often.  That can work, but I'm not quite sold on it.  I like 
when a major bump means wake up and reread the docs before upgrading and 
minor bumps mean upgrade casually.  (and aggregate changes to minimize 
major bumps and make them more worthwhile)


Here are a couple standards for versioning.

http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
http://semver.org/

The general principle being A.B.C decodes to something easy like
A = new API, breaking changes requiring human intervention
B = same API, maybe with added options, mostly just recompile
C = just bugfixes, documentation tweaks, packaging, etc.

For example, a deprecation warning bumps B, but actually removing the 
deprecated functionality bumps A.



As for branching, if every release is tagged, and you want to apply a 
bugfix to release A.B.C, why not just create a maint-A.B branch or the 
like?  Delay creating branches until they are needed.  I wasn't seeing the 
need for the complex branching details.



I agree its nearing time for a 2.0 release; there has been talk of 
removing several now-deprecated functions and making other major changes 
(e.g. parallel testing).  Would it be possible to start collecting these 
into a preview/beta release and leave the 1.0 series with its current 
API and behaviors?  Just a thought.


I've done the build system for several projects I'm no longer associated 
with.  It would be nice if the people who inherited them don't have to 
rework them for a few more years.  A major version change (again, small 
numbers) might motivate distributions to keep both around for a while.



Hope that helps,
Daniel





Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-29 Thread Dave Goodell
On Jan 29, 2013, at 6:18 AM CST, Peter Johansson wrote:

 On 1/29/13 5:48 AM, Stefano Lattarini wrote:
 
 Another plus of this new versioning scheme is that it will allow
 different minor releases, even with the same major version, to
 co-exist on the same system (that's because the $(APIVERSION)
 variable will get bumped with each minor version now).
 
 Why is that a plus? What is the use case when I want to keep on using 
 Automake 2.1 after I have installed Automake 2.2? Assuming 2.2 is 100% 
 backward compatible I cannot see the use case. What am I missing?

As a developer, it can be surprisingly difficult to write autotools code that 
is portable to several different versions of the autotools.  Sometimes it's 
convenient to only choose to support some subset of the autotools version 
space.  Development bandwidth, lack of autotools expertise, and limited access 
to testing platforms are all reasonable reasons that lead to this sort of 
decision.

This in turn causes problems for packagers, since different packages choose 
different subsets of the versions space.  So as a packager, you end up either:

1) attempting to patch all of the packages which are incompatible with your 
versions of the autotools, which is risky and time-consuming; or

2) juggling several different autotools version tuples.  Anything that makes 
this difficult quickly can turn into a real PITA.  Anything that makes it 
easier is always welcome.

Putting the developer hat back on, facilitating multiple versions also makes it 
easier to test with each of those versions.

-Dave




Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-29 Thread Stefano Lattarini
On 01/29/2013 01:18 PM, Peter Johansson wrote:
 Hi Stefano,

Hi Peter and everybody, and thanks for the feedback.

 [SNIP]

 Stefano Lattarini wrote:

 So I propose the following change in the Automake versioning scheme:

* Major releases should actually have the major version number bumped.
  That is, the next major Automake version will be 2.0, rather than
  1.14; and the major version after that will be 3.0; and so on.
  After all, there is no shortage of integer numbers to use :-)
  Such major releases can introduce backward-incompatibilities (albeit
  such incompatibilities should be announced well in advance, and a
  smooth transition plan prepared for them), and try more risking
  and daring refactorings.

* Minor releases have the minor version number bumped (1.13 -  1.14
  -  1.15 ...), can introduce new safe features, do non-trivial
  but mostly safe code clean-ups, and even add new runtime warnings
  (rigorously non-fatal); but they shouldn't include any backward
  incompatible change, nor contain any potentially destabilizing
  refactoring or sweeping change, nor introduce new features whose
  implementation might be liable to cause bugs or regressions in
  existing code.

 Will it still be linear, or do you expect any 1.x release after 2.0?

Ideally, it should still be linear.  We could easily create an 'old-release'
branch from the last 1.x release, and backport  bug fixes implemented in
the 2.x series there; but I'd rather not do so, unless there is a strong
demand from the user base.

* Micro releases (1.14.1, 1.14.2, ...) should be just bug-fixing
  releases; no new features should be added, and ideally, only
  trivial bugs, recent regressions, or documentation issues should
  be addressed here.

 IMVHO, this is how it always has been, except the last year or so.

Yes, my bad there, sorry.  This is an attempt to remedy to it, and
improve the release scheme a little in the process.

 See for example release of Automake 1.10.2, which only fixed a couple
 of bugs. Change of behaviour (like recursive cleaning mentioned above)
 or optimizing the code never belong in a micro release. I'm glad you
 clarify this.

I should have probably done it earlier.  Well, better late then never.

 Another plus of this new versioning scheme is that it will allow
 different minor releases, even with the same major version, to
 co-exist on the same system (that's because the $(APIVERSION)
 variable will get bumped with each minor version now).
 
 Why is that a plus? What is the use case when I want to keep on
 using Automake 2.1 after I have installed Automake 2.2?

The fact that a change like the recursive cleaning mentioned above
might have broken, in 2.2, some tricky usages in your makefiles, usages
that used to work in 2.1; and you might not want (or be able to) adjust
them right away.

 Assuming 2.2 is 100% backward compatible

That cannot be guaranteed, as some bug fixes might break some corner-case
usages (especially when bugs were being used as features, through no fault
or abuse of the user; see for example http://debbugs.gnu.org/11030); this
is why I think this kind of bug-fixes should go in a new minor release,
rather than in a micro release.

Moreover, a new minor release could add new (non-fatal) warnings that were
not present in the previous one, and this too amount to a small backward
incompatibility (or not so small, if you are making the mistake of having
'-Werror' in AUTOMAKE_OPTIONS).

 I cannot see the use case. What am I missing?

Is the answer above enough?

Anyway, notice that the allowed co-existence of minor releases would only
be a side effect of the proposed change, and not a motivating factor.  So
even if it turns out to be mostly useless, that is no problem.

 In general I like the clarification, but I wonder what the expected
 frequency of major/minor releases are.

Ideally, we should aim for a major release once a year (or longer, even),
a minor one every two or three months, and a micro one whenever needed.

 If you expect more major releases than minor releases,

I don't (albeit this concern of yours is something to be kept in mind).

 the future series of versions would look something like:

 2.0
 2.0.1
 2.0.2
 2.1
 3.0
 3.0.1
 4.0
 ...
 In other words if the minor releases are rare, the middle digit
  has no function and it could be removed with no loss:

 2.0 - 2.0
 2.0.1  - 2.1
 2.0.2  - 2.2
 2.1 - 3.0
 3.0 - 4.0
 3.0.1  - 4.1
 4.0 - 5.0

The whole point of this proposal is that minor releases (not merely
bug-fixing ones) have been proving to be quite common recently :-)

 or just keep the scheme as is
 1.14
 1.14.1
 1.14.2
 1.15
 1.16
 1.16.1
 1.17
 
 
 Cheers,
 Peter
 

Thanks,
  Stefano



Re: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-29 Thread Stefano Lattarini
On 01/29/2013 08:09 AM, Thien-Thi Nguyen wrote:
 () Stefano Lattarini stefano.lattar...@gmail.com
 () Mon, 28 Jan 2013 20:48:59 +0100
 
So I propose the following change in the Automake versioning scheme:
[...]
 
 Sounds good.  Going further, you could maybe define notation (described
 in HACKING) for categories of changes (backward-{in}compatible, etc)

Fully agreed; and abridged version of this proposal is to land in HACKING
soon(ish).

 and methodically use them in the ChangeLog entries.

This would be overkill IMVHO.

 This would be both informative to the user, and helpful to prevent
 mistakes (by casual contributors :-D).
 
I also propose the following change to the branching scheme currently
implemented in the Automake Git repository:
[...]
 
 These details should also be explained in HACKING.

Again, +1

to publicize the new versioning scheme
 
  - ??? (suggestions welcome)
 
 Maybe cut a release that changes only the version number?

 Personally I would find that to be not particularly useful, but others might
 welcome the explicitness.

Sounds overkill, and some people might even be annoyed by this (you made
me upgrade my installation only to bump the version number ?!?).  I'd
rather avoid that.

Let's hope a clear NEWS entry in 1.13.2 will be enough to catch the eyes
of enough people.

Thanks,
  Stefano



Re: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-29 Thread Daniel Herring

On Mon, 28 Jan 2013, Stefano Lattarini wrote:


Feedback, opinions, objections?


There was a lot to read, and I confess to not giving it full justice.

Others have already extolled the virtues of backwards compatibility.


Regarding some why questions, here's the manual entry on how versioning 
is used today.


http://www.gnu.org/software/automake/manual/html_node/API-Versioning.html


As far as I can tell, the current proposal boils down to bump the major 
version more often.  That can work, but I'm not quite sold on it.  I like 
when a major bump means wake up and reread the docs before upgrading and 
minor bumps mean upgrade casually.  (and aggregate changes to minimize 
major bumps and make them more worthwhile)


Here are a couple standards for versioning.

http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
http://semver.org/

The general principle being A.B.C decodes to something easy like
A = new API, breaking changes requiring human intervention
B = same API, maybe with added options, mostly just recompile
C = just bugfixes, documentation tweaks, packaging, etc.

For example, a deprecation warning bumps B, but actually removing the 
deprecated functionality bumps A.



As for branching, if every release is tagged, and you want to apply a 
bugfix to release A.B.C, why not just create a maint-A.B branch or the 
like?  Delay creating branches until they are needed.  I wasn't seeing the 
need for the complex branching details.



I agree its nearing time for a 2.0 release; there has been talk of 
removing several now-deprecated functions and making other major changes 
(e.g. parallel testing).  Would it be possible to start collecting these 
into a preview/beta release and leave the 1.0 series with its current 
API and behaviors?  Just a thought.


I've done the build system for several projects I'm no longer associated 
with.  It would be nice if the people who inherited them don't have to 
rework them for a few more years.  A major version change (again, small 
numbers) might motivate distributions to keep both around for a while.



Hope that helps,
Daniel



[IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-28 Thread Stefano Lattarini
Severity: wishlist

Recently, the need of a quick bug-fixing release 1.13.2 has shown some
issues with the current branching and versioning scheme of Automake.

Let's first see some background, to better understand the situation.

Given the typically long time between a major release 1.N and the next
one 1.(N+1) (say, 1.11 and 1.12), I had begun, in the last year or so,
to introduce some (mostly) safe and backward-compatible but non-trivial
changes and enhancements between a minor release 1.N.M and the next one
1.N.(M+1) (say, 1.12.1 and 1.12.2).

As an example of such changes, in the NEWS entry for 1.12.2 we have:

  - Recursive cleaning rules descends into the $(SUBDIRS) in the natural
order (as done by the other recursive rules), rather than in the
inverse order.  They used to do that in order to work a round a
limitation in an older implementation of the automatic dependency
tracking support, but that limitation had been lifted years ago
already, when the automatic dependency tracking based on side-effects
of compilation had been introduced.

And in the NEWS entry for 1.11.3 we have:

  - For programs and libraries, automake now detects EXTRA_foo_DEPENDENCIES
and adds them to the normal list of dependencies, but without
overwriting the foo_DEPENDENCIES variable, which is normally computed
by automake.

  - make dist can now create lzip-compressed tarballs.

This approach has however shown several drawbacks since its introduction:

  * Such changes might be not trivial, and their correct implementation
and testing can leave the maint branch in a non-safely-releasable
state, thus complicating the cut of a urgent bug-fixing release.

  * Given the current maint/master branching scheme, the sudden need
of such a release forces us to mess with the planned version numbers
and the branching setup, since we might not be able to cut such
a release from maint (as that might already contain some changes we
consider inappropriate for a mere bug-fixing release).

  * Some bug-fixes (especially for for old bugs) or code clean-ups and
refactorings (especially for old or complex code) might cause
backward-incompatible changes in the semantics of some corner-case
behaviours; that can unpleasantly surprise users who are thinking
they are getting only basic bug-fixes, and get instead bitten by an
unexpected behavioural change.  Such users might rightfully complain
that, while they approve the change and are well ready to adapt
their packages to it, they don't expect to be forced to do so when
upgrading to a mere minor release.  See for example:
http://lists.gnu.org/archive/html/bug-automake/2012-07/msg00107.html

So I propose the following change in the Automake versioning scheme:

  * Major releases should actually have the major version number bumped.
That is, the next major Automake version will be 2.0, rather than
1.14; and the major version after that will be 3.0; and so on.
After all, there is no shortage of integer numbers to use :-)
Such major releases can introduce backward-incompatibilities (albeit
such incompatibilities should be announced well in advance, and a
smooth transition plan prepared for them), and try more risking
and daring refactorings.

  * Minor releases have the minor version number bumped (1.13 - 1.14
- 1.15 ...), can introduce new safe features, do non-trivial
but mostly safe code clean-ups, and even add new runtime warnings
(rigorously non-fatal); but they shouldn't include any backward
incompatible change, nor contain any potentially destabilizing
refactoring or sweeping change, nor introduce new features whose
implementation might be liable to cause bugs or regressions in
existing code.

  * Micro releases (1.14.1, 1.14.2, ...) should be just bug-fixing
releases; no new features should be added, and ideally, only
trivial bugs, recent regressions, or documentation issues should
be addressed here.

Another plus of this new versioning scheme is that it will allow
different minor releases, even with the same major version, to
co-exist on the same system (that's because the $(APIVERSION)
variable will get bumped with each minor version now).

I also propose the following change to the branching scheme currently
implemented in the Automake Git repository:

  * The 'maint' branch will be reserved to cut of the next micro
release; so it will just see fixes for regressions, trivial
bugs, or documentation issues, and no active development
whatsoever.

  * The 'master' branch will be where the development of the next
minor release will take place; that is, a sort of middle-ground
between the roles so far fulfilled by the 'maint' and 'master'
branches in the current branching scheme.

  * The (new) 'next' branch will be reserved for the development
of the next major release; it will basically take over the rule
 

Re: bug#13578: [IMPORTANT] A new versioning scheme for automake releases, and a new branching scheme for the Git repository

2013-01-28 Thread Jack Kelly
Stefano Lattarini stefano.lattar...@gmail.com writes:
 So I propose the following change in the Automake versioning scheme:

   * Major releases should actually have the major version number bumped.
 That is, the next major Automake version will be 2.0, rather than
 1.14; and the major version after that will be 3.0; and so on.
 After all, there is no shortage of integer numbers to use :-)
 Such major releases can introduce backward-incompatibilities (albeit
 such incompatibilities should be announced well in advance, and a
 smooth transition plan prepared for them), and try more risking
 and daring refactorings.

   * Minor releases have the minor version number bumped (1.13 - 1.14
 - 1.15 ...), can introduce new safe features, do non-trivial
 but mostly safe code clean-ups, and even add new runtime warnings
 (rigorously non-fatal); but they shouldn't include any backward
 incompatible change, nor contain any potentially destabilizing
 refactoring or sweeping change, nor introduce new features whose
 implementation might be liable to cause bugs or regressions in
 existing code.

   * Micro releases (1.14.1, 1.14.2, ...) should be just bug-fixing
 releases; no new features should be added, and ideally, only
 trivial bugs, recent regressions, or documentation issues should
 be addressed here.

This sounds quite resonable to me, but is there anyone who is relying on
automake versions taking the form 1.x.y? It might be worth reaching out
to the distro packagers, just in case.

-- Jack