"Packages that can't be rebuilt byte-for-byte are now blocked from entering Debian's testing branch."
https://itsfoss.com/news/debian-makes-reproducible-builds-mandatory/
"Packages that can't be rebuilt byte-for-byte are now blocked from entering Debian's testing branch."
https://itsfoss.com/news/debian-makes-reproducible-builds-mandatory/
#nixos is somewhat of pioneer in the space of reproducible builds and is 20 years old
I'm not that knowledgeable about inside workings, but in theory (in my head) hashing all inputs does equate to byte-to-byte reproducibility, even if previous steps in the build process weren't written specifically to be reproduced
@nim @gonzo_askold @bagder We have to just move one word in the sentence:
«NixOS is [a] pioneer in the space of *somewhat* reproducible builds […].» 🙃
(I use and contribute to NixOS, BTW., so I hope I'm allowed to make this joke.)
@bagder idk what would be practical differences between these two systems and how one or the other would be more secure against supply chain attacks or other mitms
would be pretty interested in some reference materials
Since it was a big problem with a very desirable outcome, they have a website.
https://reproducible-builds.org/
I think a major problem was that different hardware or architecture or versions of compilers produce different binaries that still work the same. That's why you couldn't just hash everything and compare.
And reproducible builds compensate for those minimal variations.
@gonzo_askold: this isn't true, as some builds embed things like the timestamp and build hostname in the artifacts. Nix sets some notion of the timestamp to epoch to account for this, but cannot fix every impurity everywhere (maven builds are notoriously finnicky, for instance).
Nix is great at this, but somewhat suffers from embracing the package without submitting the changes it makes to the package upstream. Because nix is so flexible (and doesn't always have the pull that Debian does with packagers), i believe nix has been less influential here than you would hope.
This change from Debian is awesome as we will all benefit from the fixes.
@BryanBennett @gonzo_askold Maven has made good progress in its default behaviour over time, https://maven.apache.org/guides/mini/guide-reproducible-builds.html
I'm sad you get the impression Nix doesn't upstream as much, we really do try.
Debian has been a trailblazer in reproducibility historically and this most recent feat shows they still are - but part of the fun of the reproducible builds project is that it's not a competition but a cross-ecosystem collaboration.
@gonzo_askold: please don't hear that either I think nixpkgs contributors don't try or that nix and Debian are somehow competing here!
Nixpkgs is HUGE and complex and it requires a fair amount of effort to maintain in and of itself. Combined with the relatively small number of contributors, I simply think their focus is generally elsewhere and that nix's flexibility is both a boom and burden here. In my experience, big problems tend to get upstreamed while small ones tend to get substituteInPlace'd (or patchPhase'd away).
Re: Maven: I speak from experience, but my experience is admittedly pretty old. I am glad to hear the situation is improving!
@BryanBennett I've benn daily driving 2 nixos pcs and 2 servers and gf's laptop for the last several years, and I just love to mention nixos everywhere.
"nixos fixes this" "not a problem in nix" and all other little silly thigngs.
I'm connected with my local nix community, there is dozen of us!
for now my experience of writting nix is limited to small wrappers for packages that are not in pkgs and some server managment, but I would like to try to conribute to the upstream in future
It's a different kind of reproducibility. The outputs may not be byte-for-byte identical because:
1. The build process included strings from the build env, like time of day, paths, username, or hostname
2. The build process included outright random data
3. The build process was naughty and accessed the network (pci.ids? certs?)
4. The build process isn't 100% deterministic (actually common with parallel builds!)
@bagder @gonzo_askold @orpach.neocities.org Indeed, Nix greatly increases the chances of producing reproducible packages by controlling the build environment.
That said, it does not magically make the final artefact reproducible. There can still be sources of non-determinism, and we try to track them down as much as possible.
So far, things are going well! :)
@domdel maybe I want there at that time
quick search of "net install reproducible" yields only dotnet stuff
the last time i had to fix a nixos system was because a build failed due to a debotstrap deb package they tried to download (whysoever?!) but it went 404 because the old version was taken off the server
thats not very reproducible ;)
Does this mean derivatives like Devuan automatically do this too?
@harmone I wouldn't bet on it. Ubuntu roadmap from Canonical for the year looks like it goes the other direction of user needs. 👀 💙
@guix let's review packages acceptance based on their responsibility in light of GCD006
https://codeberg.org/guix/guix-consensus-documents/src/branch/main/006-package-deprecation.md