6 ms·
A significant hurdle for the universal adoption of Bazel is its too many dependencies.
by netheril96 9y ago
A significant hurdle for the universal adoption of Bazel is its too many dependencies.
- oblio 9y agosudo apt-get install openjdk-8-jdk sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python That's a fair few things, but it doesn't see that awful. None of those dependencies seem exotic. I wonder if they could get rid of Python by using Jython on top of the JDK.
- rekado 9y agoIt's way more than that. It bundles a lot of jars --- building those from source, recursively, is a big task. (I tried building Bazel and its dependencies completely from source for Guix.)
- oblio 9y agoI think any big Java app is a mess for distributions. They usually include a ton of jars, since they just get them "for free" when using Maven/Gradle/Ivy. Building the jars should be trivial in theory (especially for Maven), but the different between theory and practice is smaller in theory than in practice :)
- rekado 9y agoYeah, a lot of Java things require extensive patching to cut dependency cycles or to make the code compile with the current JDK. Say what you want about Autotools, but at least the user won't have to install Autotools to build the software. A build tool that depends on Java and dozens of Java libraries that have dozens of dependencies of their own, each with their own set of bootstrapping problems ... it's a tough sell.
- oblio 9y agoTrue, but as someone who has been part of that ecosystem: your standard Java developer doesn't rebuild everything. They don't want, need or have to do it. The Maven repo is immutable and very reliable. So everybody builds on top of the binaries. Of course, there's this implicit system of trust, which might be misguided, but there's many billion dollar companies built on top of it.
- kylecordes 9y agoRight, and a proper packaging "in the box" reduce it to a single install command on most any Linux. Right now it's pretty close to that on a Mac also if you already have brew. The current long pole in the tent is Windows. Bazel brings along its own JVM - so there isn't any Java or Java dependency difficulty (as some other posters have suggested). But the install instructions direct you to provide some dependencies first, by hand. Of course in the long term a little while spent installing is no big deal... but each new adopter has to get through the short term on the way to the long term. Hopefully a future Bazel installer will "just work" on Windows as a single installation with no instructions.
- oblio 9y agoMaybe they could use this for the JRE bundling: https://docs.oracle.com/javase/9/tools/javapackager.htm#JSWOR719 https://docs.oracle.com/javase/9/tools/javapackager.htm#JSWO...
- mikepurvis 9y agoPython comes with your distribution. It's Java that is the bigger obstacle in some shops, I expect.
- wocram 9y agoCan you expand on why that is an issue? The other argument I've seen is that just requiring java is already too much.
- arianvanp 9y agoJava is kind of a bitch to bootstrap on anything that is not x86. We've been trying to get openjdk9 to build on arm for months now in nixos. This means we cant package any bazel-based projects for Nixos. Also the dependency chain is huge. So building from scratch also just takes a lot of time. It's very hard to package in a source-based distribution
- zellyn 9y agoYou might like https://please.build/ https://please.build/. Also, I think the pants folks are considering a Rust rewrite.
- steveklabnik 9y agoThey already have done so for some of it! https://github.com/rust-lang/rust-www/pull/853 https://github.com/rust-lang/rust-www/pull/853
- klodolph 9y agoLooks like please.build doesn't really have Windows support yet...