Fork me on GitHub
#tools-deps
<
2022-10-05
>
winsome21:10:26

I just watched "The Secure Software Supply Chain" talk from Strange Loop this year. What's the story on reproducible builds with Clojure? After a quick experiment with some local projects it doesn't look like we're there out of the box, but is there support for this on the horizon?

Alex Miller (Clojure team)21:10:42

Yes, I’m very interested in working in this direction

🙌 1
Alex Miller (Clojure team)21:10:58

I talked to Kelsey about it a bit after the talk

winsome21:10:08

I dabble in the NixOS world and my understanding is that reproducability with the JVM is tough.

winsome21:10:56

Do you know if the CLJS folks are looking at it as well? JS has it's own dependency craziness.

Alex Miller (Clojure team)21:10:36

no, I don't have an understanding of the equivalent issues there

Alex Miller (Clojure team)21:10:18

reproducibility is not really the bit that I'm focused on (re-reading the original question above) - that has never been a strong goal for us from Clojure perspective. what we do want is more traceability and verification

Alex Miller (Clojure team)21:10:29

I do think it's important that we should be able to connect signed commits in git -> signed releases, with verification, and better tracking of both provenance and full dep set when you do an application build, and having those tools be as automatic and included as possible

🙌 1
thheller07:10:01

as far as CLJS is concerned the only real hurdle is (RT/nextId) not being controllable. (gensym) uses it, so it pops up all over the place and ens up generating slightly different code each time since its an ever increasing integer

thheller07:10:15

clojure.lang.RT that is

thheller07:10:16

another hurdle is the :advanced compilation done by the Closure Compiler, its not fully deterministic either but would be closer with more "stable" JS generated by the cljs compiler

thheller07:10:57

(regarding reproducibility that is)

Wanja Hentze10:10:04

By using the patched hashCode and patching a logging library we use, @U06GVE6NR was able to get a sizeable production clojure project to build reproducibly.

Wanja Hentze10:10:50

So I feel like the way to reproducible builds is probably not super hard

Wanja Hentze10:10:02

Depending on your setup, you may also need to do (some of) the things in https://reproducible-builds.org/docs/jvm/ Nix takes care of most of that if you're actually building via a derivation, though.

lread22:10:08

@U04V5VAUN your signing of the jars might not be for naught after all!

lread22:10:55

I’d like to take credit for being responsible about my verified github commits, but I only set it it all up because @U04VDQDDY’s planck repo required it!