Estimating Web Browser Investment
On Brian Kardell’s post Where Browsers Come From there’s an estimate given on the cost of maintaining the three major browser engines:
What does the browser commons cost, per-user, per-year?
Based on what we know of team sizes, scales and budgets - several people seem to have arrived on a similar ballpark figure: Somewhere around 2 billion dollars per year.
This figure feels like an overestimate to me, so let’s dig a little further into this. I want to get my own very rough estimate to see if I reach a similar ballpark figure.
A reasonable place to start is the commit logs - while it won’t capture everyone who contributes to the browser commons, it’ll give us a lower bound from which we can estimate the number of additional roles (managers, developer relations, tech writers, etc).
We’ll remove some duplicates, and free gmail addresses (as a likely signal they, like me, are not being paid). Otherwise we’ll be very conservative in saying that all committers to the three major engines are employed full-time to advance the browser commons. That’s definitely not true, but I’m trying to find a more reasonable upper bound.
I’ll be looking at commits from the 2022 calendar year. While it was tempting to look at the trailing 12 months, having a repeatable time frame is useful if people disagree with my analysis. We’ll collate the email addresses from the three engines into one file for de-duplication. This will prevent double counting some people from Igalia who may contribute to multiple engines in the same calendar year.
Then, with the number of committers we can determine a rough estimate of their total compensation. After that we’ll add 50% for a conservative upper-bound of the cost of management, developer relations, tech writers, bug reporters, build infrastructure cost, sales (to negotiate the default search deal occasionally). This won’t include cost of senior management, expenditure for hardware platforms, or expenditure to try and diversify income streams - just trying to get a rough estimate on maintaining and improving the browser engines themselves.
WebKit:
We’ll start with WebKit, because I’m more familiar with the project.
$ git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -v gmail.com | cut -d'@' -f1,2 | sort | uniq | wc -l
269
The cut -d'@' -f1,2
removes duplicates due to trailing UUIDs in git authors:
a@example.com@
a@example.com@00000000-0000-0000-0000-000000000000
269 is a bit of an overestimate: there’s 207 from Apple, Igalia and Sony. Let’s roll with it for now, we’re just looking to get an upper bound.
Firefox (Gecko):
I’m using the gecko-dev mirror.
$ git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -v gmail.com | cut -d'@' -f1,2 | sort | uniq | wc -l
839
That’s a surprise to me! I had expected Gecko to be in the same ballpark as WebKit. Let’s look at the top 10 domains:
$ git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -v gmail.com | cut -d'@' -f1,2 | sort | uniq | cut -d'@' -f2 | sort | uniq -c | sort -n --reverse | head -n 10
244 mozilla.com
169 chromium.org
55 google.com
42 users.noreply.github.com
27 igalia.com
22 apple.com
14 microsoft.com
9 outlook.com
7 intel.com
6 protonmail.com
Ah, okay. The Chromium, Google, Apple and (potentially) Igalia ones may end up being double-counted. There’s some free e-mails in here and some github noreply e-mail addresses which likely aren’t being paid. I’ll ignore those for now, we’re just looking to get an upper bound. Might revisit this later, there’s a long tail of single-commit authors who are unlikely to be getting paid.
Chromium (Chrome):
Chrome uses git submodules so makes it a little more difficult of a task. Let’s start in src:
$ git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -v gmail.com | cut -d'@' -f1,2 | sort | uniq | wc -l
2616
Woah! Another surprising result, that’s much higher than I expected. That’s a lotta contributors! Let’s look at the top 10 domains:
$ git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -v gmail.com | cut -d'@' -f1,2 | sort | uniq | cut -d'@' -f2 | sort | uniq -c | sort -n --reverse | head -n 10
1132 google.com
1105 chromium.org
101 microsoft.com
41 intel.com
33 igalia.com
26 yandex-team.ru
20 samsung.com
11 opera.com
11 navercorp.com
9 chops-service-accounts.iam.gserviceaccount.com
Ok, maybe there’s some duplication here between google.com and chromium.org. Committers can gain a chromium.org e-mail address, and most use the same username as their google.com address. I’ll do some spot inspection first:
git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -e chromium.org -e google.com | cut -d'@' -f1,2 | sort | uniq | less
Then will figure out a way to count the duplication:
$ git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -e chromium.org -e google.com | cut -d'@' -f1,2 | sort | uniq -c | wc -l
2241
$ git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -e chromium.org -e google.com | cut -d'@' -f1 | sort | uniq -c | wc -l
2038
Okay, only 203 duplicates. The Chrome team is clearly much larger than the WebKit and Firefox teams.
Let’s also grab src/v8 contributors. I don’t want to delve too deep into the codebase for a rough figure, but that feels like an important component to include.
$ git log --since "Jan 1 2022" --before "Jan 1 2023" --format="%ae" | grep -v gmail.com | cut -d'@' -f1,2 | sort | uniq | wc -l
191
Summary
Combining those e-mail lists together, we get:
$ # total contributors
$ cat contributors-chromium.txt contributors-gecko.txt contributors-v8.txt contributors-webkit.txt | sort | uniq | wc -l
3478
$ # all chromium.org + google.com emails
$ cat contributors-chromium.txt contributors-gecko.txt contributors-v8.txt contributors-webkit.txt | grep -e chromium.org -e google.com | cut -d'@' -f1,2 | sort | uniq -c | wc -l
2275
$ # removing duplicate usernames from chromium.org + google.com emails
$ cat contributors-chromium.txt contributors-gecko.txt contributors-v8.txt contributors-webkit.txt | grep -e chromium.org -e google.com | cut -d'@' -f1 | sort | uniq -c | wc -l
2063
$ echo "$(( 3478 - (2275 - 2063) ))"
3266
So eliminating 212 likely google / chromium duplicates, we’re at 3266 contributors with 59% of them being Chromium / Google. Assuming the average compensation is somewhere between a Google L4 and L5 at $320K, that’s $1,045,120,000. Adding 50% overhead we’re at $1,567,680,000 - roughly $1.6 billion.
The 50% overhead is likely an overestimate, the average compensation might be an overestimate, and there is a long tail of small contributions which probably don’t represent full-time employment on advancing the browser commons. There’s probably better ways to de-duplicate contributors who use multiple e-mail addresses. I could’ve spent more time in the Chromium project to get a more accurate picture of the number of contributors through enumerating all the submodules.
However the 2 billion per year figure isn’t as outlandish as I thought! I’d been more familiar with the WebKit project and hadn’t accounted for just how wildly different the level of investment is between WebKit and Chromium. I can see how you might get to $2 billion with different methodology and likely more information than I have.