Migrating to Bazel Modules (a.k.a. Bzlmod) - The Easy Parts

You may be aware that Bazel will remove support for WORKSPACE in Bazel 9 in favor of Bazel Modules (a.k.a. Bzlmod). The current mainstream release is Bazel 7.2.0, so there's plenty of time to migrate. However, there's no time like the present to get started, to avoid further WORKSPACE dependencies and a pile of migration work in the future.

I recently completed the Bzlmod migration for EngFlow/example and our internal repos. This experience taught me a lot about Bzlmod and about migrating complex projects with challenging dependency issues that I'll share over a few blog posts. I'll also borrow from Sara's earlier post, in which she described an example bzlmod migration based on EngFlow's Bazel Invocation Analyzer repo.

2024 EngFlow Team Summit - Recap

EngFlow Team in Barcelona

April 1, 2024 was no joke for EngFlow! On this humorous day, we gathered for our annual team summit, meeting this year in Barcelona, Spain. EngFlowers from 11 countries descended upon the beautiful Catalan city to deepen ties to our work and each other. A key priority for the week was our “Happy Team” principle, which serves as the foundation of our company framework: “Happy team, Happy customers, More happy customers.” The summit theme also focused on leaning into EngFlow’s core values of LEAP — Loyalty, Excellence, Adventure, and Perseverance.

The Many Caches of Bazel

As its "{fast, correct} — choose two" tagline promises, a major feature of Bazel is performance. Caching is a key technique Bazel uses to improve build speed. Bazel deploys several kinds and layers of caches. There are so many caches that it’s hard to keep them straight. Additionally, frequently used terms like “action cache” can be ambiguous. This blog post will lay out the major Bazel caching mechanisms.

What’s common between GCP Next and the Sphere?

My impressions and insights based on attending the GCP Next event in Las Vegas on April 9-11, 2024.

GCP Next


Thanks to our Google Cloud Platform partner, I was able to attend the GCP Next conference in Las Vegas this year. This was my 2nd GCP Next; the first was in 2018 in San Francisco, when I was actually on the inside as part of the Google Cloud team, leading content for the DevOps tooling track!

The schedule and setting made it very clear that Google’s top goal for GCP Next this year was to promote AI, followed by security. There was also a prominent display of data and security platforms, but AI dominated even those vendor displays and presentations.

Bazel Bites: A Tasty Metaphor for Streamlined Builds

When you search the internet for details about Bazel, you’ll likely come across something like this:

Bazel is a build system. It’s used to build and test software, converting source code into artifacts, such as executable programs.

Bazel’s headline, “{Fast, Correct} - Choose two,” emphasizes its focus on scalability and hermeticity. It’s language agnostic, allowing you to use Bazel to build projects written in a variety of different programming languages.

If this seems confusing or overwhelming at first, don’t worry – we’ve cooked up a different approach that could help. We’ve concocted this article using a slightly rare (yes, we went there!) cooking metaphor.

Bazel explained through cooking

Bazel explained through cooking

Supercharge Traditional CI/CD Pipelines and Cut Costs With EngFlow

At EngFlow, we've been dedicated to improving the speed, efficiency, and productivity of development processes for almost half a decade. As the market has evolved and FinOps gains more traction, we've expanded our focus beyond accelerating development to include optimizing costs and fostering sustainability in software engineering.

Let's discover how EngFlow can effectively help you achieve your goals by reducing infrastructure expenses and maximizing resource utilization.

How to: Build Chromium with Reclient

It is official: Goma is no longer supported by Google, and all Chromium and AOSP builds must use Reclient for remote execution and caching.

Reclient is a build system plugin providing remote execution and remote caching capabilities to existing build systems that do not natively support them -- such as Ninja, the build system used to build Chromium. See my last post, Goma is Gone — Put Everything Into Reclient! for an overview of Reclient architecture and some insights into the migration.

In this post we delve into the technical details of how to build Chromium with Reclient on a remote cluster with Linux workers.

Bazel scales more than just builds

Bazel creates a structured layer between the details of building and testing for individual languages and the users, both human and machine, that perform build operations. This abstraction simplifies workflows and is the foundation for powerful build-adjacent systems not possible with other build tools. Scalable Bazel builds underpin a scalable organization and development culture.

EngFlow Company Newsletter - Q4 2023

To our EngFlow family — wishing you a peaceful and happy holiday. We look forward to working together in 2024!


courtesy of xkcd.com

From our early days we have set our company’s priorities in the following order: Happy Team, Happy Customers, More Happy Customers. We’d like to provide you with a few updates in that construct.