This week’s featured SD Times open-source project is taking a look at the multi-language and extensible build system the Angular team and Google is looking to bring to the developer ecosystem.
Bazel is designed to speed up builds and tests; provide developers with one tool to work with multiple languages such as Java, C++, Android, iOS and Go; scale organizations, codebases and continuous integration systems; and add support for new languages and platforms with an extension language.
The project is led by a core group of contributors and Googlers, and managed by the community. The group of core contributors is self-managing and added by two supporting votes from other core contributors.
According to Google, some parts of Bazel will never make it into open source because it integrates with Google-specific technology or the company plans to get rid of those features in the future.
The Angular team has announced plans to migrate its build scripts with Bazel to get faster and more reliable incremental builds. As of Angular 6, Angular itself is now built with Bazel, according to Stephen Fluin, developer advocate for Angular. “Bazel is the build system that Google and the Angular team use to keep incremental builds under 2 seconds,” the team wrote in a post.
Bazel is already being used by companies such as Asana, Ascend.io, Databricks, Dropbox, Etsy, Google, Huawei, LingoChamp, Pinterest and Uber. Open-source projects using Bazel include Angular, Deepmind Lab, GRPC, gVisor, Kubernetes, Sonnet, TensorFlow and Trunk.
“Bazel was designed to be able to scale to Google’s needs and meet Google’s requirements of reproducibility and platform/language support. All software at Google is built using Bazel. Google uses Bazel and its rules for millions of builds every day,” according to the project’s repository.
Bazel 0.13 was recently released with new updates and features around Android, C++, and Objective C. The full release notes are available here.
Currently on the Bazel 1.0 roadmap includes a stable API, improved Bazel on Windows, migration, interfacing with other build systems, mobile rules, native rules, improved performance, and better CLI output.
“Beyond code, we’d like to eventually have all code reviews, bug tracking, and design decisions happen publicly, with the Bazel community involved. We are not there yet, so some changes will simply appear in the Bazel repository without clear explanation. Despite this lack of transparency, we want to support external developers and collaborate. Thus, we are opening up the code, even though some of the development is still happening internal to Google. Please let us know if anything seems unclear or unjustified as we transition to an open model,” according to the project’s page.