In May, we co-hosted the London Build Meetup with Tweag by Modus Create and Jane Street. Build system insights, stories about first-hand build challenges, and great conversations packed the afternoon and evening. The lineup covered everything from large-scale migration battles to new research. If you missed it, here’s what you need to know.
Part of the promise of Bazel modules is that they are largely self-initializing
in an order-independent way. Rule sets, in particular, no longer need to burden
users with importing and invoking macros to instantiate repositories and
toolchains in a specific order. This burden now shifts to rule set maintainers,
but the existing implementation may not provide this ease of use without
modification.
This post describes the introduction of a new "toolchainized" API for
rules_scala v7.0.0 that better encapsulates toolchain configurations and
dependencies. We'll see how this new design enables optimal Bzlmod
compatibility, while simultaneously shrinking the legacy WORKSPACE API surface
without losing functionality. We'll also see how the Bzlmod and legacy
WORKSPACE APIs provide similar interfaces while sharing the same underlying
implementation, facilitating Bzlmod migrations.
As a thank you for our customers’ incredible support, we launched the Customer Forest Initiative. Throughout the 2024 holiday season, we planted trees on behalf of our customers, as an expression of our gratitude. The Customer Forest represents shared progress and growing stronger together.
We wanted a gift that truly reflected the value of our partnerships and the impact we can achieve together. Planting trees was the perfect choice, symbolizing growth, connection, and our shared commitment to a better future with our customers.
Another successful build meetup done! Our April meetup was co-hosted by JetBrains. The night was all about swapping stories, learning something new, and enjoying some good food and drinks. If you missed out, read the recap below and check out meetup.build for the next one!
Summit kickoff dinner where we celebrated 10 years of Bazel and 5 years of EngFlow.
Once again, the EngFlow team gathered for our annual Global Summit—convening this time in the beautiful city of Salzburg, Austria. This year’s summit was a milestone event—bringing the team together from around the world to celebrate five years of EngFlow. We also toasted to ten years of Bazel (thanks to our CTO Ulf Adams, our engineers, and the many others who have contributed so much to the community over the last decade). In keeping with the anniversary theme, here are five takeaways from the summit to give you a glimpse into our time together:
The apparent and canonical repository name schema under Bzlmod is the gift that
keeps on giving. Much of what it has to give is quite good—once you learn
how to really hold it right. Which is to say, to avoid holding canonical repo
names at all. That's what the three previous "Repo Names..." posts in this
series were all about.
Those previous posts, however, pertained to usingBUILD rules, or when
accessing runfiles. In those situations, solutions exist to avoid handling
canonical repo names directly as a consumer.
If you maintain a Bazel rule set, or need to fix a rule set upon which your
project depends, this is the post for you. We'll see how improper repo name
usages sneak into rule implementations, and how to shoo them out. Examples
include removing canonical repo names from embedded resource paths, filtering
lists of target labels, and generating default repository target names. We also
discuss removing internal references to your project's own apparent repository
name to avoid minor yet preventable issues.
I cannot call New York a trip, as it’s my home, but we do have customers, team members and future customers here. This led to a few events that included working with the team and bringing customers and friends together over food with a touch of Bazel!
Please hold off on pushing your PRs for a bit until the patch release is fully cut. We don't have enough capacity to handle all the load and the patch is blocked because of that.
Ouch.
But let's be real: not all builds are made equal - some builds are more urgent than others. Like here, when creating a patch release, and wanting to expedite the builds required for it over others.
Yet there's got to be a better solution than asking everyone else to not push changes.
In the previous Bzlmod post, we covered writing your own
Bazel module extensions to adapt your own setup code for dependencies that
aren't Bzlmod compatible. However, there are other Bzlmod incompatibilities and
related breakages that module extensions alone can't fix, such as forbidden API
usage or Windows path length errors.
This post shows you how to patch your dependencies and covers several situations
where patching is the only solution. We'll describe how to create and apply
patches for your dependencies, if you can't wait for upstream fixes (or
contribute them yourself).
EngFlow has multiple entities around the world, one of which is in Colombia. This year we’ve chosen Colombia as the site for our 2025 Leadership Summit, and I added a few days and weekends to explore the country with our team members, see how they live and meet their families. It’s been an incredible experience visiting Medellin, El Retiro, Itagui, Cali and Bogota, and I’ve captured a few learnings from this trip in a blog.