Aspect at BazelCon 2023

Aspect at BazelCon 2023

We had a great time visiting Google's Munich office for the BazelCon conference. This annual event is always a big milestone for us, so I've written up a summary of the product announcements and links to our talks.

bazel lint

We announced the first release of our bazel lint support. This is in two parts:

  1. an OSS repository aspect-build/rules_lint which integrates many formatting and linting tools under Bazel, and

  2. a new lint command in the Aspect CLI which allows you to run linters without requiring they have the same "hard error" semantics as tests.

Here's a quick demo:

asciicast

In the next release of Aspect Workflows you'll be able to see these lint warnings as "expert code review comments" on your GitHub code reviews. This matches how Google wires up linters in the internal developer workflow. It allows you to turn on a new check for newly introduced code without being forced to fix or suppress all existing occurrences first.

bazel-lib 2.0

bazel-lib is the "standard library" Aspect uses to write Bazel rules and BUILD files for our clients. With over 20 Bazel rulesets, we have learned a lot of common patterns and encoded them for you to re-use.

Our 2.0 release adds a tar rule, which is a simpler alternative to the pkg_tar rule in rules_pkg. You can find details in the tar rule documentation.

The lead engineer for bazel-lib, Derek Cormier, gave a BazelCon talk bazel-lib for BUILD and rules authors which you can watch here: youtube.com/watch?v=IXimf4DCAoY&t=27947s

rules_py

Aspect engineers have been among the most active maintainers of the rules_python ruleset. We added the hermetic interpreter, Gazelle extension, wheel publishing, and much more.

However, we have found that the "Google internal" approach for laying out Python programs on the disk is too far from the Python ecosystem standard of creating a virtual environment (virtualenv). rules_py aims to solve this with re-implementations of the py_* rules that are more compatible, and therefore have fewer bugs and work with your editor.

Our Staff Engineer, Matt Mackay gave a BazelCon talk Python & Bazel: Aspect's rules_py which you can watch here: youtube.com/watch?v=IXimf4DCAoY&t=28536s

Partnership with Chainguard

Chainguard is solving the "supply-chain security" problem of base images for containers. They funded our work on rules_apko, which integrates their Wolfi "un-distro" with Bazel, and we just released v1.0! This lets engineers easily and securely assemble a base image using the same Bazel idioms they already understand, and without the downsides of a Dockerfile that can contain arbitrary code and executes non-reproducible commands within a container runtime.

Read more in our Blog post: https://blog.aspect.dev/rules-apko

Day 2 "Keynote"

Alex kicked off the second day of BazelCon with I'm an Imposter and So Can You! Working in multiple languages at once. This was not a technical talk, rather it explored the feelings of being out of place in a Developer Infrastructure team that's supporting and steering the work of product engineers who use unfamiliar languages. Watch the talk: youtube.com/watch?v=IXimf4DCAoY&t=118s

Aspect Workflows and Rules

Finally, Alex presented Aspect's products, both paid services and OSS rulesets. You can watch the Aspect Workflows talk here: youtube.com/watch?v=8Dc8R_Zrf6M&t=10680s