Remix.run Logo
ndrpnt 12 hours ago

I'd say it's somewhere in between. Sure it's marketed in the CI space, but to me the selling point of Dagger is not so much "write your GitHub workflows/GitLab CI in JavaScript" but "local exec, sandboxing, determinism, and fine-grained (remote) caching for mere mortals". So comparing it to Bazel/Buck2 is reasonable.

esafak 12 hours ago | parent | next [-]

I wouldn't because build systems like Bazel are declarative and dagger is imperative. I accidentally created a build system in dagger and saw the difference; the code based way was highly branched, and thus unwieldy. I think you would want to call bazel from dagger to handle the build step.

mxey 10 hours ago | parent [-]

Dagger uses BuildKit. all your “imperative” code does it assemble a graph that’s gonna be executed by BuildKit in dependency order.

Too 10 hours ago | parent | next [-]

But that dependency order is usually just one big blob of ”COPY src/ . + RUN make”, within that block you have none of the benefits. Bazel/Buck has much finer awareness down to every individual file.

Out of curiosity, would it be feasible to take a big cmake project and generate thousands of compile rules into dagger and use it as a substitute for make with sandboxing? I’ve never seen builkit used with such many nodes, how would it fare?

shykes 8 hours ago | parent | next [-]

Dagger is a declarative DAG engine. So, yes, you can do that.

mxey 7 hours ago | parent | prev [-]

There is an overhead per container launched so it would probably not be worth it.

esafak 10 hours ago | parent | prev [-]

Yes, but that does not help you build declaratively in dagger, does it? I would like to see an example of how to do so, if you have one.

justincormack 12 hours ago | parent | prev [-]

Its not as fine grained as bazel/buck. That doesnt necessarily matter.