Re: Discussion about why GNU/Linux system upgrades cause old programs to break

"Dr. Arne Babenhauserheide" <[email protected]> Tue, 11 Aug 2026 23:23:30 +0200
Newsgroups gmane.emacs.devel
Message-ID <[email protected]>
Arsen Arsenović <[email protected]> writes:

> glibc, binutils and gcc releases are tested by various distros
> rebuilding their software against them.

This leaves out one part: distros often patch packages that do not
build after an update, to make it possible to update.

But this does not help programs that aren’t packaged in the distro.

They can also file bugs against the new libraries, compilers, etc, that
cause unchanged programs to no longer compile. But this requires
upstream to treat such breakage as problem that needs to be fixed.

Where (in the spectrum between always patching programs and always
ensuring compatibility from libraries/compilers/…) this work is done is
a community decision. Though often not taken explicitly but by doing
work where it seems to be done the fastest.

Not an easy one, and not one that is always answered the same way, but
still a decision.

One that I’ve seen taken without considering unpackaged programs.

>> You make it sound like a sin, but I happen to think it's a virtue.
>> Backward compatibility is an important aspect of being user friendly
>> in my book.

> I'm sure many more hours have been spent tracking down stuff that
> could've been prevented by stronger diagnostics than have been spent
> trying to compile old code.

I think here is a misconception: when an update to the compiler breaks
my previously compiling code, I am usually not working actively on the
project. It hits me while I have no time and energy to fix it. I updated
the system, after all, not my program.

And I usually cannot decide not to update the system, because security
issues require me to stay up to date.

And I may have many programs I wrote over the years. They work and I
started to depend on them, but I no longer change them. They are
complete.

If breaking of backwards compatibility occurs often, the regular
maintenance work required just to keep my setup working becomes
overwhelming after some time.

Example: I had to give up several Python projects I liked a lot because
of such problems. And I think that that’s bad. I use Python a lot less
due to that experience.

Second example: it took a lot of communication work to keep Lilypond
using Guile after Guile 2.0 broke the performance requirements Lilypond
had. Continuing after the performance reached a simliar level again.

> But, backwards compatibility in this instance means relaxing compiler
> diagnostics, thus making the compiler less strict. This is universally
> a disservice to users.

In these absolute terms I consider this statement to be wrong.

The alternative is not a compiler that can’t be strict, but one where
strictness is opt-in.

That turns a problem of breaking programs into a communication problem:
teaching people to activate the stricter mode for new projects.
(also see the later answer)

> Indeed, the case I showed in my last email with 'reallocarray' was
> exactly such a case: the user of flex "benefited" from default backwards
> compatibility, only to get a program that was slightly broken under
> specific conditions.

Those conditions only happen when usage changes. In the situation where
the program is currently being used, it works correctly.

> we've been teaching students that "this code is not correct but the
> compiler ignored it because old code exists, but you shouldn't ignore
> it" (to very little effect).

This means addressing a communication problem by a technical change that
broke existing tools.

I understand the reasoning for the change, but seeing the collateral
damage it does (most of which won’t be visible to the ones doing the
change), I do not like it.

Hyrum’s Law does not mean to give up on compatibility. Instead it states
that “changes to the system must maintain these performance
characteristics to continue functioning for its consumers” and “the
implicit interface constrains your system design and evolution”
-- https://www.hyrumslaw.com/
Not a license for breakage but a warning that compatibility goes deep.

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein,
ohne es zu merken.
https://www.draketo.de
signature.asc (application/pgp-signature, 1.1 KB)
-----BEGIN PGP SIGNATURE-----

iQJEBAEBCAAuFiEE801qEjXQSQPNItXAE++NRSQDw+sFAmp7ktIQHGFybmVfYmFi
QHdlYi5kZQAKCRAT741FJAPD61X+D/9Wku3uMg8VptyH3i+gu3+t8iXL748s46jF
Ktk7/QkPMe+r+GhbGj9sYJ4q9J/FZOnRI7cbOEn4UQ5s5EJYyLPy2Rc/5pr2sW4z
RWrcfe6+AjTmf+o/OkJV5c392zRUnAVRAv5C6vphdB43lLCs2UWkieooe/p1J+eb
Ncrr31TucqF2N7dJ2q7K8mcJrYJIJwCLfPkwNMQQMaw98C4FCWPKKWSLSaViOk1F
IiA9sjyLyTHIGeufvYw3+3+S9f9PxDTYpTS2HlGUNzgxMgXf3bvRljplnEf+Ofkp
DKY8A4z6VUhDamKIYfR49HEBIA3en5wFp03c1NhB1ik7pMsXJ4O+XCFKuE0h3q1b
wmUD8oH577AFaNBti27eQtKNU7OzBGlttqpVKSEQ4qemE75368yKPOV3CAyYVipP
0wl37FuK1XW4vAjLdjWl+p31ZCK8SIkra9XuvHJHG1qxRy8T9FJZPGoIBR6eE8cO
JHgnBsjtpnI56XdVQXNKAH951l7MpNYE+I96ckTU/nDi8k4Nd5ebtmQqqco793Im
h4haSegXqIGB1kNYPKeWoJkdFaKP1bWsNL+vDdpxOrMCnZP4RhEUHOpzubnZuSU7
qMhVrFLtBxZEPTijvD814jPPbZJzdmdEqcoWhti/aR95m9fL8jBlUedWD+u06PgB
u2su21to0YjEBAEBCAAuFiEE3Si95tmHXKvOSosd3M8NswvBBUgFAmp7ktMQHGFy
bmVfYmFiQHdlYi5kZQAKCRDczw2zC8EFSBEMA/9buovT1s9NqLPC1lxYYQvUZuxO
jlYNOy5ximao00M5bZXZrSEeVJgor98I2dE5pgdxx/KFGg/eC4u4p0xYXtSyB/hD
iIR7jF8+cUPGQHmasZWVVfxS+6q6V7sMZPqJht5YtA9l0cebGmYa56sY8WIx0ems
fxfXtfhsq5x3BR6Gcg==
=dlFx
-----END PGP SIGNATURE-----