At VMware, we’re constantly looking at ways to transform how we build enterprise software to continue to deliver breakthrough offerings at the intersection of cloud, apps, containers, networking, mobility and security. Open source software (OSS) is key to our software stack, so we’re members of governing bodies like the Linux Foundation and provide direct contributions and technical leadership in projects like Kubernetes. Given that open source is critical to our business, we manage open source development by providing our developers open source compliance automation tools, and we monitor any changes developers introduce to our build infrastructure to ensure our open source compliance tooling is integrated and supports ongoing innovation.
One recent change to our build system is Bazel, an open source build and test system that has gained in popularity with users such as Lyft, Etsy, Nvidia, Uber and more (https://github.com/bazelbuild/bazel/wiki/Bazel-Users). It’s growing and growing fast. Bazel, released by Google in 2016, is gaining adoption because it’s focused on creating _hermetic_ and _repeatable_ builds, which allows for speed improvements, supports large codebases across multiple repositories and large numbers of users, supports projects in multiple languages, builds binaries and deployable packages for multiple platforms. Furthermore, users choose Bazel for its decoupling from the host, sandbox, incremental build, and dependency management capabilities, as well as querying capabilities to understand why things are happening. This provides tremendous benefits to developers especially when development ecosystems become more complex and diverse, and the demand to release more frequently rises.
As a part of my role in VMware’s Open Source Program office, I work closely with our development teams to stay abreast of any changes in their use of open source – either as an enabling technology or as an ingredient of a larger work product. I focus on compliance to ensure we reduce any risks to our partners and customers. Seeing this growing interest in and use of Bazel by our development teams, I knew I needed to learn more, so I attended BazelCon 2019. This annual gathering of the Bazel community – fans, users, contributors – provided me an opportunity to better understand who was using Bazel, learn more about their user experience, and gain insights on the Bazel contributors.
Day 1 of BazelCon 2019 opened with keynote speaker Jeff Atwood, co-founder of StackOverflow, who titled his speech, “Failure is Always an Option.” In his presentation, he asserted that “learning doesn’t happen from failure itself but rather from analyzing the failure, making a change, and then trying again.” Over time, this gives you a deep understanding of the “problem domain”– people, process, overall organization. Although the talk was not specific to Bazel, I felt it was a good reminder to developers: perfect code is not attainable; flaws and failure are inevitable. So, write code that allows the discovery of failures along the system and instill a process for testing responses to failures.
BMW’s Self-Driving Car team shared their Bazel porting journey and plans to release their first ‘Bazel Car’ on the market in 2021. They selected Bazel for the benefits stated above. It was assuring to hear about their timeline duration for completing their migration to Bazel, which included Java, C++ and Python.
We also heard from Wix about their backend engineering migration from Maven to Bazel, and they provided the following key recommendations for teams considering porting to Bazel:
- Use a migration tool to automate process such as https://github.com/wix/exodus.
- Measure the system to establish baseline and monitor changes with the Bazel migration
- Keep local development experience in mind to identify quickly and early any negative impact so that you can prioritize improving their experience
Day 2 of BazelCon 2019 had more BoF sessions on topics specific to the various languages supported by Bazel such as C++, Java, Python. It was valuable hearing how different companies are resolving common issues such as prioritizing Bazel migration while developers continue to deliver features for product releases, and it was valuable to hear about future Bazel enhancements such as:
- Improving access to Bazel rule ecosystem
- Establishing best practices for rule sets
- Providing better support for releases via rules_pkg and Bazel CI (top-down and bottom-up)
Key BazelCon 2019 takeaways:
- BazelCon 2019 focused on building confidence in Bazel with the various companies sharing their Bazel migration journey and learnings. The BoF talks provided an outlet for technical folks to click down on specific user issues and discuss resolution options.
- There’s a need to understand clearly what the Google Bazel team will own in the development of Bazel enhancements so that other contributors can identify their areas of contribution
- Bazel does offer a strong value proposition for enterprise companies and various companies are validating ROI
If you are interested in learning more about Bazel:
- Review existing Bazel documentation
- Subscribe to Bazel online conversation
- See BazelCon 2019 recap (video talks will be posted sometime in Jan 2020)