Birth of the Bazel¶

submited by
Style Pass
2024-10-03 13:30:04

Bazel was announced on March 24, 2015, by unveiling https://bazel.io and dumping code on https://github.com/bazelbuild/bazel. Its development has been somewhat public ever since, but it has never been documented how we got to that point. I was one of the people who started this project, so let me tell you how it happened.

Long before I joined Google, I worked on LilyPond, a sort of LaTeX for sheet music. After a brief and violent encounter with the GNU recommended system of autoconf/automake, we built our own set of GNU Makefile templates, which were much better (if I may say so), and I even submitted some patches to GNU Make. Years later, we had a typesetter that was pretty good, but we discovered that few musicians used Linux, and most weren’t technical enough to compile it, let alone on MacOS or Windows. This put us in the business of providing binaries on three platforms. We built a packaging system to cross-compile LilyPond and its dependencies to OSX and Windows from Linux. What we built was pretty terrible, but so were all the alternatives. Seeing the crud that was out there in the open source world, got me interested in this as a problem.

Google had its share of build problems too. When I joined in March 2007, the build system had already been rewritten three times, leading to “Google3”, the monorepo with granular build targets, but the actual compilation was still powered by GNU Make. A fourth rewrite was underway: it was a new, Java-based system for executing the builds on top of the google3 monorepo. It was called Blaze, and its promise was “{correct, fast}, choose two”. I was very excited to see it, and immediately wanted to contribute as a 20% project. During my noogler orientation, I went up to one of the Blaze authors in the NY office, to have him explain to me how it worked (lots of graphs, very confusing; I gave up on contributing).

Leave a Comment