On 10/26/26 07:13, Kamila Szewczyk wrote:
> I view it differently: interface compatibility has been (and will be)
> preserved. That a specific configuration tuple was deprecated and
> declared invalid does not break backwards compatibility. The scripts
> are still "drop-in" updates.
If you break downstream software, no matter whether through interface
incompatibility or not, per SemVer you have to bump the major version:
[...]
Removing the Windows platform tuple is neither a "backward compatible
bug fix" nor a "functionality [added] in a backward compatible manner."
Then we do not use SemVer for GNU config; it is that simple...
...and GNU config does *not* use SemVer, instead simply keeping
last-modified datestamps in the scripts.
> I did say "(anymore?)" and your counter-example is from seven years
> ago and was fixed in less than three hours.
Why deprive oneself of being able to make mistakes and fixing them on
short notice by not having a proper release schedule?
One more example of `robust, release-ready, dependable, etc., from
every possible git checkout' GNU config being broken is a commit from
28 June 2020, 5e531d391852a54e7fab2d8ff55625fca514b305; it breaks
three things -- nto-qnx, emx, arm-uclinux-uclibcgnueabi; fixed 107
days later.
Regarding "was fixed in less than three hours" -- I can name examples
when the fix was not so quick, but arguably these are just plain old
bugs that have nothing to do with having a release schedule.
Exactly: the catastrophic syntax error that broke config.guess on all
systems was discovered and fixed promptly. There is (now?) a testsuite
that would catch such an error very quickly, although contributors and
the maintainer must remember to run it.
A less-obvious issue affecting only some platforms is an ordinary bug.
Releases generally ship with bugs, too.
I am bringing up these to demonstrate that we are all human and make
mistakes. The impact of these mistakes on downstream can be greatly
reduced. We should strive to make the entirety of our software
collection more dependable.
That is exactly why we support "drop-in" updates of config.guess and
config.sub: a bad version, even bundled into a released package, can be
easily fixed by the user simply downloading a newer version. Script
timestamps are entirely sufficient for this.
Note also that a catastrophic bug, like the syntax error you cite, would
also be caught by any maintainer of a package using GNU Automake running
`make distcheck` before publishing a release.
> Simple: the GNU config scripts already have timestamps, and outside
> standards (like refusing to accept YYYYMMDD as a version number) are
> not our problem. (<URL:https://www.gnu.org/prep/standards/
> standards.html#Non_002dGNU-Standards>)
Why would we interfere with external packaging, when we can avoid that
at near-zero cost to end users and ourselves?
I see no interference here; only third parties seeking to impose their
"One True Way" by refusing to support alternatives. Datestamps as
version numbers are a long-standing, albeit minority, practice.
The updates to the stamp and the release ceremony can all be automated
away using git hooks and shell scripts.
The timestamp is already updated automatically if Emacs is used to edit
the file, as I understand it.
See the following quote from the page you linked:
> In most cases, following published standards is convenient for users
All of my arguments boil down to (essentially) good modern software
engineering practice and nothing more. Whoever wants to depend on git
checkouts is welcome to (at their own peril -- as usual), as to avoid
breaking compatibility.
Yes, but that does *not* mean that published standards are (or should
be) straitjackets upon GNU.
I posit that "Do it this way or third-party programs will break." is not
a valid argument at the GNU Project, established backwards compatibility
excepted. We make our own decisions and third-parties can deal with
it. We put especially little weight on other people's notions of "One
True Way".
-- Jacob