News for hackers. Stuff that matters.
Re:Disorderfs: FUSE-based filesystem that introduces non-det... by amelius on Friday January 29, 2021 @06:59PM (#25964510)
I think you need to build many times to be sure.

Therefore (the original question), instead of using "disorderfs", why not write and use an "orderedfs" for every build?

Re:Disorderfs: FUSE-based filesystem that introduces non-det... by agwa on Friday January 29, 2021 @07:43PM (#25964776)
The original behavior of disorderfs was to randomly shuffle directory entries, but we quickly realized that this meant that sometimes the shuffle wouldn't do anything, so I changed the default behavior to simply reverse the directory entries instead. Therefore, you only have to build twice. (Ironically, disorderfs' "non-determinism" is actually deterministic.)

As to your original question, there are so many sources of nondeterminism that trying to emulate them all away would make builds more complicated, less performant (FUSE adds overhead), and less safe (since there would be more components that could potentially be backdoored).

Re:Disorderfs: FUSE-based filesystem that introduces non-det... by cyphar on Friday January 29, 2021 @07:41PM (#25964765)
Because doing it that way will make building (and verifying) a deterministic build more difficult for users, while forcing the builds to be deterministic in the face of randomised non-determinism means that anyone can build the project and get the same output without needing any complicated build configuration. That end goal (all builds are deterministic even if you don't have some magical reproducible build machine) is the holy grail of reproducible builds.

And since this is run as part of a CI process, you will get lots of builds over time and will root out all sorts of issues caused by non-determinism.

Re:Disorderfs: FUSE-based filesystem that introduces non-det... by CyberRabbi on Friday January 29, 2021 @11:49PM (#25966205)
Because then your software is relying on guarantees not provided by the POSIX API and it would be incorrect.