BazelCon 2024 Recap
blogsystem5.substack.com
BazelCon 2024 Recap
1–10 of 41 posts
Re: BazelCon 2024 Recap
#2There's a decent number of Hello World examples around, and I can get moving with some rulesets, but using it for more than toy projects seems to be really hard for me and there's not a lot of intermediate content from what I can tell. There's "Advanced" reference materials, and countless "getting started" tutorials, but rarely is there anything relating to best practices or even what constitutes good rules.
Seems like most of the hobby community prefers NIX for deterministic builds too, so the situation is not improving for novices like myself who really like the idea of hermitic builds, monorepo's and distributed cache.
Re: BazelCon 2024 Recap
#3Re: BazelCon 2024 Recap
#4https://www.fullyearcal.com/calendar/iMRr-2l16tI/software-en...
Re: BazelCon 2024 Recap
#5This is one of the biggest challenges where Bazel falls short of non-Bazel tooling for us in the Web development/Node.js world. The Node ecosystem has characteristics that push Bazel scaling (node_modules is 100k+ files and 1GB+), and Bazel's insistence on getting builds correct/reproducible is in a way its own enemy. Bazel needs to set up 100s of thousands of file watchers to be correct, but the Node.js ecosystem's "let's just assume that node_modules hasn't changed" is good enough most of the time. For us, many non-Bazel inner devloop steps inflate from 60s after Bazel overhead, even after significant infra tuning.
Re: BazelCon 2024 Recap
#6What's the option if I want to learn Bazel to an intermediate level and I don't work with former Googlers? There's a decent number of Hello World examples around, and I can get moving with some rulesets, but using it for more than toy projects seems to be really hard for me and there's not a lot of intermediate content from what I can tell. There's "Advanced" reference materials, and countless "getting started" tutor…
I'd suggest finding an open source project and playing with it locally. Try to get everything building and running, including unit tests. Make the build as granular as you can. Try to pick a project that has a variety of kinds of things that need to be built, like Java, C++, Protobufs, etc. Then look for patterns in the build targets you wrote and see if you can refactor them to simplify it with custom Skylark rules.
Re: BazelCon 2024 Recap
#7Re: BazelCon 2024 Recap
#8We have giant Go monorepo at work. Bazel build. The ex-Google guy who set it up, left. No one around who wants to put in the time to learn it. It seems like a general increase in complexity. It seems to replace the go mod stuff so we have something called gazelle that figured it out and third party ide plug-ins. The plug in for IntelliJ is janky. To top it all off, somehow we managed to get a build that is slow local…
That person left, and the Bazel stuff was left unmaintained as no one had the interest nor time to learn it.
Later Bazel decide to kill off rules_docker and replace it with rules_oci, which means we can no longer update our Golang version without a super painful migration where we end up breaking production a bunch of times because of quirks in the super difficult migration.
Eventually we invested the time to rip the whole thing out and replace it with standard Go tooling with a multistage docker build for the container image. Everything from running tests, using Golang tooling, legibility of builds, CI, and deploys is easier.
The best thing we did was remove it and move to standard Golang tooling.
Re: BazelCon 2024 Recap
#9> Bazel is designed to be optimal and has perfect knowledge of the state of the world, yet it’s too slow for quick operations. This is one of the biggest challenges where Bazel falls short of non-Bazel tooling for us in the Web development/Node.js world. The Node ecosystem has characteristics that push Bazel scaling (node_modules is 100k+ files and 1GB+), and Bazel's insistence on getting builds correct/reproducible…