Author(s): Bogdan Mustiata
I wanted to learn more about Bazel, and I saw there are two books about it. Core Bazel looked like the most generic one, and while small (around 100 pages of content) I picked it up and read it.
Sadly, the results are a bit disappointing. I can cope with the book being two major versions behind (and as of May 2022 Bazel v6 is also nearing release), I can understand leaving certain important concepts (like package visibilities) out, but what I feel is done poorly on this title is the structure of its contents.
Usually, when you want to explain
A->B->C you go through a process, explaining
C, and you might mention the whole "flow" or parts, like
B->C, and finally you explain what
A->B->C does once you know the individual pieces and concepts. What you don't usually do is go explain the final results in extreme detail saying "we'll explain later what each piece does", because then you as a reader won't understand half of it, and once those details are explained will need to go back and re-read what was this all about. Another example: when you show the contents of a file, you usually put the file name before the contents block; Now imagine you're talking about a build system which fundamentally relies on input and output files and folders, and that can easily become complex to understand when learning (after all, we're talking about graphs and file trees). Instead of providing nice diagrams and file names before its contents, you get huge paragraphs of text mentioning inside "the
data package", other times code dumps which are not clear from which
BUILD file or
WORKSPACE they come from... To summarize, I had to took notes and draw myself the examples folder and file structures to be able to follow up.
I wanted to read this book to learn the basics this tool, and apart from some core concepts, I felt like I went into a "medium difficulty level" simply because of the writing. The official website has simpler and better explanations, and even browsing some hello world repository is easier as you won't get lost in the file structure.
I recommend instead going to bazel.build/docs.