> ## Documentation Index
> Fetch the complete documentation index at: https://site.aspect.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Estimating Bazel's Adoption

> We estimate 600 companies currently use Bazel, with potential growth to 3,750 at full market saturation. Learn more about our methodology.

export const BlogPost = ({title, date, authors, tags, image, children}) => {
  const tagList = tags ? tags.split(", ").filter(Boolean) : [];
  const tagSlug = t => t.toLowerCase().replace(/&/g, "").replace(/\+/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
  const formattedDate = date ? new Date(date + "T00:00:00").toLocaleDateString("en-US", {
    year: "numeric",
    month: "long",
    day: "numeric"
  }) : "";
  return <section className="w-full flex justify-center px-4 py-12 md:py-16">
      <div style={{
    maxWidth: "800px",
    width: "100%"
  }}>
        {image && (typeof image === "string" ? <img noZoom src={image} alt={title} className="w-full rounded-xl mb-8" style={{
    maxHeight: "400px",
    objectFit: "cover"
  }} /> : <div className="blog-post-hero-image">{image}</div>)}
        <h1 className="text-3xl md:text-4xl font-bold text-zinc-900 dark:text-white">
          {title}
        </h1>
        <div className="flex flex-wrap items-center gap-3 mt-4 text-sm text-zinc-500 dark:text-zinc-400">
          {authors && <span>{authors}</span>}
          {authors && formattedDate && <span>·</span>}
          {formattedDate && <span>{formattedDate}</span>}
        </div>
        {tagList.length > 0 && <div className="flex flex-wrap gap-2 mt-3">
            {tagList.map(tag => <a key={tag} href={"/blog/tags/" + tagSlug(tag)} className="px-2 py-0.5 rounded-full text-xs bg-zinc-100 dark:bg-zinc-800 text-zinc-600 dark:text-zinc-400 hover:bg-blue-100 dark:hover:bg-blue-900/40 hover:text-blue-700 dark:hover:text-blue-300 transition">
                {tag}
              </a>)}
          </div>}
        <hr className="my-8 border-zinc-200 dark:border-zinc-700" />
        <div className="prose dark:prose-invert max-w-none">{children}</div>
      </div>
    </section>;
};

export const MarketingPage = () => <div className="marketing-page-marker" style={{
  display: "none"
}} />;

export const Section = ({children, className = "", gray = false, dark = false, id}) => <section id={id} className={`w-full flex justify-center px-4 py-16 md:py-24 ${gray ? "bg-gray-50 dark:bg-zinc-900" : dark ? "bg-zinc-900 dark:bg-zinc-950" : ""} ${className}`}>
    <div className="w-full" style={{
  maxWidth: "1140px"
}}>
      {children}
    </div>
  </section>;

<MarketingPage />

<BlogPost title="Estimating Bazel's Adoption" date="2022-09-12" authors="Alex Eagle" tags="Bazel, Migration">
  <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/blog/hashnode/hn-b6baf650fc.jpeg?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=c8d986031b860a2de63e3b37b38f5b55" alt="" className="blog-post-cover" width="1600" height="1199" data-path="images/blog/hashnode/hn-b6baf650fc.jpeg" />

  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.

  ## Our estimate

  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.

  ## Methodology

  We have two separate datasources for Bazel adoption. One is the publicly disclosed users, for example those listed on [https://bazel.build/community/users](https://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.

  ```plaintext theme={null}
  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.

  ```plaintext theme={null}
  [# 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.

  ```plaintext theme={null}
  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 [https://a16z.com/2018/12/27/endless-chasm-enterprise-startups/](https://a16z.com/2018/12/27/endless-chasm-enterprise-startups/).

  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:

  ```plaintext theme={null}
  Saturation = TBA / 0.16 = 3750
  ```
</BlogPost>
