Why is not everything reproducible yet?

Bernhard M. Wiedemann bernhardout at lsmod.de
Wed Jan 22 07:01:30 UTC 2025


On 12/20/23 9:42 AM, Bernhard M. Wiedemann via rb-general wrote:
> Sometimes people wonder:
> Why is not everything reproducible yet?
> 
> And the general reason is that there are other interests that result in 
> added non-determinism.
> I collected some with examples
> 
> 
> 
> Performance (PGO, benchmarking, -march=native, parallelism/races)
>   https://build.opensuse.org/request/show/1130552
>   https://github.com/bmwiedemann/theunreproduciblepackage/tree/master/pgo
> 
> 
> Simplicity (e.g. using random UUIDs instead of hashed inputs)
>   https://github.com/ipxe/ipxe/pull/1082
> 
> 
> Security (Signatures):
>   https://bugzilla.opensuse.org/show_bug.cgi?id=1217690
>   https://bugzilla.opensuse.org/show_bug.cgi?id=1208478
>   https://bugzilla.opensuse.org/show_bug.cgi?id=1081723
> 
> 
> Traceability of provenance (date+user+hostname):
> 
> https://github.com/bmwiedemann/theunreproduciblepackage/tree/master/ 
> timestamp
> 
> 
> repeatable builds:
>   https://github.com/rpm-software-management/rpm/issues/2343
> 
> 
> Portability:
>   https://github.com/ipxe/ipxe/pull/1082#issuecomment-1862899660
>   - see also the code-monster we need to support SOURCE_DATE_EPOCH with 
> sh on *NIX


As a follow-up on this, when submitting
https://github.com/dunst-project/dunst/pull/1435
today, I noticed once again, that there is a trade-off to be made:
The old code was simpler, but non-deterministic.
The submitted code is less portable than the original,
but a version that works on Linux and MacOSX would be even more complex.

This applies to many of the posix-shell/Makefile changes we do.

Now compare this with past cmake patches:
https://github.com/htcondor/htcondor/pull/455/files
https://github.com/kvirc/KVIrc/pull/2361/files
https://github.com/TigerVNC/tigervnc/pull/765/files

These were much nicer to reason about: They reduced complexity, and 
improved reliability + portability, while also adding determinism via 
the one toolchain patch I did to cmake long ago.

Can't we have such a thing for shells as well? Maybe a 'sdedate' command 
that is part of util-linux - and BSD ... and Windows? hmm... Maybe not 
quite as easy.

Ciao
Bernhard M.


More information about the rb-general mailing list