Photo by Eddi Aguirre on Unsplash
Estimating Bazel's Adoption
3 min read
The Bazel team has not instrumented Bazel with telemetry, so Google can't publish any numbers regarding Bazel usage. This means the industry is lacking a metric of the total market penetration, which is useful information when you're planning a career or business around the Bazel ecosystem. Let's fix that!
Historical anecdote: At the same time the Bazel team considered adding telemetry, I was tech lead for Angular CLI and we added telemetry there. We figured out all the Google policies surrounding this kind of data collection and requirements for opt-out flow and disclosure to users. We tried to persuade the Bazel team to simply replicate what we did, and there was no technical or policy problem preventing them from doing so. Rather, the team decided that philosophically, Bazel should act like a compiler which has no reason to reach out on the network.
We estimate that around 600 companies use Bazel, as of Q3 2022.
Projecting forward, we think that when Bazel is more mature and reaches full market saturation, it will be adopted by about 3750 companies.
We have two separate datasources for Bazel adoption. One is the publicly disclosed users, for example those listed on bazel.build/community/users. The other is Bazel adopters who we've interacted with as a consulting company, which we call our "private users" list.
Our private users list captures some sample of the Total Bazel Adoption (TBA), say we know χ% of them. This means for every 100 actual Bazel adopting companies, we happen to have talked to χ of them.
Similarly, the public list has some sample of the Total Bazel Adoption. We make a critical assumption to make our analysis work: both lists are random samples of the total population, so for every 100 Bazel adopters, χ of them have announced themselves as adopters in one way or another.
TBA * (χ/100) = [# private list] TBA * (χ/100) = [# public list]
Critically, the χ private listed companies are partially overlapped with the χ publicly listed ones. The overlap is companies that we've talked to privately who have also publicly announced. If the samples are random, then the chance of a company appearing on both lists is given by simple probability. The chance of the event (company on both lists) is the product of each event happening independently.
[# overlap]/TBA = [# public list]/TBA * [# private list]/TBA
Now we just need a bit of linear algebra to solve for our desired Total Bazel Adoption.
TBA = [# public list] * [#private list] / [# overlap] = 218 * 127 / 46 = 602
Projecting to saturation
We think that Bazel is currently in the "Chasm" between early adoption and early majority, a well-documented phase of a new product where some effort is required to use it. Read a16z.com/2018/12/27/endless-chasm-enterpris...
Typically, 2.5% of adoption is by the "Innovators" and 13.5% by the "Early Adopters." So we simply divide our TBA by this percentage to arrive at our estimate of Bazel adoption after the "Laggards" have come on-board:
Saturation = TBA / 0.16 = 3750